Providers

Open Interpreter separates the provider from the model. The active provider decides where requests are sent, how credentials are attached, which wire API is used, and which bundled model metadata seeds the picker.

The source of truth is code, not this table:

  • Built-in runtime providers: codex-rs/model-provider-info/src/lib.rs
  • Generated hosted-provider catalog: codex-rs/model-provider-info/provider_catalog.json
  • Hosted-provider generator inputs: codex-rs/scripts/write_provider_catalog.py and codex-rs/model-provider-info/provider_catalog_overrides.json
  • Model metadata: codex-rs/codex-api/model_compatibility_catalog.json and codex-rs/models-manager/src/provider_catalog_models.rs

Built-In Runtime Providers

These providers exist even before the generated hosted-provider catalog is consulted.

Provider IDNameWire APIAuth
openaiOpenAIresponsesChatGPT sign-in or OpenAI auth manager
amazon-bedrockAmazon BedrockresponsesAWS SigV4 via model_providers.amazon-bedrock.aws
ollamaOllama local OSSresponsesnone
lmstudioLM Studio local OSSresponsesnone

OpenAI also has an onboarding preset named openai_api_key. That preset writes an OpenAI-compatible provider using OPENAI_API_KEY; it is a setup shortcut, not a separate built-in provider id in the runtime provider map.

Wire APIs

wire_api controls the HTTP request shape.

ValueTransportUsed by
responsesOpenAI Responses API style requestsOpenAI, Bedrock, Ollama, LM Studio, custom Responses-compatible providers
chatOpenAI-compatible Chat Completions requestsMost generated hosted providers and chat harnesses
messagesAnthropic Messages requestsAnthropic-style providers and Claude Code harness mode

For custom providers:

[model_providers.example]
name = "Example"
base_url = "https://api.example.com/v1"
env_key = "EXAMPLE_API_KEY"
wire_api = "chat"

Use wire_api = "responses" for OpenAI Responses-compatible providers, wire_api = "chat" for OpenAI-compatible chat-completions providers, and wire_api = "messages" only for Anthropic Messages-compatible providers.

Authentication

Provider auth can come from:

  • env_key, which reads a bearer token from an environment variable.
  • experimental_bearer_token, when embedding a token is unavoidable.
  • command-backed auth, which runs a local command and caches the returned bearer token.
  • aws, only for amazon-bedrock.
  • OpenAI auth manager state for providers that set requires_openai_auth.

Anthropic-style API-key auth uses the x-api-key header and automatically adds anthropic-version: 2023-06-01. Other API-key providers use Authorization: Bearer ....

Command-backed auth example:

[model_providers.example.auth]
command = "example-token"
args = ["print"]
timeout_ms = 5000
refresh_interval_ms = 300000

Generated Hosted Providers

The generated catalog is built from https://models.dev/api.json plus the live Moonshot model list at https://api.moonshot.ai/v1/models. The generator includes providers backed by supported AI SDK packages, excludes unsupported or local-only entries, requires a usable base URL, and keeps only models that advertise tool calling and text output.

The current bundled generated catalog contains these providers:

