Providers
The provider decides which model answers and how you pay for it. It is a registry entry, so switching is a command.
moxxy plugins defaults # what is active
moxxy plugins use provider openaiWhat ships
| Name | Auth | Notes |
|---|---|---|
anthropic | API key | The floor. |
openai | API key | |
openai-codex | OAuth | Uses a ChatGPT subscription, no API key. |
claude-code | OAuth | Uses a Claude Pro/Max subscription through an authenticated Claude Code install. |
google | API key | |
xai | API key | |
zai | API key | Also zai-coding-plan. |
local | none | A model on your own hardware. Nothing leaves the machine. |
Anything OpenAI-compatible can be registered at runtime without a package:
moxxy login <provider>The provider-admin plugin contributes provider_add, provider_list, provider_remove and provider_test, so the agent itself can wire up a new endpoint when you ask it to.
Signing in
moxxy login anthropic # API key → vault
moxxy login openai-codex # OAuth device flow
moxxy login claude-code # borrow an authenticated Claude Code installCredentials land in the AES-256-GCM vault, unlocked through the OS keychain with a passphrase fallback. Config refers to them by reference:
provider:
name: anthropic
model: claude-sonnet-4-6
config:
apiKey: ${vault:ANTHROPIC_API_KEY}${vault:NAME} is resolved at the point of use, so the plaintext never enters the transcript, the event log, or the model's context.
Web search
Capable Codex and Claude models use provider-hosted web search first. Their provider packages automatically install the lightweight @moxxy/plugin-browser companion, which supplies a pluggable local fallback and does not download Playwright until interactive browsing is actually requested.
Writing one
import { defineProvider, definePlugin } from '@moxxy/sdk';
export const acme = defineProvider({
name: 'acme',
async *stream(req, ctx) {
// Yield text, reasoning and tool-call chunks.
},
});
export default definePlugin({
name: '@acme/plugin-provider-acme',
version: '1.0.0',
providers: [acme],
});The same contract everything built-in uses. See authoring a plugin and @moxxy/sdk.