Provider Catalog
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>".
Native
Anthropic: slot anthropic
Supports 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.
OpenAI: slot openai
GPT-4o, GPT-5, o-series reasoning models. Reasoning tokens surfaced as ReasoningDelta events; see Streaming.
OpenAI Codex: openai slot with requires_openai_auth = true
OpenAI 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.
Ollama: slot ollama
Local inference via Ollama’s native /api/chat. Schema-based structured output via format. No API key.
Bedrock: slot bedrock
Gemini: slot gemini
Google’s Gemini API. Supports vision and pre-executed grounded search (see Streaming for PreExecutedToolCall events).
Gemini CLI: slot gemini_cli
Shells out to the gemini CLI; uses the CLI’s existing auth.
Azure OpenAI: slot azure
resource, deployment, and api_version live in this typed config, they are not read from environment variables.
Copilot: slot copilot
Uses a GitHub Copilot subscription for agent inference. Authentication uses a Copilot OAuth token obtained from GitHub.
Telnyx: slot telnyx
Voice-oriented AI endpoint. Pair with the clawdtalk channel for real-time SIP calls.
KiloCLI: slot kilocli
Local inference via KiloCLI.
Kilo AI Gateway: slot 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.
All slots
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).
Shared fields
Every provider slot accepts these fields. Slot-specific extras are listed per provider below.
api_key 🔑
Secret API token for this model_provider. Grab it from the model_provider’s dashboard (OpenAI platform, Anthropic console, OpenRouter keys page, etc.). Stored via the OS keyring when possible; never commit it to config.toml directly.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.api_key field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.api_key field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.api_key # masked input, stored encrypted
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__api_key=
chat_template_kwargs
Arbitrary key/value pairs forwarded verbatim as chat_template_kwargs in the request body (llama.cpp-specific). Use this to pass model-family template variables that control behaviour not exposed by other fields. Example (Qwen3 thinking suppression): chat_template_kwargs = { enable_thinking = false }
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.chat_template_kwargs field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.chat_template_kwargs field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.chat_template_kwargs <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__chat_template_kwargs=
extra_headers 🔑
Extra HTTP headers sent with every request. Niche: used for auth bridges, corporate proxies, or custom gateways that demand a tracing header. Most users never touch this; edit config.toml directly if you need it.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.extra_headers field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.extra_headers field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.extra_headers # masked input, stored encrypted
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__extra_headers=
fallback
Ordered list of other provider aliases to try when every model on this alias has failed. Each entry is a dotted <type>.<alias> reference into providers.models and resolves with its own credentials, endpoint, and model. A fallback never inherits this alias’s key. The walk is depth-first: this alias’s models are exhausted first, then each fallback alias is descended in turn (applying its own fallback_models and fallback). Empty means no provider-level fallback.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.fallback field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.fallback field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.fallback <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__fallback=
fallback_models
Ordered alternate models to try on THIS provider before falling over to the fallback aliases. Same endpoint, key, and headers as the primary model. Only the model identifier changes. Use this when a provider serves a backup model (e.g. a smaller or older variant) that should be tried before leaving the provider entirely. Empty means only model is tried.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.fallback_models field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.fallback_models field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.fallback_models <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__fallback_models=
kind
Provider implementation to instantiate for this profile. Use this when a canonical typed slot should run through a compatible implementation, e.g. [providers.models.openai.proxy] kind = "openai-compatible".
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.kind field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.kind field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.kind <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__kind=
max_tokens
Hard cap on response length in tokens. Most models enforce sensible built-in limits already; leave unset unless you specifically need to clip long outputs for cost or latency reasons.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.max_tokens field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.max_tokens field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.max_tokens <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__max_tokens=
merge_system_into_user
ModelProvider-specific quirk: fold the system prompt into the first user message instead of sending a separate system role. Only needed for models that reject (or mishandle) a standalone system role, e.g. certain older Mistral variants.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.merge_system_into_user field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.merge_system_into_user field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.merge_system_into_user <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__merge_system_into_user=
model
Model identifier to send with each request: the ID string from the model_provider’s catalog (e.g. gpt-4o, claude-sonnet-4-5, llama-3.3-70b). Must match a model the model_provider actually serves on this account.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.model field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.model field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.model <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__model=
native_tools
Override the provider’s default for native tool calling. None (default) honors the provider’s built-in choice. Some(true) forces native tool calls on, Some(false) forces text-fallback. Currently consulted only by the Groq factory, which defaults to text-fallback because llama-family Groq models reject native tool calls with HTTP 400. Setting native_tools = true re-enables native tool calling for Groq models that support it.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.native_tools field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.native_tools field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.native_tools <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__native_tools=
pricing
Per-model pricing for cost tracking, USD per 1M tokens. Free-form key/value map. Keys are user-defined model identifiers; an optional .input / .output suffix encodes pricing dimension when the operator wants to split rates. A bare key without a suffix is used as a flat per-token rate when neither dimension is specified. Default is empty: cost tracking falls back to “unknown” rates and only token usage is recorded. Example: pricing = { opus = 15.0, sonnet = 3.0 } Or split: pricing = { "opus.input" = 15.0, "opus.output" = 75.0 }
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.pricing field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.pricing field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.pricing <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__pricing=
provider_extra
Extra JSON parameters to include in API requests. Merged at the top level of the request body, allowing provider-specific features (routing, transforms, etc.) without code changes. Example: provider_extra = { model_provider = { only = ["Anthropic"] } }
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.provider_extra field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.provider_extra field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.provider_extra <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__provider_extra=
requires_openai_auth
When true, the client pulls credentials from OPENAI_API_KEY or ~/.codex/auth.json instead of the api_key field above. Turn on only for the OpenAI Codex model_provider; leave off for standard API-key model_providers.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.requires_openai_auth field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.requires_openai_auth field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.requires_openai_auth <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__requires_openai_auth=
temperature
Sampling temperature passed to the model. Lower values (0.0–0.3) give deterministic, near-verbatim output, which fits code, routing, summarization. Higher values (0.7–1.2) give more varied output, which fits open-ended chat.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.temperature field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.temperature field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.temperature <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__temperature=
think
Enable or disable chain-of-thought thinking for models that support it (e.g. Qwen3, GLM-4). true turns thinking on, false turns it off. None (default) lets the model decide. Forwarded as enable_thinking in the request body; mirrors the Ollama provider’s think field.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.think field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.think field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.think <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__think=
timeout_secs
HTTP request timeout in seconds. Bump this for slow local model_providers (Ollama on CPU, big local models) or high-latency networks; leave unset otherwise.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.timeout_secs field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.timeout_secs field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.timeout_secs <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__timeout_secs=
uri
Endpoint URI the client hits. Override the family’s default endpoint when pointing at a self-hosted gateway (LiteLLM, vLLM, Ollama), a custom proxy, or any non-standard URL. Leave unset to use the family’s default URI from its ModelEndpoint impl. Set this to the FULL endpoint URL; there is no separate path-suffix field.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.uri field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.uri field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.uri <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__uri=
wire_api
Wire protocol flavor for the model_provider client. responses routes through OpenAI’s Codex/Responses API (POST /v1/responses); chat_completions routes through the legacy /v1/chat/completions (or the family’s chat-completions-compatible endpoint). Auto-selected per family when unset.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/openrouter and set the providers.models.openrouter.<alias>.wire_api field.
zerocode
In the Config pane, set the providers.models.openrouter.<alias>.wire_api field.
zeroclaw config
zeroclaw config set providers.models.openrouter.<alias>.wire_api <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__openrouter__<alias>__wire_api=
Primary
openrouter https://openrouter.ai/api/v1anthropic https://api.anthropic.comopenai https://api.openai.com/v1telnyx https://api.telnyx.com/v2/aiazure no fixed default
Slot-specific fields (in addition to the shared fields above):
api_version
Azure API version string (e.g. 2024-10-21).
Set it on any surface:
Gateway dashboard
Open /config/providers.models/azure and set the providers.models.azure.<alias>.api_version field.
zerocode
In the Config pane, set the providers.models.azure.<alias>.api_version field.
zeroclaw config
zeroclaw config set providers.models.azure.<alias>.api_version <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__azure__<alias>__api_version=
deployment
Azure deployment name: the deployment created in Azure AI Studio.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/azure and set the providers.models.azure.<alias>.deployment field.
zerocode
In the Config pane, set the providers.models.azure.<alias>.deployment field.
zeroclaw config
zeroclaw config set providers.models.azure.<alias>.deployment <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__azure__<alias>__deployment=
resource
Azure resource name (the <resource> part of <resource>.openai.azure.com).
Set it on any surface:
Gateway dashboard
Open /config/providers.models/azure and set the providers.models.azure.<alias>.resource field.
zerocode
In the Config pane, set the providers.models.azure.<alias>.resource field.
zeroclaw config
zeroclaw config set providers.models.azure.<alias>.resource <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__azure__<alias>__resource=
ollama http://localhost:11434 · local
Slot-specific fields (in addition to the shared fields above):
num_ctx
Override the Ollama num_ctx (context window, in tokens) sent on every /api/chat request. Defaults to the framework constant (OLLAMA_DEFAULT_NUM_CTX) when unset.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/ollama and set the providers.models.ollama.<alias>.num_ctx field.
zerocode
In the Config pane, set the providers.models.ollama.<alias>.num_ctx field.
zeroclaw config
zeroclaw config set providers.models.ollama.<alias>.num_ctx <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__ollama__<alias>__num_ctx=
num_predict
Override the Ollama num_predict (max output tokens) sent on every /api/chat request. Defaults to the framework constant (OLLAMA_DEFAULT_NUM_PREDICT) when unset.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/ollama and set the providers.models.ollama.<alias>.num_predict field.
zerocode
In the Config pane, set the providers.models.ollama.<alias>.num_predict field.
zeroclaw config
zeroclaw config set providers.models.ollama.<alias>.num_predict <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__ollama__<alias>__num_predict=
temperature_override
Force every Ollama /api/chat request to use this temperature, overriding the per-call value passed through ModelProvider::chat_with_system(.., temperature). When unset (None, the default), the per-call temperature wins: full backward compatibility.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/ollama and set the providers.models.ollama.<alias>.temperature_override field.
zerocode
In the Config pane, set the providers.models.ollama.<alias>.temperature_override field.
zeroclaw config
zeroclaw config set providers.models.ollama.<alias>.temperature_override <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__ollama__<alias>__temperature_override=
gemini https://generativelanguage.googleapis.com/v1beta
Slot-specific fields (in addition to the shared fields above):
auth_mode
Authentication mode for model model_provider families that support more than one (e.g. Qwen, Minimax can use API key OR OAuth). Families that only support a single auth flow simply omit this field from their config struct.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/gemini and set the providers.models.gemini.<alias>.auth_mode field.
zerocode
In the Config pane, set the providers.models.gemini.<alias>.auth_mode field.
zeroclaw config
zeroclaw config set providers.models.gemini.<alias>.auth_mode <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__gemini__<alias>__auth_mode=
oauth_client_id
Google OAuth app client_id, used when this alias drives ZeroClaw’s own browser/device-code login flow (zeroclaw auth login --model-provider gemini --profile <alias>). Operators relying on the upstream gemini login tool don’t need this; that tool writes its own client_id / client_secret into ~/.gemini/oauth_creds.json.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/gemini and set the providers.models.gemini.<alias>.oauth_client_id field.
zerocode
In the Config pane, set the providers.models.gemini.<alias>.oauth_client_id field.
zeroclaw config
zeroclaw config set providers.models.gemini.<alias>.oauth_client_id <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__gemini__<alias>__oauth_client_id=
oauth_client_secret
Google OAuth app client_secret. Set alongside oauth_client_id.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/gemini and set the providers.models.gemini.<alias>.oauth_client_secret field.
zerocode
In the Config pane, set the providers.models.gemini.<alias>.oauth_client_secret field.
zeroclaw config
zeroclaw config set providers.models.gemini.<alias>.oauth_client_secret <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__gemini__<alias>__oauth_client_secret=
oauth_project
Pin a specific GCP project ID for the OAuth loadCodeAssist discovery call. When unset, the discovery probes for an already-onboarded project on the credential’s account. Replaces GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_PROJECT_ID env vars.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/gemini and set the providers.models.gemini.<alias>.oauth_project field.
zerocode
In the Config pane, set the providers.models.gemini.<alias>.oauth_project field.
zeroclaw config
zeroclaw config set providers.models.gemini.<alias>.oauth_project <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__gemini__<alias>__oauth_project=
OpenAI-compatible
venice no fixed defaultvercel https://ai-gateway.vercel.sh/v1cloudflare https://gateway.ai.cloudflare.com/v1moonshot no fixed default
Slot-specific fields (in addition to the shared fields above):
endpoint
Moonshot endpoint variants. Operators pick the region that matches their account; the runtime resolves the URI from the chosen variant unless overridden by base.uri. Code variant is intl-only.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/moonshot and set the providers.models.moonshot.<alias>.endpoint field.
zerocode
In the Config pane, set the providers.models.moonshot.<alias>.endpoint field.
zeroclaw config
zeroclaw config set providers.models.moonshot.<alias>.endpoint <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__moonshot__<alias>__endpoint=
synthetic https://api.synthetic.new/openai/v1opencode https://opencode.ai/zen/v1zai no fixed default
Slot-specific fields (in addition to the shared fields above):
endpoint
Set it on any surface:
Gateway dashboard
Open /config/providers.models/zai and set the providers.models.zai.<alias>.endpoint field.
zerocode
In the Config pane, set the providers.models.zai.<alias>.endpoint field.
zeroclaw config
zeroclaw config set providers.models.zai.<alias>.endpoint <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__zai__<alias>__endpoint=
glm no fixed default
Slot-specific fields (in addition to the shared fields above):
endpoint
Set it on any surface:
Gateway dashboard
Open /config/providers.models/glm and set the providers.models.glm.<alias>.endpoint field.
zerocode
In the Config pane, set the providers.models.glm.<alias>.endpoint field.
zeroclaw config
zeroclaw config set providers.models.glm.<alias>.endpoint <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__glm__<alias>__endpoint=
minimax no fixed default
Slot-specific fields (in addition to the shared fields above):
auth_mode
Authentication mode for model model_provider families that support more than one (e.g. Qwen, Minimax can use API key OR OAuth). Families that only support a single auth flow simply omit this field from their config struct.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/minimax and set the providers.models.minimax.<alias>.auth_mode field.
zerocode
In the Config pane, set the providers.models.minimax.<alias>.auth_mode field.
zeroclaw config
zeroclaw config set providers.models.minimax.<alias>.auth_mode <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__minimax__<alias>__auth_mode=
endpoint
Set it on any surface:
Gateway dashboard
Open /config/providers.models/minimax and set the providers.models.minimax.<alias>.endpoint field.
zerocode
In the Config pane, set the providers.models.minimax.<alias>.endpoint field.
zeroclaw config
zeroclaw config set providers.models.minimax.<alias>.endpoint <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__minimax__<alias>__endpoint=
oauth_client_id
Override of MiniMax’s published OAuth client_id. Most operators should leave this unset; the runtime defaults to the vendor-published client_id (same one MiniMax’s own portal uses).
Set it on any surface:
Gateway dashboard
Open /config/providers.models/minimax and set the providers.models.minimax.<alias>.oauth_client_id field.
zerocode
In the Config pane, set the providers.models.minimax.<alias>.oauth_client_id field.
zeroclaw config
zeroclaw config set providers.models.minimax.<alias>.oauth_client_id <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__minimax__<alias>__oauth_client_id=
oauth_refresh_token
Long-lived OAuth refresh token issued by MiniMax. When set, the runtime exchanges it for a short-lived access token at provider construction time and uses that as the API credential. Operators who prefer dashboard-generated long-lived API keys can leave this unset and populate api_key directly.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/minimax and set the providers.models.minimax.<alias>.oauth_refresh_token field.
zerocode
In the Config pane, set the providers.models.minimax.<alias>.oauth_refresh_token field.
zeroclaw config
zeroclaw config set providers.models.minimax.<alias>.oauth_refresh_token <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__minimax__<alias>__oauth_refresh_token=
bedrock no fixed default
Slot-specific fields (in addition to the shared fields above):
region
AWS region for the Bedrock endpoint (e.g. us-east-1, eu-west-1).
Set it on any surface:
Gateway dashboard
Open /config/providers.models/bedrock and set the providers.models.bedrock.<alias>.region field.
zerocode
In the Config pane, set the providers.models.bedrock.<alias>.region field.
zeroclaw config
zeroclaw config set providers.models.bedrock.<alias>.region <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__bedrock__<alias>__region=
qianfan no fixed defaultdoubao https://ark.cn-beijing.volces.com/api/v3qwen no fixed default
Slot-specific fields (in addition to the shared fields above):
auth_mode
Authentication mode for model model_provider families that support more than one (e.g. Qwen, Minimax can use API key OR OAuth). Families that only support a single auth flow simply omit this field from their config struct.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/qwen and set the providers.models.qwen.<alias>.auth_mode field.
zerocode
In the Config pane, set the providers.models.qwen.<alias>.auth_mode field.
zeroclaw config
zeroclaw config set providers.models.qwen.<alias>.auth_mode <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__qwen__<alias>__auth_mode=
endpoint
Qwen endpoint variants. Operators pick the region matching their account.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/qwen and set the providers.models.qwen.<alias>.endpoint field.
zerocode
In the Config pane, set the providers.models.qwen.<alias>.endpoint field.
zeroclaw config
zeroclaw config set providers.models.qwen.<alias>.endpoint <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__qwen__<alias>__endpoint=
oauth_client_id
Override of Qwen’s published OAuth client_id. Most operators should leave this unset.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/qwen and set the providers.models.qwen.<alias>.oauth_client_id field.
zerocode
In the Config pane, set the providers.models.qwen.<alias>.oauth_client_id field.
zeroclaw config
zeroclaw config set providers.models.qwen.<alias>.oauth_client_id <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__qwen__<alias>__oauth_client_id=
oauth_refresh_token
Long-lived Qwen OAuth refresh token. When set, the runtime exchanges it for a short-lived access token at provider construction time. Operators relying on the upstream qwen login tool (which writes ~/.qwen/oauth_creds.json) leave this unset; the file-cache integration takes over.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/qwen and set the providers.models.qwen.<alias>.oauth_refresh_token field.
zerocode
In the Config pane, set the providers.models.qwen.<alias>.oauth_refresh_token field.
zeroclaw config
zeroclaw config set providers.models.qwen.<alias>.oauth_refresh_token <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__qwen__<alias>__oauth_refresh_token=
oauth_resource_url
Operator override of the resource URL the refreshed access token is paired with. When unset, the runtime falls back to the endpoint-derived URL (or the cached resource_url when reading from ~/.qwen/oauth_creds.json).
Set it on any surface:
Gateway dashboard
Open /config/providers.models/qwen and set the providers.models.qwen.<alias>.oauth_resource_url field.
zerocode
In the Config pane, set the providers.models.qwen.<alias>.oauth_resource_url field.
zeroclaw config
zeroclaw config set providers.models.qwen.<alias>.oauth_resource_url <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__qwen__<alias>__oauth_resource_url=
groq no fixed defaultmistral https://api.mistral.ai/v1xai no fixed defaultdeepseek https://api.deepseek.comtogether https://api.together.xyzfireworks https://api.fireworks.ai/inference/v1novita https://api.novita.ai/openaiperplexity https://api.perplexity.aicohere https://api.cohere.com/compatibilitycopilot no fixed defaultgemini_cli no fixed default · local
Slot-specific fields (in addition to the shared fields above):
binary_path
Path to the gemini CLI binary. Falls back to gemini (PATH lookup).
Set it on any surface:
Gateway dashboard
Open /config/providers.models/gemini_cli and set the providers.models.gemini_cli.<alias>.binary_path field.
zerocode
In the Config pane, set the providers.models.gemini_cli.<alias>.binary_path field.
zeroclaw config
zeroclaw config set providers.models.gemini_cli.<alias>.binary_path <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__gemini_cli__<alias>__binary_path=
kilocli no fixed default · local
Slot-specific fields (in addition to the shared fields above):
binary_path
Path to the kilo CLI binary. Falls back to kilo (PATH lookup).
Set it on any surface:
Gateway dashboard
Open /config/providers.models/kilocli and set the providers.models.kilocli.<alias>.binary_path field.
zerocode
In the Config pane, set the providers.models.kilocli.<alias>.binary_path field.
zeroclaw config
zeroclaw config set providers.models.kilocli.<alias>.binary_path <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__kilocli__<alias>__binary_path=
kilo no fixed default
Slot-specific fields (in addition to the shared fields above):
endpoint
Kilo AI Gateway endpoint. Single canonical endpoint at kilo.ai.
Set it on any surface:
Gateway dashboard
Open /config/providers.models/kilo and set the providers.models.kilo.<alias>.endpoint field.
zerocode
In the Config pane, set the providers.models.kilo.<alias>.endpoint field.
zeroclaw config
zeroclaw config set providers.models.kilo.<alias>.endpoint <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__kilo__<alias>__endpoint=
lmstudio no fixed default · localllamacpp no fixed default · localsglang http://localhost:30000/v1 · localvllm http://localhost:8000/v1 · localosaurus no fixed default · localnvidia no fixed defaultsiliconflow https://api.siliconflow.com/v1aihubmix https://aihubmix.com/v1litellm http://localhost:4000/v1atomic_chat no fixed default · localastrai https://as-trai.com/v1deepmyst no fixed defaultmorph https://api.morphllm.com/v1github_models https://models.github.ai/inferenceupstage https://api.upstage.ai/v1featherless https://api.featherless.ai/v1arcee https://api.arcee.ai/api/v1lambda_ai https://api.lambda.ai/v1inception https://api.inceptionlabs.ai/v1custom no fixed defaultFast inference
cerebras https://api.cerebras.ai/v1sambanova https://api.sambanova.ai/v1hyperbolic https://api.hyperbolic.xyz/v1Model hosting platforms
deepinfra https://api.deepinfra.com/v1/openaihuggingface https://router.huggingface.co/v1ai21 https://api.ai21.com/studio/v1reka https://api.reka.ai/v1baseten https://inference.baseten.co/v1nscale https://inference.api.nscale.com/v1anyscale https://api.endpoints.anyscale.com/v1nebius https://api.studio.nebius.ai/v1friendli https://api.friendli.ai/serverless/v1lepton https://llama3-1-405b.lepton.run/api/v1Chinese AI
stepfun no fixed default
Slot-specific fields (in addition to the shared fields above):
endpoint
Set it on any surface:
Gateway dashboard
Open /config/providers.models/stepfun and set the providers.models.stepfun.<alias>.endpoint field.
zerocode
In the Config pane, set the providers.models.stepfun.<alias>.endpoint field.
zeroclaw config
zeroclaw config set providers.models.stepfun.<alias>.endpoint <value>
Environment variable
Export the override (POSIX shells; drop into ~/.bashrc, ~/.zshrc, .env, or a Dockerfile). Replace <alias> with the literal alias:
export ZEROCLAW_providers__models__stepfun__<alias>__endpoint=
baichuan https://api.baichuan-ai.com/v1yi https://api.lingyiwanwu.com/v1hunyuan no fixed defaultCloud AI endpoints
ovh no fixed defaultavian no fixed defaultFor a worked example per family, see Configuration. If your vendor isn’t listed, use the custom slot (Custom providers).
Worked examples: Morph, GitHub Models, Upstage, Featherless, Arcee, Lambda AI, Inception
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.
Multi-region families
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.
Moonshot: slot moonshot
Variants: cn, intl, code.
Qwen / DashScope: slot qwen
OAuth-backed Qwen accounts use the same slot with auth_mode = "oauth".
GLM: slot glm
MiniMax: slot minimax
Z.AI: slot zai
For Z.AI’s Anthropic-compatible API, use [providers.models.anthropic.zai] with uri = "https://api.z.ai/api/anthropic" instead.
Doubao / Volcengine: slot doubao
The 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.
Routing layers
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]].
Something missing?
- If the endpoint is OpenAI-compatible, use the
customslot withuriset. - If it has its own canonical slot above, use that, even if you only see one of its regions, the slot’s
endpointenum covers the rest. - If it speaks a non-OpenAI wire format and needs its own implementation, see Custom providers.