Provider IDNameWire APIAuth envModels
anthropicAnthropicmessagesANTHROPIC_API_KEY23
openrouterOpenRouterchatOPENROUTER_API_KEY264
groqGroqchatGROQ_API_KEY18
github-modelsGitHub ModelschatGITHUB_TOKEN49
opencodeOpenCode ZenchatOPENCODE_API_KEY61
opencode-goOpenCode GochatOPENCODE_API_KEY14
github-copilotGitHub CopilotchatGITHUB_TOKEN26
poePoechatPOE_API_KEY102
perplexity-agentPerplexity AgentchatPERPLEXITY_API_KEY18
requestyRequestychatREQUESTY_API_KEY37
deepseekDeepSeekchatDEEPSEEK_API_KEY4
moonshotaiMoonshot AIchatMOONSHOT_API_KEY14
moonshotai-cnMoonshot AI (China)chatMOONSHOT_API_KEY7
zhipuaiZhipu AIchatZHIPU_API_KEY12
zaiZ.AIchatZHIPU_API_KEY13
siliconflowSiliconFlowchatSILICONFLOW_API_KEY76
siliconflow-cnSiliconFlow (China)chatSILICONFLOW_CN_API_KEY77
alibabaAlibabachatDASHSCOPE_API_KEY43
alibaba-cnAlibaba (China)chatDASHSCOPE_API_KEY75
stepfunStepFunchatSTEPFUN_API_KEY4
modelscopeModelScopechatMODELSCOPE_API_KEY7
qiniu-aiQiniuchatQINIU_API_KEY81
jiekouJiekou.AIchatJIEKOU_API_KEY58
302ai302.AIchat302AI_API_KEY92
novita-aiNovitaAIchatNOVITA_API_KEY64
fireworks-aiFireworks AIchatFIREWORKS_API_KEY20
nvidiaNvidiachatNVIDIA_API_KEY52
huggingfaceHugging FacechatHF_TOKEN22
chutesChuteschatCHUTES_API_KEY30
ollama-cloudOllama CloudchatOLLAMA_API_KEY36
llamaLlamachatLLAMA_API_KEY7
upstageUpstagechatUPSTAGE_API_KEY3
novaNovachatNOVA_API_KEY2
xiaomiXiaomichatXIAOMI_API_KEY5
abacusAbacuschatABACUS_API_KEY65
abliteration-aiabliteration.aichatABLIT_KEY1
alibaba-coding-planAlibaba Coding PlanchatALIBABA_CODING_PLAN_API_KEY9
alibaba-coding-plan-cnAlibaba Coding Plan (China)chatALIBABA_CODING_PLAN_API_KEY9
ambientAmbientchatAMBIENT_API_KEY2
aurikoAurikochatAURIKO_API_KEY15
bailingBailingchatBAILING_API_TOKEN1
basetenBasetenchatBASETEN_API_KEY14
bergetBerget.AIchatBERGET_API_KEY7
clarifaiClarifaichatCLARIFAI_PAT10
claudinioClaudiniochatCLAUDINIO_API_KEY1
cloudferro-sherlockCloudFerro SherlockchatCLOUDFERRO_SHERLOCK_API_KEY5
cortecsCortecschatCORTECS_API_KEY48
drunD.Run (China)chatDRUN_API_KEY3
digitaloceanDigitalOceanchatDIGITALOCEAN_ACCESS_TOKEN59
dinferenceDInferencechatDINFERENCE_API_KEY5
evrocevrocchatEVROC_API_KEY5
fastrouterFastRouterchatFASTROUTER_API_KEY14
firepassFireworks (Firepass)chatFIREPASS_API_KEY1
friendliFriendlichatFRIENDLI_TOKEN6
frogbotFrogBotchatFROGBOT_API_KEY26
gmicloudGMI CloudchatGMICLOUD_API_KEY8
heliconeHeliconechatHELICONE_API_KEY71
hpc-aiHPC-AIchatHPC_AI_API_KEY3
iflowcniFlowchatIFLOW_API_KEY14
inceptionInceptionchatINCEPTION_API_KEY1
inferenceInferencechatINFERENCE_API_KEY8
io-netIO.NETchatIOINTELLIGENCE_API_KEY17
kiloKilo GatewaychatKILO_API_KEY258
kimi-for-codingKimi For CodingchatKIMI_API_KEY3
kuae-cloud-coding-planKUAE Cloud Coding PlanchatKUAE_API_KEY1
lilacLilacchatLILAC_API_KEY4
llmgatewayLLM GatewaychatLLMGATEWAY_API_KEY156
lucidqueryLucidQuery AIchatLUCIDQUERY_API_KEY2
meganovaMeganovachatMEGANOVA_API_KEY18
minimaxMiniMax (minimax.io)messagesMINIMAX_API_KEY6
minimax-cnMiniMax (minimaxi.com)messagesMINIMAX_API_KEY6
minimax-coding-planMiniMax Token Plan (minimax.io)messagesMINIMAX_API_KEY6
minimax-cn-coding-planMiniMax Token Plan (minimaxi.com)messagesMINIMAX_API_KEY6
mixlayerMixlayerchatMIXLAYER_API_KEY5
moarkMoarkchatMOARK_API_KEY2
nano-gptNanoGPTchatNANO_GPT_API_KEY105
nearaiNEAR AI CloudchatNEARAI_API_KEY29
nebiusNebius Token FactorychatNEBIUS_API_KEY29
neuralwattNeuralwattchatNEURALWATT_API_KEY14
orcarouterOrcaRouterchatORCAROUTER_API_KEY79
ovhcloudOVHcloud AI EndpointschatOVHCLOUD_API_KEY10
qihang-aiQiHangchatQIHANG_API_KEY9
regolo-aiRegolo AIchatREGOLO_API_KEY10
routing-runrouting.runchatROUTING_RUN_API_KEY24
sarvamSarvam AIchatSARVAM_API_KEY2
scalewayScalewaychatSCALEWAY_API_KEY14
stackitSTACKITchatSTACKIT_API_KEY5
submodelsubmodelchatSUBMODEL_INSTAGEN_ACCESS_KEY9
syntheticSyntheticchatSYNTHETIC_API_KEY32
tencent-coding-planTencent Coding Plan (China)chatTENCENT_CODING_PLAN_API_KEY8
tencent-tokenhubTencent TokenHubchatTENCENT_TOKENHUB_API_KEY1
the-grid-aiThe Grid AIchatTHEGRIDAI_API_KEY9
umans-ai-coding-planUmans AI Coding PlanchatUMANS_AI_CODING_PLAN_API_KEY5
vivgridVivgridchatVIVGRID_API_KEY13
vultrVultrchatVULTR_API_KEY5
wafer.aiWaferchatWAFER_API_KEY2
wandbWeights & BiaseschatWANDB_API_KEY18
xiaomi-token-plan-cnXiaomi Token Plan (China)chatXIAOMI_API_KEY5
xiaomi-token-plan-amsXiaomi Token Plan (Europe)chatXIAOMI_API_KEY5
xiaomi-token-plan-sgpXiaomi Token Plan (Singapore)chatXIAOMI_API_KEY5
xpersonaXpersonachatXPERSONA_API_KEY1
zai-coding-planZ.AI Coding PlanchatZHIPU_API_KEY5
zenmuxZenMuxchatZENMUX_API_KEY96
zhipuai-coding-planZhipu AI Coding PlanchatZHIPU_API_KEY5

