docs/book/src/providers/catalog.md
Every model-provider family ZeroClaw ships with. For each: config shape, notes on auth and endpoint behavior, and the slot key to use under [providers.models.<type>.<alias>].
See Configuration for universal fields (api_key, uri, model, ...) and resolution order.
Examples below use
homeas the alias to underline that the alias half is operator-chosen, pick whatever name fits (work,personal,cn,prod, ...). Reference it from an agent viamodel_provider = "<type>.<alias>".
anthropicSupports OAuth tokens (sk-ant-oat*) from Claude Pro/Team subscriptions, no separate API billing. Streaming, tool calls, vision, and reasoning all supported. Custom endpoints (Anthropic-compatible proxies, e.g. Z.AI's Anthropic API) go on this slot too: set uri to override.
openaiGPT-4o, GPT-5, o-series reasoning models. Reasoning tokens surfaced as ReasoningDelta events; see Streaming.
openai slot with requires_openai_auth = trueOpenAI Codex subscription auth lives on the openai slot. Set wire_api = "responses" to route through POST /v1/responses and requires_openai_auth = true to use the Codex subscription login (from the Codex CLI's own ~/.codex/auth.json) instead of an api_key field on the entry. The subscription path does not read OPENAI_API_KEY; that variable applies only to the metered openai API-key mode. See Provider Configuration → OAuth and subscription auth for the credential model.
ollamaLocal inference via Ollama's native /api/chat. Schema-based structured output via format. No API key.
bedrockgeminiGoogle's Gemini API. Supports vision and pre-executed grounded search (see Streaming for PreExecutedToolCall events).
gemini_cliShells out to the gemini CLI; uses the CLI's existing auth.
azureresource, deployment, and api_version live in this typed config, they are not read from environment variables.
copilotUses a GitHub Copilot subscription for agent inference. Authentication uses a Copilot OAuth token obtained from GitHub.
telnyxVoice-oriented AI endpoint. Pair with the clawdtalk channel for real-time SIP calls.
kilocliLocal inference via KiloCLI.
kilo[providers.models.kilo.home]
model = "anthropic/claude-sonnet-4-6"
api_key = "..."
# endpoint = "gateway" # default → https://api.kilo.ai/api/gateway
Cloud API via Kilo AI Gateway. Bearer-token auth with multiple model tiers (free, balanced, pro).
The /models endpoint is public (PUBLIC_MODEL_LISTING), so model listing works without a credential. Because it is queried live, it is the source that carries pricing into the cost-rates editor. The shared models.dev catalog (kilo key) is only a fallback for when the live endpoint is unreachable, and it does not include pricing.
Naming migration:
kilonow refers to this gateway provider. The KiloCLI subprocess provider keeps itskiloclislot (synonymkilo-cli). If you previously configured the CLI provider under thekiloshorthand, switch tokilocli.
Every canonical slot, its default endpoint, whether it runs locally, and its
full config field set, generated from the provider registry and the config
schema. Click a slot to expand its fields; click a field to see how to set it.
Slots with no fixed default need uri set on the alias entry (Azure, custom,
multi-region families, CLI shims).
{{#model-provider-fields}}
For a worked example per family, see Configuration. If your vendor isn't listed, use the custom slot (Custom providers).
Each of these is a standard OpenAI-compatible slot: set model and api_key, leave
uri off (the typed endpoint supplies it). None of them ship a public model index,
so the model picker stays empty until you paste a credential. Once a key is set,
ZeroClaw lists models from the provider's live /models endpoint. The model IDs
below are illustrative; confirm the current catalog in the vendor dashboard.
Morph: slot morph. Fast apply-edits models (morph-v3-large, morph-v3-fast, or
auto). Key from the Morph dashboard.
GitHub Models: slot github_models (alias github-models). OpenAI / Meta /
Microsoft models behind a single GitHub Personal Access Token. Create a PAT with the
models permission (fine-grained); a Copilot token is not the same credential.
Model IDs are publisher-prefixed (e.g. openai/gpt-4o).
Upstage: slot upstage. Solar Pro / Solar Mini (e.g. solar-pro2). Key from the
Upstage console.
Featherless: slot featherless. Serverless open-weight models, addressed by their
Hugging Face repo IDs (e.g. meta-llama/Meta-Llama-3.1-8B-Instruct). Key from
featherless.ai.
Arcee: slot arcee. Native models include conductor, maestro,
virtuoso-large, coder-large, and blitz. Key from the
Arcee platform. Arcee's Platform API uses the non-standard
/api/v1 base path; the typed endpoint already accounts for this, so still leave
uri off.
Lambda AI: slot lambda_ai (alias lambda-ai). Lambda's hosted inference (e.g.
hermes3-405b). Key from the Lambda Cloud API-keys page.
Inception: slot inception. The Mercury diffusion-LLM family (mercury-coder and
the newer mercury-2). Key from the
Inception platform.
Credentials come only from config (
api_key) or the--credentialoverride at run time, these slots do not read a per-provider*_API_KEYenvironment variable.
NEAR AI Cloud example:
[providers.models.nearai.tee]
model = "..." # pick a modelId from https://cloud-api.near.ai/v1/model/list
api_key = "..."
The nearai slot uses https://cloud-api.near.ai/v1 by default and sends
Authorization: Bearer <api_key>. To bridge an existing NEARAI_API_KEY
shell variable into ZeroClaw's schema-mirror env surface, set
ZEROCLAW_providers__models__nearai__tee__api_key="$NEARAI_API_KEY".
Several Chinese vendors expose distinct regional endpoints with different default models. Use one canonical slot and pick the region with the typed endpoint field on the alias entry.
moonshotVariants: cn, intl, code.
qwenOAuth-backed Qwen accounts use the same slot with auth_mode = "oauth".
glmminimaxzaiFor Z.AI's Anthropic-compatible API, use [providers.models.anthropic.zai] with uri = "https://api.z.ai/api/anthropic" instead.
doubaoThe remaining Chinese-region slots (yi, hunyuan, qianfan, baichuan) appear in the all-slots table above; select the region with the typed endpoint field on the alias entry.
OpenRouter is treated as a single first-class provider, not a meta-router. The runtime sees one endpoint; OpenRouter handles vendor fan-out behind that endpoint.
For per-task routing, run multiple agents and let channels pick which agent handles which traffic, see Routing. For a narrower in-config hint mechanism, use [[model_routes]].
custom slot with uri set.endpoint enum covers the rest.