Model providers
This page covers LLM/model providers (not chat channels like WhatsApp/Telegram). For model selection rules, see /concepts/models.Quick rules
- Model refs use
provider/model(example:opencode/claude-opus-4-6). - If you set
agents.defaults.models, it becomes the allowlist. - CLI helpers:
openclaw onboard,openclaw models list,openclaw models set <provider/model>. - Fallback runtime rules, cooldown probes, and session-override persistence are documented in /concepts/model-failover.
models.providers.*.models[].contextWindowis native model metadata;models.providers.*.models[].contextTokensis the effective runtime cap.- Provider plugins can inject model catalogs via
registerProvider({ catalog }); OpenClaw merges that output intomodels.providersbefore writingmodels.json. - Provider manifests can declare
providerAuthEnvVarsso generic env-based auth probes do not need to load plugin runtime. The remaining core env-var map is now just for non-plugin/core providers and a few generic-precedence cases such as Anthropic API-key-first onboarding. - Provider plugins can also own provider runtime behavior via
normalizeModelId,normalizeTransport,normalizeConfig,applyNativeStreamingUsageCompat,resolveConfigApiKey,resolveSyntheticAuth,shouldDeferSyntheticProfileAuth,resolveDynamicModel,prepareDynamicModel,normalizeResolvedModel,contributeResolvedModelCompat,capabilities,normalizeToolSchemas,inspectToolSchemas,resolveReasoningOutputMode,prepareExtraParams,createStreamFn,wrapStreamFn,resolveTransportTurnState,resolveWebSocketSessionPolicy,createEmbeddingProvider,formatApiKey,refreshOAuth,buildAuthDoctorHint,matchesContextOverflowError,classifyFailoverReason,isCacheTtlEligible,buildMissingAuthMessage,suppressBuiltInModel,augmentModelCatalog,isBinaryThinking,supportsXHighThinking,resolveDefaultThinkingLevel,applyConfigDefaults,isModernModelRef,prepareRuntimeAuth,resolveUsageAuth,fetchUsageSnapshot, andonModelSelected. - Note: provider runtime
capabilitiesis shared runner metadata (provider family, transcript/tooling quirks, transport/cache hints). It is not the same as the public capability model which describes what a plugin registers (text inference, speech, etc.).
Plugin-owned provider behavior
Provider plugins can now own most provider-specific logic while OpenClaw keeps the generic inference loop. Typical split:auth[].run/auth[].runNonInteractive: provider owns onboarding/login flows foropenclaw onboard,openclaw models auth, and headless setupwizard.setup/wizard.modelPicker: provider owns auth-choice labels, legacy aliases, onboarding allowlist hints, and setup entries in onboarding/model pickerscatalog: provider appears inmodels.providersnormalizeModelId: provider normalizes legacy/preview model ids before lookup or canonicalizationnormalizeTransport: provider normalizes transport-familyapi/baseUrlbefore generic model assembly; OpenClaw checks the matched provider first, then other hook-capable provider plugins until one actually changes the transportnormalizeConfig: provider normalizesmodels.providers.<id>config before runtime uses it; OpenClaw checks the matched provider first, then other hook-capable provider plugins until one actually changes the config. If no provider hook rewrites the config, bundled Google-family helpers still normalize supported Google provider entries.applyNativeStreamingUsageCompat: provider applies endpoint-driven native streaming-usage compat rewrites for config providersresolveConfigApiKey: provider resolves env-marker auth for config providers without forcing full runtime auth loading.amazon-bedrockalso has a built-in AWS env-marker resolver here, even though Bedrock runtime auth uses the AWS SDK default chain.resolveSyntheticAuth: provider can expose local/self-hosted or other config-backed auth availability without persisting plaintext secretsshouldDeferSyntheticProfileAuth: provider can mark stored synthetic profile placeholders as lower precedence than env/config-backed authresolveDynamicModel: provider accepts model ids not present in the local static catalog yetprepareDynamicModel: provider needs a metadata refresh before retrying dynamic resolutionnormalizeResolvedModel: provider needs transport or base URL rewritescontributeResolvedModelCompat: provider contributes compat flags for its vendor models even when they arrive through another compatible transportcapabilities: provider publishes transcript/tooling/provider-family quirksnormalizeToolSchemas: provider cleans tool schemas before the embedded runner sees theminspectToolSchemas: provider surfaces transport-specific schema warnings after normalizationresolveReasoningOutputMode: provider chooses native vs tagged reasoning-output contractsprepareExtraParams: provider defaults or normalizes per-model request paramscreateStreamFn: provider replaces the normal stream path with a fully custom transportwrapStreamFn: provider applies request headers/body/model compat wrappersresolveTransportTurnState: provider supplies per-turn native transport headers or metadataresolveWebSocketSessionPolicy: provider supplies native WebSocket session headers or session cool-down policycreateEmbeddingProvider: provider owns memory embedding behavior when it belongs with the provider plugin instead of the core embedding switchboardformatApiKey: provider formats stored auth profiles into the runtimeapiKeystring expected by the transportrefreshOAuth: provider owns OAuth refresh when the sharedpi-airefreshers are not enoughbuildAuthDoctorHint: provider appends repair guidance when OAuth refresh failsmatchesContextOverflowError: provider recognizes provider-specific context-window overflow errors that generic heuristics would missclassifyFailoverReason: provider maps provider-specific raw transport/API errors to failover reasons such as rate limit or overloadisCacheTtlEligible: provider decides which upstream model ids support prompt-cache TTLbuildMissingAuthMessage: provider replaces the generic auth-store error with a provider-specific recovery hintsuppressBuiltInModel: provider hides stale upstream rows and can return a vendor-owned error for direct resolution failuresaugmentModelCatalog: provider appends synthetic/final catalog rows after discovery and config mergingisBinaryThinking: provider owns binary on/off thinking UXsupportsXHighThinking: provider opts selected models intoxhighresolveDefaultThinkingLevel: provider owns default/thinkpolicy for a model familyapplyConfigDefaults: provider applies provider-specific global defaults during config materialization based on auth mode, env, or model familyisModernModelRef: provider owns live/smoke preferred-model matchingprepareRuntimeAuth: provider turns a configured credential into a short lived runtime tokenresolveUsageAuth: provider resolves usage/quota credentials for/usageand related status/reporting surfacesfetchUsageSnapshot: provider owns the usage endpoint fetch/parsing while core still owns the summary shell and formattingonModelSelected: provider runs post-selection side effects such as telemetry or provider-owned session bookkeeping
anthropic: Claude 4.6 forward-compat fallback, auth repair hints, usage endpoint fetching, cache-TTL/provider-family metadata, and auth-aware global config defaultsamazon-bedrock: provider-owned context-overflow matching and failover reason classification for Bedrock-specific throttle/not-ready errors, plus the sharedanthropic-by-modelreplay family for Claude-only replay-policy guards on Anthropic trafficanthropic-vertex: Claude-only replay-policy guards on Anthropic-message trafficopenrouter: pass-through model ids, request wrappers, provider capability hints, Gemini thought-signature sanitation on proxy Gemini traffic, proxy reasoning injection through theopenrouter-thinkingstream family, routing metadata forwarding, and cache-TTL policygithub-copilot: onboarding/device login, forward-compat model fallback, Claude-thinking transcript hints, runtime token exchange, and usage endpoint fetchingopenai: GPT-5.4 forward-compat fallback, direct OpenAI transport normalization, Codex-aware missing-auth hints, Spark suppression, synthetic OpenAI/Codex catalog rows, thinking/live-model policy, usage-token alias normalization (input/outputandprompt/completionfamilies), the sharedopenai-responses-defaultsstream family for native OpenAI/Codex wrappers, and provider-family metadatagoogleandgoogle-gemini-cli: Gemini 3.1 forward-compat fallback, native Gemini replay validation, bootstrap replay sanitation, tagged reasoning-output mode, and modern-model matching; Gemini CLI OAuth also owns auth-profile token formatting, usage-token parsing, and quota endpoint fetching for usage surfacesmoonshot: shared transport, plugin-owned thinking payload normalizationkilocode: shared transport, plugin-owned request headers, reasoning payload normalization, proxy-Gemini thought-signature sanitation, and cache-TTL policyzai: GLM-5 forward-compat fallback,tool_streamdefaults, cache-TTL policy, binary-thinking/live-model policy, and usage auth + quota fetching; unknownglm-5*ids synthesize from the bundledglm-4.7templatexai: native Responses transport normalization,/fastalias rewrites for Grok fast variants, defaulttool_stream, and xAI-specific tool-schema / reasoning-payload cleanupmistral: plugin-owned capability metadataopencodeandopencode-go: plugin-owned capability metadata plus proxy-Gemini thought-signature sanitationbyteplus,cloudflare-ai-gateway,huggingface,kimi,nvidia,qianfan,stepfun,synthetic,together,venice,vercel-ai-gateway, andvolcengine: plugin-owned catalogs onlyqwen: plugin-owned catalogs for text models plus shared media-understanding and video-generation provider registrations for its multimodal surfaces; Qwen video generation uses the Standard DashScope video endpoints with bundled Wan models such aswan2.6-t2vandwan2.7-r2vminimax: plugin-owned catalogs, hybrid Anthropic/OpenAI replay-policy selection, and usage auth/snapshot logicxiaomi: plugin-owned catalogs plus usage auth/snapshot logic
openai plugin now owns both provider ids: openai and
openai-codex.
That covers providers that still fit OpenClaw’s normal transports. A provider
that needs a totally custom request executor is a separate, deeper extension
surface.
API key rotation
- Supports generic provider rotation for selected providers.
- Configure multiple keys via:
OPENCLAW_LIVE_<PROVIDER>_KEY(single live override, highest priority)<PROVIDER>_API_KEYS(comma or semicolon list)<PROVIDER>_API_KEY(primary key)<PROVIDER>_API_KEY_*(numbered list, e.g.<PROVIDER>_API_KEY_1)
- For Google providers,
GOOGLE_API_KEYis also included as fallback. - Key selection order preserves priority and deduplicates values.
- Requests are retried with the next key only on rate-limit responses (for
example
429,rate_limit,quota,resource exhausted,Too many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceeded, or periodic usage-limit messages). - Non-rate-limit failures fail immediately; no key rotation is attempted.
- When all candidate keys fail, the final error is returned from the last attempt.
Built-in providers (pi-ai catalog)
OpenClaw ships with the pi‑ai catalog. These providers require nomodels.providers config; just set auth + pick a model.
OpenAI
- Provider:
openai - Auth:
OPENAI_API_KEY - Optional rotation:
OPENAI_API_KEYS,OPENAI_API_KEY_1,OPENAI_API_KEY_2, plusOPENCLAW_LIVE_OPENAI_KEY(single override) - Example models:
openai/gpt-5.4,openai/gpt-5.4-pro - CLI:
openclaw onboard --auth-choice openai-api-key - Default transport is
auto(WebSocket-first, SSE fallback) - Override per model via
agents.defaults.models["openai/<model>"].params.transport("sse","websocket", or"auto") - OpenAI Responses WebSocket warm-up defaults to enabled via
params.openaiWsWarmup(true/false) - OpenAI priority processing can be enabled via
agents.defaults.models["openai/<model>"].params.serviceTier /fastandparams.fastModemap directopenai/*Responses requests toservice_tier=priorityonapi.openai.com- Use
params.serviceTierwhen you want an explicit tier instead of the shared/fasttoggle - Hidden OpenClaw attribution headers (
originator,version,User-Agent) apply only on native OpenAI traffic toapi.openai.com, not generic OpenAI-compatible proxies - Native OpenAI routes also keep Responses
store, prompt-cache hints, and OpenAI reasoning-compat payload shaping; proxy routes do not openai/gpt-5.3-codex-sparkis intentionally suppressed in OpenClaw because the live OpenAI API rejects it; Spark is treated as Codex-only
Anthropic
- Provider:
anthropic - Auth:
ANTHROPIC_API_KEY - Optional rotation:
ANTHROPIC_API_KEYS,ANTHROPIC_API_KEY_1,ANTHROPIC_API_KEY_2, plusOPENCLAW_LIVE_ANTHROPIC_KEY(single override) - Example model:
anthropic/claude-opus-4-6 - CLI:
openclaw onboard --auth-choice apiKeyoropenclaw onboard --auth-choice anthropic-cli - Direct public Anthropic requests support the shared
/fasttoggle andparams.fastMode, including API-key and OAuth-authenticated traffic sent toapi.anthropic.com; OpenClaw maps that to Anthropicservice_tier(autovsstandard_only) - Billing note: Anthropic’s public Claude Code docs still include direct Claude Code terminal usage in Claude plan limits. Separately, Anthropic notified OpenClaw users on April 4, 2026 at 12:00 PM PT / 8:00 PM BST that the OpenClaw Claude-login path counts as third-party harness usage and requires Extra Usage billed separately from the subscription.
- Anthropic setup-token is available again as a legacy/manual OpenClaw path. Use it with the expectation that Anthropic told OpenClaw users this path requires Extra Usage.
OpenAI Code (Codex)
- Provider:
openai-codex - Auth: OAuth (ChatGPT)
- Example model:
openai-codex/gpt-5.4 - CLI:
openclaw onboard --auth-choice openai-codexoropenclaw models auth login --provider openai-codex - Default transport is
auto(WebSocket-first, SSE fallback) - Override per model via
agents.defaults.models["openai-codex/<model>"].params.transport("sse","websocket", or"auto") params.serviceTieris also forwarded on native Codex Responses requests (chatgpt.com/backend-api)- Hidden OpenClaw attribution headers (
originator,version,User-Agent) are only attached on native Codex traffic tochatgpt.com/backend-api, not generic OpenAI-compatible proxies - Shares the same
/fasttoggle andparams.fastModeconfig as directopenai/*; OpenClaw maps that toservice_tier=priority openai-codex/gpt-5.3-codex-sparkremains available when the Codex OAuth catalog exposes it; entitlement-dependentopenai-codex/gpt-5.4keeps nativecontextWindow = 1050000and a default runtimecontextTokens = 272000; override the runtime cap withmodels.providers.openai-codex.models[].contextTokens- Policy note: OpenAI Codex OAuth is explicitly supported for external tools/workflows like OpenClaw.
Other subscription-style hosted options
- Qwen Cloud: Qwen Cloud provider surface plus Alibaba DashScope and Coding Plan endpoint mapping
- MiniMax: MiniMax Coding Plan OAuth or API key access
- GLM Models: Z.AI Coding Plan or general API endpoints
OpenCode
- Auth:
OPENCODE_API_KEY(orOPENCODE_ZEN_API_KEY) - Zen runtime provider:
opencode - Go runtime provider:
opencode-go - Example models:
opencode/claude-opus-4-6,opencode-go/kimi-k2.5 - CLI:
openclaw onboard --auth-choice opencode-zenoropenclaw onboard --auth-choice opencode-go
Google Gemini (API key)
- Provider:
google - Auth:
GEMINI_API_KEY - Optional rotation:
GEMINI_API_KEYS,GEMINI_API_KEY_1,GEMINI_API_KEY_2,GOOGLE_API_KEYfallback, andOPENCLAW_LIVE_GEMINI_KEY(single override) - Example models:
google/gemini-3.1-pro-preview,google/gemini-3-flash-preview - Compatibility: legacy OpenClaw config using
google/gemini-3.1-flash-previewis normalized togoogle/gemini-3-flash-preview - CLI:
openclaw onboard --auth-choice gemini-api-key - Direct Gemini runs also accept
agents.defaults.models["google/<model>"].params.cachedContent(or legacycached_content) to forward a provider-nativecachedContents/...handle; Gemini cache hits surface as OpenClawcacheRead
Google Vertex and Gemini CLI
- Providers:
google-vertex,google-gemini-cli - Auth: Vertex uses gcloud ADC; Gemini CLI uses its OAuth flow
- Caution: Gemini CLI OAuth in OpenClaw is an unofficial integration. Some users have reported Google account restrictions after using third-party clients. Review Google terms and use a non-critical account if you choose to proceed.
- Gemini CLI OAuth is shipped as part of the bundled
googleplugin.- Install Gemini CLI first:
brew install gemini-cli- or
npm install -g @google/gemini-cli
- Enable:
openclaw plugins enable google - Login:
openclaw models auth login --provider google-gemini-cli --set-default - Default model:
google-gemini-cli/gemini-3.1-pro-preview - Note: you do not paste a client id or secret into
openclaw.json. The CLI login flow stores tokens in auth profiles on the gateway host. - If requests fail after login, set
GOOGLE_CLOUD_PROJECTorGOOGLE_CLOUD_PROJECT_IDon the gateway host. - Gemini CLI JSON replies are parsed from
response; usage falls back tostats, withstats.cachednormalized into OpenClawcacheRead.
- Install Gemini CLI first:
Z.AI (GLM)
- Provider:
zai - Auth:
ZAI_API_KEY - Example model:
zai/glm-5 - CLI:
openclaw onboard --auth-choice zai-api-key- Aliases:
z.ai/*andz-ai/*normalize tozai/* zai-api-keyauto-detects the matching Z.AI endpoint;zai-coding-global,zai-coding-cn,zai-global, andzai-cnforce a specific surface
- Aliases:
Vercel AI Gateway
- Provider:
vercel-ai-gateway - Auth:
AI_GATEWAY_API_KEY - Example model:
vercel-ai-gateway/anthropic/claude-opus-4.6 - CLI:
openclaw onboard --auth-choice ai-gateway-api-key
Kilo Gateway
- Provider:
kilocode - Auth:
KILOCODE_API_KEY - Example model:
kilocode/kilo/auto - CLI:
openclaw onboard --auth-choice kilocode-api-key - Base URL:
https://api.kilo.ai/api/gateway/ - Static fallback catalog ships
kilocode/kilo/auto; livehttps://api.kilo.ai/api/gateway/modelsdiscovery can expand the runtime catalog further. - Exact upstream routing behind
kilocode/kilo/autois owned by Kilo Gateway, not hard-coded in OpenClaw.
Other bundled provider plugins
- OpenRouter:
openrouter(OPENROUTER_API_KEY) - Example model:
openrouter/auto - OpenClaw applies OpenRouter’s documented app-attribution headers only when
the request actually targets
openrouter.ai - OpenRouter-specific Anthropic
cache_controlmarkers are likewise gated to verified OpenRouter routes, not arbitrary proxy URLs - OpenRouter remains on the proxy-style OpenAI-compatible path, so native
OpenAI-only request shaping (
serviceTier, Responsesstore, prompt-cache hints, OpenAI reasoning-compat payloads) is not forwarded - Gemini-backed OpenRouter refs keep proxy-Gemini thought-signature sanitation only; native Gemini replay validation and bootstrap rewrites stay off
- Kilo Gateway:
kilocode(KILOCODE_API_KEY) - Example model:
kilocode/kilo/auto - Gemini-backed Kilo refs keep the same proxy-Gemini thought-signature
sanitation path;
kilocode/kilo/autoand other proxy-reasoning-unsupported hints skip proxy reasoning injection - MiniMax:
minimax(API key) andminimax-portal(OAuth) - Auth:
MINIMAX_API_KEYforminimax;MINIMAX_OAUTH_TOKENorMINIMAX_API_KEYforminimax-portal - Example model:
minimax/MiniMax-M2.7orminimax-portal/MiniMax-M2.7 - MiniMax onboarding/API-key setup writes explicit M2.7 model definitions with
input: ["text", "image"]; the bundled provider catalog keeps the chat refs text-only until that provider config is materialized - Moonshot:
moonshot(MOONSHOT_API_KEY) - Example model:
moonshot/kimi-k2.5 - Kimi Coding:
kimi(KIMI_API_KEYorKIMICODE_API_KEY) - Example model:
kimi/kimi-code - Qianfan:
qianfan(QIANFAN_API_KEY) - Example model:
qianfan/deepseek-v3.2 - Qwen Cloud:
qwen(QWEN_API_KEY,MODELSTUDIO_API_KEY, orDASHSCOPE_API_KEY) - Example model:
qwen/qwen3.5-plus - NVIDIA:
nvidia(NVIDIA_API_KEY) - Example model:
nvidia/nvidia/llama-3.1-nemotron-70b-instruct - StepFun:
stepfun/stepfun-plan(STEPFUN_API_KEY) - Example models:
stepfun/step-3.5-flash,stepfun-plan/step-3.5-flash-2603 - Together:
together(TOGETHER_API_KEY) - Example model:
together/moonshotai/Kimi-K2.5 - Venice:
venice(VENICE_API_KEY) - Xiaomi:
xiaomi(XIAOMI_API_KEY) - Example model:
xiaomi/mimo-v2-flash - Vercel AI Gateway:
vercel-ai-gateway(AI_GATEWAY_API_KEY) - Hugging Face Inference:
huggingface(HUGGINGFACE_HUB_TOKENorHF_TOKEN) - Cloudflare AI Gateway:
cloudflare-ai-gateway(CLOUDFLARE_AI_GATEWAY_API_KEY) - Volcengine:
volcengine(VOLCANO_ENGINE_API_KEY) - Example model:
volcengine-plan/ark-code-latest - BytePlus:
byteplus(BYTEPLUS_API_KEY) - Example model:
byteplus-plan/ark-code-latest - xAI:
xai(XAI_API_KEY)- Native bundled xAI requests use the xAI Responses path
/fastorparams.fastMode: truerewritesgrok-3,grok-3-mini,grok-4, andgrok-4-0709to their*-fastvariantstool_streamdefaults on; setagents.defaults.models["xai/<model>"].params.tool_streamtofalseto disable it
- Mistral:
mistral(MISTRAL_API_KEY) - Example model:
mistral/mistral-large-latest - CLI:
openclaw onboard --auth-choice mistral-api-key - Groq:
groq(GROQ_API_KEY) - Cerebras:
cerebras(CEREBRAS_API_KEY)- GLM models on Cerebras use ids
zai-glm-4.7andzai-glm-4.6. - OpenAI-compatible base URL:
https://api.cerebras.ai/v1.
- GLM models on Cerebras use ids
- GitHub Copilot:
github-copilot(COPILOT_GITHUB_TOKEN/GH_TOKEN/GITHUB_TOKEN) - Hugging Face Inference example model:
huggingface/deepseek-ai/DeepSeek-R1; CLI:openclaw onboard --auth-choice huggingface-api-key. See Hugging Face (Inference).
Providers via models.providers (custom/base URL)
Use models.providers (or models.json) to add custom providers or
OpenAI/Anthropic‑compatible proxies.
Many of the bundled provider plugins below already publish a default catalog.
Use explicit models.providers.<id> entries only when you want to override the
default base URL, headers, or model list.
Moonshot AI (Kimi)
Moonshot ships as a bundled provider plugin. Use the built-in provider by default, and add an explicitmodels.providers.moonshot entry only when you
need to override the base URL or model metadata:
- Provider:
moonshot - Auth:
MOONSHOT_API_KEY - Example model:
moonshot/kimi-k2.5 - CLI:
openclaw onboard --auth-choice moonshot-api-keyoropenclaw onboard --auth-choice moonshot-api-key-cn
moonshot/kimi-k2.5moonshot/kimi-k2-thinkingmoonshot/kimi-k2-thinking-turbomoonshot/kimi-k2-turbo
Kimi Coding
Kimi Coding uses Moonshot AI’s Anthropic-compatible endpoint:- Provider:
kimi - Auth:
KIMI_API_KEY - Example model:
kimi/kimi-code
kimi/k2p5 remains accepted as a compatibility model id.
Volcano Engine (Doubao)
Volcano Engine (火山引擎) provides access to Doubao and other models in China.- Provider:
volcengine(coding:volcengine-plan) - Auth:
VOLCANO_ENGINE_API_KEY - Example model:
volcengine-plan/ark-code-latest - CLI:
openclaw onboard --auth-choice volcengine-api-key
volcengine/*
catalog is registered at the same time.
In onboarding/configure model pickers, the Volcengine auth choice prefers both
volcengine/* and volcengine-plan/* rows. If those models are not loaded yet,
OpenClaw falls back to the unfiltered catalog instead of showing an empty
provider-scoped picker.
Available models:
volcengine/doubao-seed-1-8-251228(Doubao Seed 1.8)volcengine/doubao-seed-code-preview-251028volcengine/kimi-k2-5-260127(Kimi K2.5)volcengine/glm-4-7-251222(GLM 4.7)volcengine/deepseek-v3-2-251201(DeepSeek V3.2 128K)
volcengine-plan):
volcengine-plan/ark-code-latestvolcengine-plan/doubao-seed-codevolcengine-plan/kimi-k2.5volcengine-plan/kimi-k2-thinkingvolcengine-plan/glm-4.7
BytePlus (International)
BytePlus ARK provides access to the same models as Volcano Engine for international users.- Provider:
byteplus(coding:byteplus-plan) - Auth:
BYTEPLUS_API_KEY - Example model:
byteplus-plan/ark-code-latest - CLI:
openclaw onboard --auth-choice byteplus-api-key
byteplus/*
catalog is registered at the same time.
In onboarding/configure model pickers, the BytePlus auth choice prefers both
byteplus/* and byteplus-plan/* rows. If those models are not loaded yet,
OpenClaw falls back to the unfiltered catalog instead of showing an empty
provider-scoped picker.
Available models:
byteplus/seed-1-8-251228(Seed 1.8)byteplus/kimi-k2-5-260127(Kimi K2.5)byteplus/glm-4-7-251222(GLM 4.7)
byteplus-plan):
byteplus-plan/ark-code-latestbyteplus-plan/doubao-seed-codebyteplus-plan/kimi-k2.5byteplus-plan/kimi-k2-thinkingbyteplus-plan/glm-4.7
Synthetic
Synthetic provides Anthropic-compatible models behind thesynthetic provider:
- Provider:
synthetic - Auth:
SYNTHETIC_API_KEY - Example model:
synthetic/hf:MiniMaxAI/MiniMax-M2.5 - CLI:
openclaw onboard --auth-choice synthetic-api-key
MiniMax
MiniMax is configured viamodels.providers because it uses custom endpoints:
- MiniMax OAuth (Global):
--auth-choice minimax-global-oauth - MiniMax OAuth (CN):
--auth-choice minimax-cn-oauth - MiniMax API key (Global):
--auth-choice minimax-global-api - MiniMax API key (CN):
--auth-choice minimax-cn-api - Auth:
MINIMAX_API_KEYforminimax;MINIMAX_OAUTH_TOKENorMINIMAX_API_KEYforminimax-portal
/fast on rewrites
MiniMax-M2.7 to MiniMax-M2.7-highspeed.
Plugin-owned capability split:
- Text/chat defaults stay on
minimax/MiniMax-M2.7 - Image generation is
minimax/image-01orminimax-portal/image-01 - Image understanding is plugin-owned
MiniMax-VL-01on both MiniMax auth paths - Web search stays on provider id
minimax
Ollama
Ollama ships as a bundled provider plugin and uses Ollama’s native API:- Provider:
ollama - Auth: None required (local server)
- Example model:
ollama/llama3.3 - Installation: https://ollama.com/download
http://127.0.0.1:11434 when you opt in with
OLLAMA_API_KEY, and the bundled provider plugin adds Ollama directly to
openclaw onboard and the model picker. See /providers/ollama
for onboarding, cloud/local mode, and custom configuration.
vLLM
vLLM ships as a bundled provider plugin for local/self-hosted OpenAI-compatible servers:- Provider:
vllm - Auth: Optional (depends on your server)
- Default base URL:
http://127.0.0.1:8000/v1
/v1/models):
SGLang
SGLang ships as a bundled provider plugin for fast self-hosted OpenAI-compatible servers:- Provider:
sglang - Auth: Optional (depends on your server)
- Default base URL:
http://127.0.0.1:30000/v1
/v1/models):
Local proxies (LM Studio, vLLM, LiteLLM, etc.)
Example (OpenAI‑compatible):- For custom providers,
reasoning,input,cost,contextWindow, andmaxTokensare optional. When omitted, OpenClaw defaults to:reasoning: falseinput: ["text"]cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }contextWindow: 200000maxTokens: 8192
- Recommended: set explicit values that match your proxy/model limits.
- For
api: "openai-completions"on non-native endpoints (any non-emptybaseUrlwhose host is notapi.openai.com), OpenClaw forcescompat.supportsDeveloperRole: falseto avoid provider 400 errors for unsupporteddeveloperroles. - Proxy-style OpenAI-compatible routes also skip native OpenAI-only request
shaping: no
service_tier, no Responsesstore, no prompt-cache hints, no OpenAI reasoning-compat payload shaping, and no hidden OpenClaw attribution headers. - If
baseUrlis empty/omitted, OpenClaw keeps the default OpenAI behavior (which resolves toapi.openai.com). - For safety, an explicit
compat.supportsDeveloperRole: trueis still overridden on non-nativeopenai-completionsendpoints.
CLI examples
Related
- Models — model configuration and aliases
- Model Failover — fallback chains and retry behavior
- Configuration Reference — model config keys
- Providers — per-provider setup guides