Model Picker Behavior

The picker uses provider metadata in two passes:

  1. It asks the active provider's /models endpoint when possible.
  2. It seeds or supplements results from the bundled provider catalog when the provider matches by Anthropic identity, base URL, provider name, or auth env var.

Generated model entries carry display name, description, context window, reasoning control, input modalities, and priority. The generator does not invent reasoning levels from a boolean reasoning flag; those controls come from compatibility metadata or explicit overrides.

Default Harness Selection

When no harness is explicitly configured, Open Interpreter may choose a native harness mode from the provider/model family:

MatchDefault harness
wire_api = "messages", Anthropic provider/name/base URL, or claude model idsclaude-code
kimi, moonshot, api.kimi.com, api.moonshot.ai, or api.moonshot.cnkimi-cli
qwen, qwq, dashscope, or DashScope compatible-mode base URLsqwen-code
deepseek or api.deepseek.comdeepseek-tui

You can override this with harness = "..." in config. See Harness for route compatibility.

Regenerating The Catalog

Run this from codex-rs when provider source data changes:

python3 scripts/write_provider_catalog.py
python3 scripts/write_model_compatibility_catalog.py

The Moonshot live source requires MOONSHOT_API_KEY or KIMI_API_KEY. Missing auth is a generator failure, not a reason to silently keep stale data.