{
  "$schema": "./registry.schema.json",
  "version": 1,
  "updatedAt": "2026-08-29T12:00:00Z",
  "providers": [
    {
      "id": "anthropic-subscription",
      "displayName": "Claude Subscription",
      "kind": "anthropic-passthrough",
      "route": "direct",
      "credentialClass": "subscription",
      "baseUrl": "https://api.anthropic.com",
      "auth": {
        "header": "none"
      },
      "models": [
        {
          "id": "claude-fable-5-1",
          "displayName": "Claude Fable 5.1",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "claude-opus-5",
          "displayName": "Claude Opus 5",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "claude-opus-5-5",
          "displayName": "Claude Opus 5.5",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "claude-sonnet-5-5",
          "displayName": "Claude Sonnet 5.5",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "claude-haiku-5-5",
          "displayName": "Claude Haiku 5.5",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        }
      ],
      "defaultModel": "claude-opus-5",
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": true,
        "promptCaching": true,
        "promptCacheTtlSec": 300
      },
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://code.claude.com/docs",
      "notes": "Runs the genuine Claude Code engine DIRECT to api.anthropic.com with the user's own OAuth token (claude setup-token). Never proxied through the OonaCode gateway. Single active host per subscription.",
      "adminGroup": "anthropic",
      "clientGroup": "anthropic",
      "recordLabel": "Subscription"
    },
    {
      "id": "anthropic",
      "displayName": "Claude",
      "effortLevels": ["low", "medium", "high", "xhigh", "max", "ultracode"],
      "kind": "anthropic-passthrough",
      "route": "gateway",
      "credentialClass": "api_key",
      "baseUrl": "https://api.anthropic.com",
      "messagesPath": "/v1/messages",
      "modelsPath": "/v1/models",
      "auth": {
        "header": "x-api-key"
      },
      "models": [
        {
          "id": "claude-fable-5-1",
          "displayName": "Claude Fable 5.1",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 10,
          "outputPricePerM": 50
        },
        {
          "id": "claude-opus-5",
          "displayName": "Claude Opus 5",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 5,
          "outputPricePerM": 25
        },
        {
          "id": "claude-opus-5-5",
          "displayName": "Claude Opus 5.5",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 4,
          "outputPricePerM": 20,
          "notes": "The Opus after Opus 5, cheaper than it: $4 / $20 per MTok, cache reads $0.20, 1M context, 128K output (Anthropic's model table, 2026-09-23). Needs Claude Code 2.1.280 or newer: Anthropic answers any request carrying an older engine's identity with 400 'version 2.1.280 or newer is required', on the API key and the subscription alike (measured 2026-09-23 with engine 2.1.272), which is why it arrived with the move to Agent SDK 0.3.280. Thinking cannot be disabled and forced tool_choice is refused; its effort default is medium, one below Opus 5's high. Listed AFTER Opus 5 on purpose, on both Claude entries: neither declares modelAliases, so the 'opus' family (ANTHROPIC_DEFAULT_OPUS_MODEL, and the word 'opus' asked of the pool) resolves to the first listed model whose id says opus, and it stays on Opus 5, the default (2026-09-23 review). An old Opus ID the pool does not carry is refused pool_model_unknown since 2026-09-28, never answered by Opus 5.",
          "defaultEffort": "medium"
        },
        {
          "id": "claude-sonnet-5-5",
          "displayName": "Claude Sonnet 5.5",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2,
          "outputPricePerM": 10,
          "notes": "The Sonnet after Sonnet 5, released 2026-09-28, at Sonnet 5's prices: $2 / $10 per MTok, cache reads $0.20, 5-minute cache write $2.50; 1M context, 128K output (Anthropic's model page and price list, read 2026-09-29). It REPLACES Sonnet 5 here (owner, 2026-09-29: 'add sonnet 5.5 same as opus 5.5 and delete old sonnet-s model'): Sonnet 5 is no longer listed, and its id is an admin alias of this row (migration 0140), so a chat or a program still naming claude-sonnet-5 is served — and billed — as Sonnet 5.5. Being the only Sonnet listed, it is what the 'sonnet' family word resolves to. Engine 2.1.280 does not know the id but serves it (probed from the production gateway 2026-09-29: both subscription tokens 200, with and without the 1M beta; the API key knows it and has no credit): it treats it as Sonnet 5 and sends adaptive thinking, never a disabled thinking block (which Sonnet 5.5 refuses) — measured against the real engine. Forced tool_choice is refused by the model; the engine's WebSearch sub-request sends 'auto'."
        },
        {
          "id": "claude-haiku-5-5",
          "displayName": "Claude Haiku 5.5",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 0.1,
          "outputPricePerM": 0.5,
          "notes": "The Haiku after Haiku 4.5, released 2026-10-07, at $0.10 / $0.50 per MTok for prompts up to 100k, cache reads $0.01, 5-minute cache write $0.125; 1M context, 128K output (Anthropic's model page and price list, read 2026-10-08). It REPLACES Haiku 4.5 here: Haiku 4.5 is no longer listed, and its id is an admin alias of this row (migration 0179), so a chat or a program still naming claude-haiku-4-5 is served — and billed — as Haiku 5.5. Being the only Haiku listed, it is what the 'haiku' family word resolves to. Engine 2.1.280 does not know the id but serves it (probed from the production gateway 2026-10-08: subscription token 200, both with adaptive thinking and disabled thinking).",
          "defaultEffort": "medium"
        }
      ],
      "defaultModel": "claude-opus-5",
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": true,
        "promptCaching": true,
        "promptCacheTtlSec": 300
      },
      "passthrough": {
        "stripCacheControl": false,
        "allowedBetas": ["*"],
        "anthropicVersion": "2023-06-01"
      },
      "directCapable": true,
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://platform.claude.com/docs",
      "credentialVariants": [
        {
          "id": "payg",
          "label": "Pay-as-you-go (API key)",
          "header": "x-api-key",
          "keyFormat": "sk-ant-api03-...",
          "operatorOnly": true
        },
        {
          "id": "token-plan",
          "label": "Claude subscription (long-lived token)",
          "header": "authorization-bearer",
          "extraHeaders": {
            "anthropic-beta": "oauth-2025-04-20"
          },
          "requiresClaudeCodeIdentity": true,
          "keyFormat": "sk-ant-oat01-...",
          "claudeCodeShape": {
            "betas": "claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,prompt-caching-scope-2026-01-05,effort-2025-11-24",
            "userAgent": "claude-cli/2.1.301 (external, sdk-ts)",
            "billingHeader": "x-anthropic-billing-header: cc_version=2.1.301; cc_entrypoint=sdk-ts;",
            "headers": {
              "x-app": "cli"
            }
          },
          "notes": "The token `claude setup-token` prints. Anthropic honours it only for requests shaped like its own client: the OAuth + claude-code betas and the attribution block as the first `system` entry (measured 2026-09-01 as 'needs the Claude Code system prompt' — the engine's system prompt CARRIES that block, which is what actually mattered; confirmed 2026-09-13 against claude.exe 2.1.245 and the aicontrol server, which serves plain callers this way in production). The engine's own requests already have the shape; any other caller's request is given it by the gateway (`claudeCodeShape`), so the subscription serves everyone first and the pay-as-you-go key is the fallback when this record is full or cooling. Bump `cc_version` / `userAgent` with the engine.",
          "operatorOnly": true
        }
      ],
      "recordLabel": "API",
      "defaultEffort": "high"
    },
    {
      "id": "openai",
      "displayName": "OpenAI",
      "effortLevels": ["low", "medium", "high"],
      "kind": "openai-compatible",
      "route": "gateway",
      "credentialClass": "api_key",
      "baseUrl": "https://api.openai.com",
      "messagesPath": "/v1/chat/completions",
      "modelsPath": "/v1/models",
      "auth": {
        "header": "authorization-bearer"
      },
      "models": [
        {
          "id": "gpt-5",
          "displayName": "GPT-5",
          "contextWindow": 400000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "gpt-5-mini",
          "displayName": "GPT-5 mini",
          "contextWindow": 400000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "gpt-4.1",
          "displayName": "GPT-4.1",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": false,
          "supportsVision": true,
          "effortLevels": []
        },
        {
          "id": "o4-mini",
          "displayName": "o4-mini",
          "contextWindow": 200000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        }
      ],
      "defaultModel": "gpt-5",
      "modelAliases": {
        "opus": "gpt-5",
        "sonnet": "gpt-5",
        "haiku": "gpt-5-mini"
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": true,
        "promptCacheTtlSec": 300
      },
      "translate": {
        "maxTokensParam": "max_completion_tokens",
        "reasoningEffortFromBudget": true,
        "reasoningContentField": null,
        "supportsParallelToolCalls": true,
        "systemRole": "developer",
        "streamIncludeUsage": true
      },
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://platform.openai.com/docs",
      "defaultEffort": "medium"
    },
    {
      "id": "openai-subscription",
      "displayName": "ChatGPT Subscription (Codex)",
      "effortLevels": ["low", "medium", "high", "xhigh", "max"],
      "kind": "openai-compatible",
      "route": "direct",
      "credentialClass": "subscription",
      "baseUrl": "https://chatgpt.com/backend-api/codex",
      "messagesPath": "/responses",
      "defaultModel": "gpt-6-luna",
      "auth": {
        "header": "authorization-bearer",
        "extraHeaders": {
          "originator": "codex_exec",
          "user-agent": "codex_exec/0.164.0"
        }
      },
      "models": [
        {
          "id": "gpt-6-luna",
          "displayName": "GPT-6 Luna",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "notes": "Codex's first choice (priority 4 in its model list). Served from the person's own ChatGPT plan through the Codex backend; no per-token price - the plan's 5-hour and weekly windows are what it costs.",
          "defaultEffort": "medium"
        },
        {
          "id": "gpt-5.6-terra",
          "displayName": "GPT-5.6 Terra",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "notes": "Served from the person's own ChatGPT plan through the Codex backend; no per-token price - the plan's 5-hour and weekly windows are what it costs.",
          "defaultEffort": "medium"
        },
        {
          "id": "gpt-5.6-luna",
          "displayName": "GPT-5.6 Luna",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "notes": "Served from the person's own ChatGPT plan through the Codex backend; no per-token price - the plan's 5-hour and weekly windows are what it costs.",
          "defaultEffort": "medium"
        },
        {
          "id": "gpt-6.1-sol",
          "displayName": "GPT-6.1 Sol",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "notes": "Listed by the Codex backend for the operator's ChatGPT account on 2026-10-13 and answered a real turn through the genuine Codex CLI. Served from the person's own ChatGPT plan through the Codex backend; no per-token price - the plan's 5-hour and weekly windows are what it costs. The Codex backend takes 500k of context. Codex ultra effort is refused by the backend.",
          "defaultEffort": "low"
        },
        {
          "id": "gpt-6-sol",
          "displayName": "GPT-6 Sol",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "notes": "Listed by the Codex backend for the operator's ChatGPT account on 2026-10-13 and answered a real turn through the genuine Codex CLI. Served from the person's own ChatGPT plan through the Codex backend; no per-token price - the plan's 5-hour and weekly windows are what it costs. The Codex backend takes 272k of context. Codex ultra effort is refused by the backend.",
          "defaultEffort": "medium"
        },
        {
          "id": "gpt-6-astra",
          "displayName": "GPT-6 Astra",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "notes": "Listed by the Codex backend for the operator's ChatGPT account on 2026-10-13 and answered a real turn through the genuine Codex CLI. Served from the person's own ChatGPT plan through the Codex backend; no per-token price - the plan's 5-hour and weekly windows are what it costs. The Codex backend takes 272k of context. Codex ultra effort is refused by the backend.",
          "defaultEffort": "low"
        },
        {
          "id": "gpt-5.6-sol",
          "displayName": "GPT-5.6 Sol",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "notes": "Listed by the Codex backend for the operator's ChatGPT account on 2026-10-13 and answered a real turn through the genuine Codex CLI. Served from the person's own ChatGPT plan through the Codex backend; no per-token price - the plan's 5-hour and weekly windows are what it costs. The Codex backend takes 272k of context. Codex ultra effort is refused by the backend.",
          "defaultEffort": "low"
        }
      ],
      "rateLimits": {
        "maxConcurrent": 4,
        "requestsPerMinute": 60
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": true
      },
      "translate": {
        "wire": "responses",
        "systemRole": "developer",
        "reasoningEffortFromBudget": true,
        "supportsParallelToolCalls": true
      },
      "phase": 1,
      "enabled": true,
      "clientGroup": "openai",
      "adminGroup": "openai",
      "recordLabel": "Subscription",
      "subscriptionLogin": {
        "type": "openai-device",
        "deviceAuthorizationUrl": "https://auth.openai.com/api/accounts/deviceauth/usercode",
        "pollUrl": "https://auth.openai.com/api/accounts/deviceauth/token",
        "tokenUrl": "https://auth.openai.com/oauth/token",
        "verificationUri": "https://auth.openai.com/codex/device",
        "redirectUri": "https://auth.openai.com/deviceauth/callback",
        "clientId": "app_EMoamEEZ73f0CkXaXp7hrann",
        "signInLabel": "Sign in with ChatGPT"
      },
      "docsUrl": "https://developers.openai.com/codex",
      "notes": "The user's OWN ChatGPT plan (Plus, Pro, Team), signed in with OpenAI's device flow as `codex login --device-auth` runs it (docs/codex-engine.md section 6, 2026-09-19): the host asks auth.openai.com for a code, the person types it at auth.openai.com/codex/device, the host polls, exchanges the code with the verifier OpenAI's server minted, and keeps the access + refresh pair in the vault, refreshed two minutes before expiry. The backend a ChatGPT token belongs to is chatgpt.com/backend-api/codex, which speaks ONLY the Responses API (translate.wire = responses) and wants the chatgpt-account-id header (a claim of the id token, kept beside the pair), an originator and the responses=experimental beta - so the engine reaches it through the host's loopback upstream, which translates every request. route=direct: the token never reaches the gateway (guardrail 4) and this entry seeds no server rows. The client id is Codex's PUBLIC one; OpenAI names third-party harnesses (OpenCode, pi) as tolerated users of a ChatGPT plan and the owner accepted that standing on 2026-09-19 - the residual risk is OpenAI changing its mind. Models, context windows and effort levels are what Codex's own model list answered for a ChatGPT account (0.162.1 on 2026-10-11, 0.163.0 on 2026-10-16); gpt-5.2 (2026-10-11) and gpt-5.5 (2026-10-16, after Codex 0.163.0 dropped it from the list) answer 'not supported when using Codex with a ChatGPT account'; each level was sent and answered 200, and minimal and Codex's own ultra are refused by every model. A plan is flat-rate, so no prices. Its x-codex-primary/secondary-used-percent answer headers are the plan's usage."
    },
    {
      "id": "openai-codex",
      "displayName": "OpenAI Codex (ChatGPT plan)",
      "effortLevels": ["low", "medium", "high", "xhigh", "max"],
      "kind": "openai-compatible",
      "route": "gateway",
      "credentialClass": "api_key",
      "poolOnly": true,
      "baseUrl": "https://chatgpt.com/backend-api/codex",
      "messagesPath": "/responses",
      "auth": {
        "header": "authorization-bearer",
        "extraHeaders": {
          "originator": "codex_exec",
          "user-agent": "codex_exec/0.164.0"
        }
      },
      "defaultModel": "gpt-6-luna",
      "models": [
        {
          "id": "gpt-6-luna",
          "displayName": "GPT-6 Luna",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Codex's default (priority 4 in its model list). OpenAI API list price $0.10 / $0.01 cached / $0.50 per 1M (developers.openai.com/api/docs/models/gpt-6-luna, 2026-10-12) — the catalogue cost cells. The Codex backend takes 272k of its 1.05M window.",
          "defaultEffort": "medium"
        },
        {
          "id": "gpt-5.6-terra",
          "displayName": "GPT-5.6 Terra",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "OpenAI API list price $2 / $0.20 cached / $12 per 1M (developers.openai.com/api/docs/models/gpt-5.6-terra, 2026-10-12). The Codex backend takes 272k.",
          "defaultEffort": "medium"
        },
        {
          "id": "gpt-5.6-luna",
          "displayName": "GPT-5.6 Luna",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "OpenAI API list price $0.20 / $0.02 cached / $1.20 per 1M (developers.openai.com/api/docs/models/gpt-5.6-luna, 2026-10-12). The Codex backend takes 272k.",
          "defaultEffort": "medium"
        },
        {
          "id": "gpt-6.1-sol",
          "displayName": "GPT-6.1 Sol",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Listed by the Codex backend for the operator's ChatGPT account on 2026-10-13 and answered a real turn through the genuine Codex CLI. OpenAI API list price $2 / $0.1 cached / $10 per 1M (developers.openai.com/api/docs/models/gpt-6.1-sol, 2026-10-13). The Codex backend takes 500k of context. Codex ultra effort is refused by the backend.",
          "defaultEffort": "low"
        },
        {
          "id": "gpt-6-sol",
          "displayName": "GPT-6 Sol",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Listed by the Codex backend for the operator's ChatGPT account on 2026-10-13 and answered a real turn through the genuine Codex CLI. OpenAI API list price $2 / $0.2 cached / $10 per 1M (developers.openai.com/api/docs/models/gpt-6-sol, 2026-10-13). The Codex backend takes 272k of context. Codex ultra effort is refused by the backend.",
          "defaultEffort": "medium"
        },
        {
          "id": "gpt-6-astra",
          "displayName": "GPT-6 Astra",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Listed by the Codex backend for the operator's ChatGPT account on 2026-10-13 and answered a real turn through the genuine Codex CLI. OpenAI API list price $10 / $1 cached / $50 per 1M (developers.openai.com/api/docs/models/gpt-6-astra, 2026-10-13). The Codex backend takes 272k of context. Codex ultra effort is refused by the backend.",
          "defaultEffort": "low"
        },
        {
          "id": "gpt-5.6-sol",
          "displayName": "GPT-5.6 Sol",
          "contextWindow": 272000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Listed by the Codex backend for the operator's ChatGPT account on 2026-10-13 and answered a real turn through the genuine Codex CLI. OpenAI API list price $4 / $0.4 cached / $20 per 1M (developers.openai.com/api/docs/models/gpt-5.6-sol, 2026-10-13). The Codex backend takes 272k of context. Codex ultra effort is refused by the backend.",
          "defaultEffort": "low"
        }
      ],
      "modelAliases": {
        "opus": "gpt-5.6-terra",
        "sonnet": "gpt-5.6-terra",
        "haiku": "gpt-6-luna"
      },
      "rateLimits": {
        "maxConcurrent": 4,
        "requestsPerMinute": 60
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": true
      },
      "translate": {
        "wire": "responses",
        "systemRole": "developer",
        "reasoningEffortFromBudget": true,
        "supportsParallelToolCalls": true
      },
      "phase": 1,
      "enabled": true,
      "adminGroup": "openai",
      "recordLabel": "Subscription",
      "docsUrl": "https://developers.openai.com/codex",
      "references": [
        {
          "label": "Codex CLI (open source, Apache-2.0)",
          "url": "https://github.com/openai/codex",
          "kind": "docs"
        },
        {
          "label": "OpenAI API model pages (the cost cells)",
          "url": "https://developers.openai.com/api/docs/models",
          "kind": "pricing"
        },
        {
          "label": "OpenAI terms of use",
          "url": "https://openai.com/policies/terms-of-use/",
          "kind": "other"
        }
      ],
      "notes": "OPERATOR POOL ONLY (owner, 2026-10-12: \"in the admin we need to add subscription tab … install codex cli on server like supergrok and use native login flow. but the user requests not goes to codex cli they already translated and proxy to openai\"). The operator's own ChatGPT plan, signed in from Admin → Providers → OpenAI → Subscription by a REAL Codex CLI on the server (`codex login --device-auth` in a private CODEX_HOME; packages/gateway/src/codex/*). The credential row is a POINTER; the access token and the account id are read from Codex's own auth.json per request, and only Codex refreshes them (app-server getAuthStatus refreshToken:true). Chats are NOT run through Codex: the engine's Anthropic request is translated to the Responses wire (@oonacode/translate responses-*.ts) and sent to chatgpt.com/backend-api/codex with Codex's identity headers and chatgpt-account-id. A ChatGPT plan is a consumer subscription and serving other people from it is against OpenAI's terms — the owner's call, as for the Claude and SuperGrok subscriptions. Administered under OpenAI (adminGroup): its record is the OpenAI page's Subscription tab. A user's OWN ChatGPT plan is openai-subscription, direct from their PC. docs/codex-engine.md §8.",
      "credentialVariants": [
        {
          "id": "token-plan",
          "label": "ChatGPT subscription (Codex on the server)",
          "header": "authorization-bearer",
          "operatorOnly": true,
          "baseUrl": "https://chatgpt.com/backend-api/codex",
          "codexLogin": {
            "type": "codex-server",
            "signInLabel": "Sign in with ChatGPT (Codex on the server)"
          },
          "notes": "Signed in by the server's own Codex CLI (version pinned in @oonacode/shared CODEX_TESTED_VERSION, installed at boot from OpenAI's npm package into the codexdata volume, sha512-verified). The identity headers are the ones the real Codex sends (recorded 2026-10-11, docs/codex-engine.md §7) — bump the user-agent version with Codex."
        }
      ]
    },
    {
      "id": "muse",
      "displayName": "Meta Muse (Muse Code plan)",
      "effortLevels": ["low", "medium", "high", "xhigh", "max"],
      "kind": "openai-compatible",
      "route": "gateway",
      "credentialClass": "api_key",
      "poolOnly": true,
      "contributorMode": {
        "suffix": "-contributor",
        "summary": "Meta lists every Muse model twice; the -contributor twin is cheaper, and in exchange Meta may use the content sent to it for product improvement and to train its models."
      },
      "baseUrl": "https://api.meta.ai/v1",
      "messagesPath": "/responses",
      "auth": {
        "header": "authorization-bearer",
        "extraHeaders": {
          "x-client-id": "tbh:exec",
          "user-agent": "muse-build/1.4.13 (non-interactive; linux-x86_64; build 39490bd065c800195489caec34473582f7650b54)"
        }
      },
      "defaultModel": "muse-spark-1.3",
      "models": [
        {
          "id": "muse-spark-1.3",
          "displayName": "Muse Spark 1.3",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Meta may use what you send to this model, and its answers, to train its models (the pool reaches it over a Meta subscription that Meta treats as Contributor use) - do not send confidential or personal data. Meta's newest Spark (released 2026-09-02). Meta's list price $1.25 input / $0.15 cached / $4.25 output per 1M tokens, no long-context premium (dev.meta.ai/docs/pricing-rate-limits, 2026-10-13)."
        },
        {
          "id": "muse-spark-1.2",
          "displayName": "Muse Spark 1.2",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "maxOutputTokens": 128000,
          "notes": "Meta may use what you send to this model, and its answers, to train its models (the pool reaches it over a Meta subscription that Meta treats as Contributor use) - do not send confidential or personal data. Muse Code's earlier default; no max effort. Meta's list price $1.25 input / $0.15 cached / $4.25 output per 1M tokens, no long-context premium (dev.meta.ai/docs/pricing-rate-limits, 2026-10-13)."
        },
        {
          "id": "muse-wonder-1.0",
          "displayName": "Muse Wonder 1.0",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Meta may use what you send to this model, and its answers, to train its models (the pool reaches it over a Meta subscription that Meta treats as Contributor use) - do not send confidential or personal data. Meta's larger model (released 2026-10-12). Meta's list price $4 input / $0.20 cached / $20 output per 1M tokens (dev.meta.ai/docs/pricing-rate-limits, 2026-10-13)."
        },
        {
          "id": "muse-wonder-full-1.0",
          "displayName": "Muse Wonder Full 1.0",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Meta may use what you send to this model, and its answers, to train its models (the pool reaches it over a Meta subscription that Meta treats as Contributor use) - do not send confidential or personal data. The strongest Muse model (Power/Maximum plans). Meta publishes no price for it; the pool row uses Wonder's as an upper bound. "
        },
        {
          "id": "muse-spark-1.3-contributor",
          "displayName": "Muse Spark 1.3 (contributor)",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "maxOutputTokens": 128000,
          "notes": "Meta may use what you send to this model, and its answers, to train its models (the pool reaches it over a Meta subscription that Meta treats as Contributor use) - do not send confidential or personal data. Cheaper: Meta's contributor-mode price $0.10 input / $0.002 cached / $0.20 output per 1M tokens (dev.meta.ai/docs/pricing-rate-limits, 2026-10-13); contributor rate limit 150 RPM / 3M TPM. Contributor mode: Meta may use the content sent for product improvement (the owner accepted this for the pool, 2026-10-13); sent with the model id's -contributor suffix and the x-tbh-contributor-mode header."
        },
        {
          "id": "muse-spark-1.2-contributor",
          "displayName": "Muse Spark 1.2 (contributor)",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "maxOutputTokens": 128000,
          "notes": "Meta may use what you send to this model, and its answers, to train its models (the pool reaches it over a Meta subscription that Meta treats as Contributor use) - do not send confidential or personal data. Cheaper: Meta's contributor-mode price $0.10 input / $0.002 cached / $0.20 output per 1M tokens; no max effort. Contributor mode: Meta may use the content sent for product improvement (the owner accepted this for the pool, 2026-10-13); sent with the model id's -contributor suffix and the x-tbh-contributor-mode header."
        },
        {
          "id": "muse-wonder-1.0-contributor",
          "displayName": "Muse Wonder 1.0 (contributor)",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Meta may use what you send to this model, and its answers, to train its models (the pool reaches it over a Meta subscription that Meta treats as Contributor use) - do not send confidential or personal data. Meta lists no contributor price for Wonder; the pool row uses Wonder's standard price ($4 / $0.20 / $20) as an upper bound. Contributor mode: Meta may use the content sent for product improvement (the owner accepted this for the pool, 2026-10-13); sent with the model id's -contributor suffix and the x-tbh-contributor-mode header."
        },
        {
          "id": "muse-wonder-full-1.0-contributor",
          "displayName": "Muse Wonder Full 1.0 (contributor)",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Meta may use what you send to this model, and its answers, to train its models (the pool reaches it over a Meta subscription that Meta treats as Contributor use) - do not send confidential or personal data. Meta lists no price for Wonder Full or its contributor twin; the pool row uses Wonder's standard price as an upper bound. Contributor mode: Meta may use the content sent for product improvement (the owner accepted this for the pool, 2026-10-13); sent with the model id's -contributor suffix and the x-tbh-contributor-mode header."
        }
      ],
      "modelAliases": {
        "opus": "muse-wonder-full-1.0",
        "sonnet": "muse-spark-1.3",
        "haiku": "muse-spark-1.2"
      },
      "rateLimits": {
        "maxConcurrent": 4,
        "requestsPerMinute": 60
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": true
      },
      "translate": {
        "wire": "responses",
        "systemRole": "developer",
        "reasoningEffortFromBudget": true,
        "supportsParallelToolCalls": true
      },
      "phase": 1,
      "enabled": true,
      "recordLabel": "Subscription",
      "docsUrl": "https://dev.meta.ai/docs/muse-code",
      "references": [
        {
          "label": "Muse Code (Meta Model API docs)",
          "url": "https://dev.meta.ai/docs/muse-code",
          "kind": "docs"
        },
        {
          "label": "Pricing and rate limits (the cost cells)",
          "url": "https://dev.meta.ai/docs/pricing-rate-limits",
          "kind": "pricing"
        },
        {
          "label": "Muse Code subscriptions",
          "url": "https://dev.meta.ai/docs/muse-code/subscriptions",
          "kind": "other"
        }
      ],
      "notes": "OPERATOR POOL ONLY (owner, 2026-10-13: \"integrate into oonacode … muse and codex … on the oonacode server in the pool list, all models … implement authentication flow on the server for both … similar to supergrok and codex with translation layer\"). The operator's own Meta Muse Code subscription, signed in from Admin → Providers → Meta Muse by a REAL Muse CLI on the server (`muse login` in a private HOME; packages/gateway/src/muse/*). The credential row is a POINTER; the static api_key a browser sign-in mints is read from Muse's own ~/.config/muse/auth.json per request (there is no refresh token and no expiry). Chats are NOT run through Muse: the engine's Anthropic request is translated to the Responses wire (@oonacode/translate responses-*.ts — the wire muse itself speaks, POST /v1/responses) and sent to api.meta.ai with Muse's identity headers (recorded 2026-10-13 through a loopback recorder). The pool serves the -contributor ids too (owner, 2026-10-13: cheaper; Muse's contributor mode lets Meta use the content for product improvement, accepted for the pool); a request for one carries x-tbh-contributor-mode: 1 like the CLI's, any other model does not. Meta's subscription terms say the credential is for use with Muse Code only; serving other people from it is the owner's call (2026-10-13), as for the Claude, SuperGrok and ChatGPT plans. A user's OWN Muse key is muse-subscription, direct from their PC. The model list is what GET api.meta.ai/muse-code/models answered for the owner's account on 2026-10-13 (muse-image-1.0 is hidden and image-only; the contributor twins are left out). docs/muse-engine.md.",
      "credentialVariants": [
        {
          "id": "token-plan",
          "label": "Muse Code subscription (Muse on the server)",
          "header": "authorization-bearer",
          "operatorOnly": true,
          "baseUrl": "https://api.meta.ai/v1",
          "museLogin": {
            "type": "muse-server",
            "signInLabel": "Sign in with Meta (Muse on the server)"
          },
          "notes": "Signed in by the server's own Muse CLI (version pinned in @oonacode/shared MUSE_TESTED_VERSION, installed at boot from Meta's download endpoint into the musedata volume, SHA-256-verified against Meta's manifest). The identity headers are the ones the real Muse sends (recorded 2026-10-13) — bump the user-agent version with Muse."
        }
      ],
      "defaultEffort": "high"
    },
    {
      "id": "muse-subscription",
      "displayName": "Meta Muse Subscription",
      "effortLevels": ["low", "medium", "high", "xhigh", "max"],
      "kind": "openai-compatible",
      "route": "direct",
      "credentialClass": "subscription",
      "baseUrl": "https://api.meta.ai/v1",
      "messagesPath": "/responses",
      "defaultModel": "muse-spark-1.3",
      "auth": {
        "header": "authorization-bearer",
        "extraHeaders": {
          "x-client-id": "tbh:exec",
          "user-agent": "muse-build/1.4.13 (non-interactive; linux-x86_64; build 39490bd065c800195489caec34473582f7650b54)"
        }
      },
      "models": [
        {
          "id": "muse-spark-1.3",
          "displayName": "Muse Spark 1.3",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Served from the person's own Muse subscription key through Meta's Responses API (api.meta.ai/v1/responses); the plan's 5-hour windows are what it costs. Meta's newest Spark (released 2026-09-02). "
        },
        {
          "id": "muse-spark-1.2",
          "displayName": "Muse Spark 1.2",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "maxOutputTokens": 128000,
          "notes": "Served from the person's own Muse subscription key through Meta's Responses API (api.meta.ai/v1/responses); the plan's 5-hour windows are what it costs. Muse Code's earlier default; no max effort. "
        },
        {
          "id": "muse-wonder-1.0",
          "displayName": "Muse Wonder 1.0",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Served from the person's own Muse subscription key through Meta's Responses API (api.meta.ai/v1/responses); the plan's 5-hour windows are what it costs. Meta's larger model (released 2026-10-12). "
        },
        {
          "id": "muse-wonder-full-1.0",
          "displayName": "Muse Wonder Full 1.0",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Served from the person's own Muse subscription key through Meta's Responses API (api.meta.ai/v1/responses); the plan's 5-hour windows are what it costs. The strongest Muse model (Power/Maximum plans). Meta publishes no price for it; the pool row uses Wonder's as an upper bound. "
        },
        {
          "id": "muse-spark-1.3-contributor",
          "displayName": "Muse Spark 1.3 (contributor)",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "maxOutputTokens": 128000,
          "notes": "Served from the person's own Muse subscription key through Meta's Responses API (api.meta.ai/v1/responses); the plan's 5-hour windows are what it costs. Cheaper: Meta's contributor-mode price $0.10 input / $0.002 cached / $0.20 output per 1M tokens (dev.meta.ai/docs/pricing-rate-limits, 2026-10-13); contributor rate limit 150 RPM / 3M TPM. Contributor mode: Meta may use the content sent for product improvement (the owner accepted this for the pool, 2026-10-13); sent with the model id's -contributor suffix and the x-tbh-contributor-mode header."
        },
        {
          "id": "muse-spark-1.2-contributor",
          "displayName": "Muse Spark 1.2 (contributor)",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "maxOutputTokens": 128000,
          "notes": "Served from the person's own Muse subscription key through Meta's Responses API (api.meta.ai/v1/responses); the plan's 5-hour windows are what it costs. Cheaper: Meta's contributor-mode price $0.10 input / $0.002 cached / $0.20 output per 1M tokens; no max effort. Contributor mode: Meta may use the content sent for product improvement (the owner accepted this for the pool, 2026-10-13); sent with the model id's -contributor suffix and the x-tbh-contributor-mode header."
        },
        {
          "id": "muse-wonder-1.0-contributor",
          "displayName": "Muse Wonder 1.0 (contributor)",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Served from the person's own Muse subscription key through Meta's Responses API (api.meta.ai/v1/responses); the plan's 5-hour windows are what it costs. Meta lists no contributor price for Wonder; the pool row uses Wonder's standard price ($4 / $0.20 / $20) as an upper bound. Contributor mode: Meta may use the content sent for product improvement (the owner accepted this for the pool, 2026-10-13); sent with the model id's -contributor suffix and the x-tbh-contributor-mode header."
        },
        {
          "id": "muse-wonder-full-1.0-contributor",
          "displayName": "Muse Wonder Full 1.0 (contributor)",
          "contextWindow": 1007997,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "effortLevels": ["low", "medium", "high", "xhigh", "max"],
          "maxOutputTokens": 128000,
          "notes": "Served from the person's own Muse subscription key through Meta's Responses API (api.meta.ai/v1/responses); the plan's 5-hour windows are what it costs. Meta lists no price for Wonder Full or its contributor twin; the pool row uses Wonder's standard price as an upper bound. Contributor mode: Meta may use the content sent for product improvement (the owner accepted this for the pool, 2026-10-13); sent with the model id's -contributor suffix and the x-tbh-contributor-mode header."
        }
      ],
      "rateLimits": {
        "maxConcurrent": 4,
        "requestsPerMinute": 60
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": true
      },
      "translate": {
        "wire": "responses",
        "systemRole": "developer",
        "reasoningEffortFromBudget": true,
        "supportsParallelToolCalls": true
      },
      "phase": 1,
      "enabled": true,
      "museCliLogin": {
        "type": "muse-cli",
        "signInLabel": "Sign in with Meta"
      },
      "adminGroup": "muse",
      "recordLabel": "Subscription",
      "docsUrl": "https://dev.meta.ai/docs/muse-code",
      "notes": "The user's OWN Meta Muse key — a Muse Code subscription key (minted by `muse login`) or a Meta Model API key — kept in the vault and used straight from the PC (guardrail 4; the gateway is never on the path and this entry seeds no server rows). Muse speaks the OpenAI Responses API at api.meta.ai/v1/responses, so the engine reaches it through the host's loopback upstream, which translates every request (translate.wire = responses) and presents Muse's identity headers. Meta's terms: a subscription key is for use with Muse Code only — that is the person's standing, as for the other consumer plans. Models and limits are what Meta's own model list answered on 2026-10-13. docs/muse-engine.md.",
      "defaultEffort": "high"
    },
    {
      "id": "xai",
      "displayName": "xAI (Grok)",
      "kind": "anthropic-passthrough",
      "route": "gateway",
      "credentialClass": "api_key",
      "baseUrl": "https://api.x.ai",
      "messagesPath": "/v1/messages",
      "modelsPath": "/v1/models",
      "auth": {
        "header": "authorization-bearer"
      },
      "models": [
        {
          "id": "grok-4.7",
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "displayName": "Grok 4.7",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 4,
          "outputPricePerM": 12,
          "notes": "xAI's newest frontier model (SuperGrok's proxy lists it alone, 2026-10-04). Read from api.x.ai /v1/models with the pool's key that night: 500,000 context, prices identical to grok-4.6, reasoning effort low/medium/high/xhigh. TIERED upstream: this is the >=200k price; below 200k prompt tokens xAI charges half of it ($2 in / $0.50 cached / $6 out). The cheaper tier is `models.price_tier_rule` (migration 0163 copies grok-4.6's rows).",
          "defaultEffort": "high"
        },
        {
          "id": "grok-4.6",
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "displayName": "Grok 4.6",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 4,
          "outputPricePerM": 12,
          "notes": "xAI's recommendation for code and chat. TIERED upstream: this is the >=200k price; below 200k prompt tokens xAI charges half of it. The cheaper tier is `models.price_tier_rule` (migration 0054).",
          "defaultEffort": "high"
        },
        {
          "id": "grok-4.5",
          "effortLevels": ["low", "medium", "high"],
          "displayName": "Grok 4.5",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 4,
          "outputPricePerM": 12,
          "notes": "TIERED upstream: this is the >=200k price; below 200k prompt tokens xAI charges half of it. The cheaper tier is `models.price_tier_rule` (migration 0054).",
          "defaultEffort": "high"
        },
        {
          "id": "grok-4.3",
          "displayName": "Grok 4.3 (1M context)",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2.5,
          "outputPricePerM": 5,
          "notes": "TIERED upstream: this is the >=200k price; below 200k prompt tokens xAI charges half of it. The cheaper tier is `models.price_tier_rule` (migration 0054)."
        },
        {
          "id": "grok-build-0.1",
          "displayName": "Grok Build 0.1",
          "contextWindow": 256000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2,
          "outputPricePerM": 4,
          "notes": "TIERED upstream: this is the >=200k price; below 200k prompt tokens xAI charges half of it. The cheaper tier is `models.price_tier_rule` (migration 0054)."
        },
        {
          "id": "grok-4.20-0309-reasoning",
          "displayName": "Grok 4.20 Reasoning (1M context)",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2.5,
          "outputPricePerM": 5,
          "notes": "Grok 4.20 (0309 build), the reasoning variant. TIERED upstream: this is the >=200k price; below 200k prompt tokens xAI charges half of it ($1.25 in / $0.20 cached / $2.50 out). The cheaper tier is `models.price_tier_rule` (migration 0099). Read from docs.x.ai/docs/models on 2026-09-18 (owner: \"read x.ai/pricing and add all models\")."
        },
        {
          "id": "grok-4.20-0309-non-reasoning",
          "displayName": "Grok 4.20 Non-Reasoning (1M context)",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": false,
          "supportsVision": true,
          "inputPricePerM": 2.5,
          "outputPricePerM": 5,
          "notes": "Grok 4.20 (0309 build) without reasoning: same prices, faster, no thinking. TIERED upstream: this is the >=200k price; below 200k prompt tokens xAI charges half of it ($1.25 in / $0.20 cached / $2.50 out). The cheaper tier is `models.price_tier_rule` (migration 0099). Read from docs.x.ai/docs/models on 2026-09-18 (owner: \"read x.ai/pricing and add all models\"). NOT LISTED: `grok-4.20-multi-agent-0309` — every request from the engine carries tools and xAI answers `400 Client-side tools for multi-agent models require beta access` (measured 2026-09-19 through the pool on the owner's SuperGrok); delisted by migration 0100 until xAI opens that beta."
        }
      ],
      "defaultModel": "grok-4.7",
      "modelAliases": {
        "opus": "grok-4.7",
        "sonnet": "grok-4.7",
        "haiku": "grok-4.3"
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": false,
        "countTokens": false,
        "promptCaching": false
      },
      "passthrough": {
        "toolSchemaRequiredArray": true,
        "stripCacheControl": true,
        "allowedBetas": [],
        "anthropicVersion": "2023-06-01",
        "toolDescriptionRequired": true,
        "keepOutputConfig": true
      },
      "directCapable": true,
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://docs.x.ai/docs/overview",
      "keyFormat": "xai-...",
      "notes": "xAI serves an Anthropic-compatible Messages endpoint at https://api.x.ai/v1/messages (verified: it answers 401, not 404, so the route exists), authenticated with a bearer token. That makes it pass-through rather than translated, so a user's own key runs host-direct and never reaches the gateway. No count_tokens endpoint, so the gateway estimates. Prices here are the BASE tier; xAI doubles them for prompts over 200k tokens, which the flat per-model price cannot express — the models catalogue is where a real peak/off-peak split belongs.",
      "credentialVariants": [
        {
          "id": "payg",
          "label": "Pay-as-you-go (API key)",
          "header": "authorization-bearer",
          "keyFormat": "xai-..."
        },
        {
          "id": "token-plan",
          "label": "SuperGrok subscription (sign in)",
          "header": "authorization-bearer",
          "operatorOnly": true,
          "subscriptionLogin": {
            "type": "oauth-device",
            "deviceAuthorizationUrl": "https://auth.x.ai/oauth2/device/code",
            "tokenUrl": "https://auth.x.ai/oauth2/token",
            "clientId": "b1a00492-073a-47ea-816f-4c329264a828",
            "scopes": [
              "openid",
              "profile",
              "email",
              "offline_access",
              "grok-cli:access",
              "api:access"
            ],
            "signInLabel": "Sign in with SuperGrok",
            "referrer": "oonacode"
          },
          "notes": "A SuperGrok / X Premium token is NOT accepted by the developer API: api.x.ai bills it against the account's prepaid API credits and answers 402 personal-team-blocked:spending-limit (measured 2026-09-18). The surface a subscription belongs to is xAI's Grok CLI chat proxy, https://cli-chat-proxy.grok.com — the host Grok Build itself talks to — which serves the same Grok models from the subscription's weekly pool, speaks the Anthropic Messages shape at /v1/messages (thinking blocks and all; measured), and wants the Grok CLI identity headers (x-xai-token-auth, x-grok-client-identifier, x-grok-client-version, and since Grok CLI 1.x x-authenticateresponse and x-grok-client-mode — the proxy refuses versions older than what the current grok binary sends, so bump the version when it does: 0.2.111 was refused with 426 \"update to version 1.0.13 or later\" on 2026-10-04, when Grok Build was at 1.0.45; 1.0.46 recorded from the real CLI that night). A FREE account gets a small quota there (21 requests / 1M tokens per window, measured); `grok-build` answers 403 'requires a Grok subscription' until the plan is paid. The operator's own SuperGrok / X Premium subscription in the pool (owner, 2026-09-18: \"the server should use it for oonacode pool models\"). Signed in from the admin's Subscription tab with the same OAuth device-code flow the app uses for a user's subscription (`xai-subscription`) — Grok Build's public client id; the gateway keeps the access + refresh pair as one sealed secret and refreshes it two minutes before expiry, so the row needs no pasted key and no expiry date. The token is an ordinary bearer for api.x.ai: the same pass-through as the API key, on the subscription lane first. operatorOnly: a user's own SuperGrok is `xai-subscription`, direct from the PC (guardrail 4).",
          "baseUrl": "https://cli-chat-proxy.grok.com",
          "extraHeaders": {
            "x-xai-token-auth": "xai-grok-cli",
            "x-authenticateresponse": "authenticate-response",
            "x-grok-client-mode": "interactive",
            "x-grok-client-identifier": "grok-pager",
            "x-grok-client-version": "1.0.62",
            "user-agent": "grok-pager/1.0.62 grok-shell/1.0.62 (windows; x86_64)"
          }
        }
      ]
    },
    {
      "id": "xai-subscription",
      "displayName": "xAI Subscription (SuperGrok)",
      "kind": "anthropic-passthrough",
      "route": "direct",
      "credentialClass": "subscription",
      "baseUrl": "https://cli-chat-proxy.grok.com",
      "messagesPath": "/v1/messages",
      "auth": {
        "header": "authorization-bearer",
        "extraHeaders": {
          "x-xai-token-auth": "xai-grok-cli",
          "x-authenticateresponse": "authenticate-response",
          "x-grok-client-mode": "interactive",
          "x-grok-client-identifier": "grok-pager",
          "x-grok-client-version": "1.0.62",
          "user-agent": "grok-pager/1.0.62 grok-shell/1.0.62 (windows; x86_64)"
        }
      },
      "models": [
        {
          "id": "grok-4.7",
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "displayName": "Grok 4.7",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 4,
          "outputPricePerM": 12,
          "defaultEffort": "high"
        },
        {
          "id": "grok-4.7-build-fast",
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "displayName": "Grok 4.7 Fast",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false,
          "inputPricePerM": 8,
          "outputPricePerM": 24,
          "defaultEffort": "high"
        },
        {
          "id": "grok-4.6",
          "effortLevels": ["low", "medium", "high", "xhigh"],
          "displayName": "Grok 4.6",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 4,
          "outputPricePerM": 12,
          "defaultEffort": "high"
        },
        {
          "id": "grok-4.5",
          "effortLevels": ["low", "medium", "high"],
          "displayName": "Grok 4.5",
          "contextWindow": 500000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 4,
          "outputPricePerM": 12,
          "defaultEffort": "high"
        },
        {
          "id": "grok-4.3",
          "displayName": "Grok 4.3 (1M context)",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2.5,
          "outputPricePerM": 5
        },
        {
          "id": "grok-build-0.1",
          "displayName": "Grok Build 0.1",
          "contextWindow": 256000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2,
          "outputPricePerM": 4
        },
        {
          "id": "grok-4.20-0309-reasoning",
          "displayName": "Grok 4.20 Reasoning (1M context)",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "notes": "Served from the subscription pool through the Grok CLI chat proxy; no per-token price — the weekly pool is what it costs."
        },
        {
          "id": "grok-4.20-0309-non-reasoning",
          "displayName": "Grok 4.20 Non-Reasoning (1M context)",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": false,
          "supportsVision": true,
          "notes": "Served from the subscription pool through the Grok CLI chat proxy; no per-token price — the weekly pool is what it costs."
        }
      ],
      "defaultModel": "grok-4.7",
      "modelAliases": {
        "opus": "grok-4.7",
        "sonnet": "grok-4.7",
        "haiku": "grok-4.3"
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": false,
        "countTokens": false,
        "promptCaching": false
      },
      "passthrough": {
        "toolSchemaRequiredArray": true,
        "stripCacheControl": true,
        "allowedBetas": [],
        "anthropicVersion": "2023-06-01",
        "toolDescriptionRequired": true,
        "keepOutputConfig": true
      },
      "phase": 1,
      "enabled": true,
      "clientGroup": "xai",
      "adminGroup": "xai",
      "recordLabel": "Subscription",
      "subscriptionLogin": {
        "type": "oauth-device",
        "deviceAuthorizationUrl": "https://auth.x.ai/oauth2/device/code",
        "tokenUrl": "https://auth.x.ai/oauth2/token",
        "clientId": "b1a00492-073a-47ea-816f-4c329264a828",
        "scopes": ["openid", "profile", "email", "offline_access", "grok-cli:access", "api:access"],
        "signInLabel": "Sign in with SuperGrok",
        "referrer": "oonacode"
      },
      "docsUrl": "https://x.ai/news/grok-opencode",
      "notes": "A SuperGrok / X Premium token is NOT accepted by the developer API: api.x.ai bills it against the account's prepaid API credits and answers 402 personal-team-blocked:spending-limit (measured 2026-09-18). The surface a subscription belongs to is xAI's Grok CLI chat proxy, https://cli-chat-proxy.grok.com — the host Grok Build itself talks to — which serves the same Grok models from the subscription's weekly pool, speaks the Anthropic Messages shape at /v1/messages (thinking blocks and all; measured), and wants the Grok CLI identity headers (x-xai-token-auth, x-grok-client-identifier, x-grok-client-version, and since Grok CLI 1.x x-authenticateresponse and x-grok-client-mode — the proxy refuses versions older than what the current grok binary sends, so bump the version when it does: 0.2.111 was refused with 426 \"update to version 1.0.13 or later\" on 2026-10-04, when Grok Build was at 1.0.45; 1.0.46 recorded from the real CLI that night). A FREE account gets a small quota there (21 requests / 1M tokens per window, measured); `grok-build` answers 403 'requires a Grok subscription' until the plan is paid. The user's own SuperGrok / X Premium subscription (owner, 2026-09-18: \"lets do xai first because it works with token and refresh token only\"). Signed in with the OAuth device-code flow xAI opened to third-party coding agents (its OpenCode announcement; Hermes, Kilo Code, Warp and pi ship the same flow) using Grok Build's own PUBLIC client id, taken from xai-org/grok-build crates/codegen/xai-grok-login/src/config.rs - a device-code client has no secret. The access token is an ordinary bearer for api.x.ai, so the engine runs the same pass-through as an xAI API key; the host injects the CURRENT token per request through its loopback upstream and refreshes it (the refresh token rotates) two minutes before expiry. route=direct: the token never reaches the gateway (guardrail 4) and this entry seeds no server rows. Some $30 SuperGrok tiers answer 403 from the OAuth backend (reported by Hermes users) - the provider page shows that refusal in words. Prices are the API list (a subscription is flat-rate; the figures only size the catalogue)."
    },
    {
      "id": "deepseek",
      "displayName": "DeepSeek",
      "kind": "anthropic-passthrough",
      "route": "gateway",
      "credentialClass": "api_key",
      "baseUrl": "https://api.deepseek.com/anthropic",
      "messagesPath": "/v1/messages",
      "auth": {
        "header": "x-api-key"
      },
      "models": [
        {
          "id": "deepseek-v4.1-flash",
          "displayName": "DeepSeek V4.1 Flash",
          "upstreamId": "deepseek-flash",
          "contextWindow": 1000000,
          "maxOutputTokens": 384000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false,
          "notes": "DeepSeek's current Flash model (its API calls it `deepseek-flash`, which has been the 1017 snapshot since 2026-10-17 - see `deepseek-v4.1-flash-1017` below; the docs name it DeepSeek-V4.1-Flash; the legacy `deepseek-v4-flash` ids still answer and now cost the same). Listed under the canonical id Alibaba and everyone else use so the pool can fold the two backends into one entry; `upstreamId` is what DeepSeek is sent. Peak price in the row ($0.30 in / $1.20 out, cache hit $0.006); off-peak is half, outside 01:00-04:00 and 06:00-10:00 UTC Mon-Fri. Owner, 2026-09-18: \"add deepseek 4.1 in oonacode pool\"."
        },
        {
          "id": "deepseek-v4.1-flash-1017",
          "displayName": "DeepSeek V4.1 Flash 1017",
          "upstreamId": "deepseek-flash",
          "contextWindow": 1000000,
          "maxOutputTokens": 384000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "notes": "DeepSeek-V4.1-Flash-1017, the 17 Oct 2026 snapshot of V4.1 Flash: stronger reasoning, coding, agent and image scores, shorter outputs. DeepSeek's API serves it under the same name as the model above (`deepseek-flash`; docs api-docs.deepseek.com/quick_start/pricing: the legacy `deepseek-v4-flash` and `deepseek-v4-flash-vision-exp` ids are served by it too), so this entry is the explicit name of what that API name now is. 1M context, 384K output, image input, thinking and non-thinking, same price as V4.1 Flash: peak $0.30 in / $1.20 out, cache hit $0.006, off-peak half (peak 01:00-04:00 and 06:00-10:00 UTC Mon-Fri). Owner, 2026-10-19: \"add this model deepseek-v4.1-flash-1017 in oonacode pool\"."
        },
        {
          "id": "deepseek-v4-pro",
          "displayName": "DeepSeek V4 Pro",
          "contextWindow": 1000000,
          "maxOutputTokens": 384000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false
        },
        {
          "id": "deepseek-v4-flash",
          "displayName": "DeepSeek V4 Flash",
          "contextWindow": 1000000,
          "maxOutputTokens": 384000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false
        },
        {
          "id": "deepseek-v4-flash-vision-exp",
          "displayName": "DeepSeek V4 Flash Vision (experimental)",
          "contextWindow": 1000000,
          "maxOutputTokens": 384000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        }
      ],
      "defaultModel": "deepseek-v4.1-flash",
      "modelAliases": {
        "opus": "deepseek-v4-pro",
        "sonnet": "deepseek-v4.1-flash",
        "haiku": "deepseek-v4.1-flash"
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": true
      },
      "passthrough": {
        "stripCacheControl": false,
        "allowedBetas": [],
        "anthropicVersion": "2023-06-01"
      },
      "directCapable": true,
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://api-docs.deepseek.com/guides/anthropic_api"
    },
    {
      "id": "qwen",
      "displayName": "Alibaba Cloud (Qwen)",
      "kind": "anthropic-passthrough",
      "route": "gateway",
      "credentialClass": "api_key",
      "baseUrl": "https://dashscope-intl.aliyuncs.com/apps/anthropic",
      "messagesPath": "/v1/messages",
      "auth": {
        "header": "x-api-key"
      },
      "models": [
        {
          "id": "qwen3.8-max",
          "displayName": "Qwen3.8 Max",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2,
          "outputPricePerM": 6,
          "notes": "Flagship. Singapore/International list price, flat (no context tier). Verified against the owner's Token Plan 2026-09-03: the API answers and reports model=qwen3.8-max. Console tag (owner, 2026-09-18): Visual Understanding."
        },
        {
          "id": "qwen3.8-flash",
          "displayName": "Qwen3.8 Flash",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 0.15,
          "outputPricePerM": 0.47,
          "notes": "Fast tier. Singapore/International list price, flat. Verified on the Token Plan 2026-09-03. Console tag (owner, 2026-09-18): Visual Understanding."
        },
        {
          "id": "qwen3.7-plus",
          "displayName": "Qwen3.7 Plus",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 1.2,
          "outputPricePerM": 4.8,
          "notes": "TIERED upstream: this is the >=256k price ($1.20/$4.80); below 256k prompt tokens Alibaba charges $0.40/$1.60. The cheaper tier is `models.price_tier_rule` (migration 0054); before it existed the row was declared at the high tier outright (the owner’s ruling of 2026-09-03). Console tag (owner, 2026-09-18): Visual Understanding."
        },
        {
          "id": "qwen3.7-max",
          "displayName": "Qwen3.7 Max",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false,
          "inputPricePerM": 2.5,
          "outputPricePerM": 7.5,
          "notes": "Previous flagship. Singapore/International list price, flat. Verified on the Token Plan 2026-09-03."
        },
        {
          "id": "qwen3.6-flash",
          "displayName": "Qwen3.6 Flash",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 1,
          "outputPricePerM": 4,
          "notes": "TIERED upstream: this is the >=256k price ($1.00/$4.00); below 256k prompt tokens Alibaba charges $0.25/$1.50. The cheaper tier is `models.price_tier_rule` (migration 0054). Console tags (owner, 2026-09-18): Reasoning Model, Visual Understanding."
        },
        {
          "id": "deepseek-v4.1-flash-1017",
          "displayName": "DeepSeek V4.1 Flash 1017 (Alibaba)",
          "contextWindow": 1000000,
          "maxOutputTokens": 393216,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 0.3,
          "outputPricePerM": 1.2,
          "notes": "Served by Alibaba Cloud Model Studio on its own cloud (a hosted DeepSeek weight, not a broker — the same Anthropic-compatible endpoint and credential as Qwen; Alibaba's DeepSeek API page lists the id `deepseek-v4.1-flash-1017`). The 17 Oct 2026 snapshot of V4.1 Flash. Same price as Alibaba's `deepseek-v4.1-flash`: Singapore/International list at the busy-hours rate, half in idle hours. The DeepSeek provider keeps its own row of the same id. Owner, 2026-10-22: \"add also in alibaba keep the deepseek provider too\"."
        },
        {
          "id": "deepseek-v4.1-flash",
          "displayName": "DeepSeek V4.1 Flash (Alibaba)",
          "contextWindow": 1000000,
          "maxOutputTokens": 393216,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 0.3,
          "outputPricePerM": 1.2,
          "notes": "Served by Alibaba Cloud Model Studio on its own cloud (a hosted DeepSeek weight, not a broker — the same Anthropic-compatible endpoint and credential as Qwen; Alibaba's Anthropic Messages API page lists it). Singapore/International list price at the BUSY-hours rate; Alibaba charges half in idle hours ($0.15 in / $0.60 out), which is the off-peak cell for the admin. Cached input $0.03 busy, $0.015 idle. Owner, 2026-09-18: \"the alibaba has very interesting models we should add all followings\". Input modality: text and image (Alibaba's model page)."
        },
        {
          "id": "deepseek-v4-pro-0813",
          "displayName": "DeepSeek V4 Pro 0813 (Alibaba)",
          "contextWindow": 1000000,
          "maxOutputTokens": 393216,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false,
          "inputPricePerM": 1.32,
          "outputPricePerM": 3.96,
          "notes": "Served by Alibaba Cloud Model Studio on its own cloud (a hosted DeepSeek weight, not a broker — the same Anthropic-compatible endpoint and credential as Qwen; Alibaba's Anthropic Messages API page lists it). Singapore/International list price at the BUSY-hours rate; Alibaba charges half in idle hours ($0.66 in / $1.98 out), which is the off-peak cell for the admin. Cached input $0.132 busy, $0.066 idle. Owner, 2026-09-18: \"the alibaba has very interesting models we should add all followings\". Thinking mode with a 393,216-token chain of thought (Alibaba's model page)."
        },
        {
          "id": "deepseek-v4-pro",
          "displayName": "DeepSeek V4 Pro (Alibaba)",
          "contextWindow": 1000000,
          "maxOutputTokens": 393216,
          "supportsTools": true,
          "supportsThinking": false,
          "supportsVision": false,
          "inputPricePerM": 2.4,
          "outputPricePerM": 4.8,
          "notes": "Served by Alibaba Cloud Model Studio on its own cloud (a hosted DeepSeek weight, not a broker — the same Anthropic-compatible endpoint and credential as Qwen). Singapore/International list price, flat ($2.40 in / $4.80 out, cached input $0.20). Alibaba's model page gives thinking mode to the 0813 snapshot only, so this row does not offer it even though the console tags the model 'Reasoning Model' (owner, 2026-09-18) — flip supportsThinking once a call with `thinking` is seen to succeed."
        },
        {
          "id": "deepseek-v4-flash-0731",
          "displayName": "DeepSeek V4 Flash 0731 (Alibaba)",
          "contextWindow": 1000000,
          "maxOutputTokens": 393216,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false,
          "inputPricePerM": 0.44,
          "outputPricePerM": 1.32,
          "notes": "Served by Alibaba Cloud Model Studio on its own cloud (a hosted DeepSeek weight, not a broker — the same Anthropic-compatible endpoint and credential as Qwen; Alibaba's Anthropic Messages API page lists it). Singapore/International list price at the BUSY-hours rate; Alibaba charges half in idle hours ($0.22 in / $0.66 out), which is the off-peak cell for the admin. Cached input $0.044 busy, $0.022 idle. Owner, 2026-09-18: \"the alibaba has very interesting models we should add all followings\"."
        },
        {
          "id": "glm-5.3",
          "displayName": "GLM-5.3 (Alibaba)",
          "contextWindow": 1048576,
          "maxOutputTokens": 131072,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false,
          "inputPricePerM": 1.4,
          "outputPricePerM": 4.4,
          "notes": "Served by Alibaba Cloud Model Studio on its own cloud (a hosted Zhipu weight, not a broker — the same Anthropic-compatible endpoint and credential as Qwen). Singapore/International list price, flat; cached input $0.28. 1,048,576 context, 131,072 output and chain-of-thought. Owner, 2026-09-18."
        },
        {
          "id": "glm-5.2",
          "displayName": "GLM-5.2 (Alibaba)",
          "contextWindow": 1048576,
          "maxOutputTokens": 131072,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false,
          "inputPricePerM": 1.4,
          "outputPricePerM": 4.4,
          "notes": "Served by Alibaba Cloud Model Studio on its own cloud (a hosted Zhipu weight, not a broker — the same Anthropic-compatible endpoint and credential as Qwen). Singapore/International list price, flat; cached input $0.28. 1,048,576 context, 131,072 output and chain-of-thought. Owner, 2026-09-18."
        }
      ],
      "defaultModel": "qwen3.8-max",
      "modelAliases": {
        "opus": "qwen3.8-max",
        "sonnet": "qwen3.8-max",
        "haiku": "qwen3.8-flash"
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": false,
        "countTokens": false,
        "promptCaching": true,
        "promptCacheTtlSec": 300
      },
      "passthrough": {
        "stripCacheControl": false,
        "cacheChain": true,
        "allowedBetas": [],
        "anthropicVersion": "2023-06-01"
      },
      "directCapable": true,
      "userBaseUrl": true,
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://www.alibabacloud.com/help/en/model-studio/claude-code",
      "notes": "Alibaba Cloud Model Studio (DashScope) serves Qwen over an Anthropic-compatible Messages endpoint, so a user’s own key runs host-direct and the pool needs no translator. Two credential records: a pay-as-you-go API key on the shared international host, and a Token Plan whose host is workspace-specific and must be pasted per credential. Mainland-China endpoint: https://dashscope.aliyuncs.com/apps/anthropic. Since 2026-09-18 the entry also lists the DeepSeek and Zhipu GLM models Alibaba hosts on its own cloud and serves over the same Anthropic-compatible endpoint (its Anthropic Messages API page lists them; the Token Plan covers them) — owner: \"the alibaba has very interesting models we should add all followings, and no need other qwen old models\". Guardrail 8 reads 'the company that trains OR SERVES the model': Model Studio runs these weights itself, which is serving, not brokering.",
      "keyFormat": "sk-... (Model Studio API key) / sk-ws-... (workspace key)",
      "credentialVariants": [
        {
          "id": "payg",
          "label": "Pay-as-you-go (API key)",
          "baseUrl": "https://dashscope-intl.aliyuncs.com/apps/anthropic",
          "keyFormat": "sk-...",
          "notes": "Mainland China is a different host: https://dashscope.aliyuncs.com/apps/anthropic. Paste it into Base URL on the credential."
        },
        {
          "id": "token-plan",
          "label": "Token Plan (subscription)",
          "keyFormat": "sk-ws-...",
          "notes": "A Token Plan is issued against a DEDICATED WORKSPACE and its host carries that workspace id — https://ws-<workspace>.<region>.maas.aliyuncs.com/apps/anthropic. It is therefore per-credential and deliberately has no default here: paste the console’s own Anthropic URL into Base URL when adding the key, or the request goes to the wrong workspace. Alibaba states the plan is for use inside coding tools only.",
          "baseUrl": "https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic"
        }
      ],
      "references": [
        {
          "label": "Claude Code integration (Model Studio)",
          "url": "https://www.alibabacloud.com/help/en/model-studio/claude-code",
          "kind": "docs"
        },
        {
          "label": "Model Studio console",
          "url": "https://bailian.console.alibabacloud.com/",
          "kind": "console"
        },
        {
          "label": "Model pricing",
          "url": "https://www.alibabacloud.com/help/en/model-studio/models",
          "kind": "pricing"
        }
      ]
    },
    {
      "id": "mimo",
      "displayName": "Xiaomi MiMo",
      "kind": "anthropic-passthrough",
      "route": "gateway",
      "credentialClass": "api_key",
      "baseUrl": "https://api.xiaomimimo.com/anthropic",
      "messagesPath": "/v1/messages",
      "auth": {
        "header": "authorization-bearer"
      },
      "models": [
        {
          "id": "mimo-v2.6-pro",
          "displayName": "MiMo v2.6 Pro",
          "contextWindow": 1000000,
          "maxOutputTokens": 128000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "notes": "The flagship of the V2.6 series, and what replaces mimo-v2.5-pro when that is withdrawn on 2026-10-21. 1M context, 128K max output, RPM 100 / TPM 10M, same price as the model it replaces ($0.435 / $0.87 per MTok overseas). Read from mimo.mi.com/models/en-US/mimo-v2.6-pro on 2026-09-22."
        },
        {
          "id": "mimo-v2.6-flash",
          "displayName": "MiMo v2.6 Flash",
          "contextWindow": 1000000,
          "maxOutputTokens": 128000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "notes": "The cheap half of the V2.6 series and what replaces mimo-v2.5. Same 1M context and 128K output as the Pro, a fifth of the price ($0.14 / $0.28 per MTok overseas). Read from mimo.mi.com/models/en-US/mimo-v2.6-flash on 2026-09-22."
        }
      ],
      "defaultModel": "mimo-v2.6-pro",
      "modelAliases": {
        "opus": "mimo-v2.6-pro",
        "sonnet": "mimo-v2.6-pro",
        "haiku": "mimo-v2.6-flash"
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": true
      },
      "passthrough": {
        "stripCacheControl": false,
        "allowedBetas": [],
        "anthropicVersion": "2023-06-01"
      },
      "directCapable": true,
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://mimo.mi.com/docs/en-US/tokenplan/integration/claudecode",
      "keyFormat": "sk-... (pay-as-you-go) / tp-... (Token Plan)",
      "credentialVariants": [
        {
          "id": "payg",
          "label": "Pay-as-you-go (API key)",
          "baseUrl": "https://api.xiaomimimo.com/anthropic",
          "keyFormat": "sk-..."
        },
        {
          "id": "token-plan",
          "label": "Token Plan (subscription)",
          "baseUrl": "https://token-plan-sgp.xiaomimimo.com/anthropic",
          "keyFormat": "tp-...",
          "notes": "MiMo issues a DEDICATED base URL per plan and it is region-specific — the console shows it under 'Dedicated Base URL'. SGP is the default here because that is what a Token Plan is issued on outside mainland China; a plan on another region must paste its own URL into the Base URL field, which overrides this."
        }
      ],
      "references": [
        {
          "label": "Claude Code integration (Token Plan)",
          "url": "https://mimo.mi.com/docs/en-US/tokenplan/integration/claudecode",
          "kind": "docs"
        }
      ],
      "notes": "Xiaomi MiMo speaks the Anthropic Messages API natively. Two credential variants: pay-as-you-go API keys (sk-..., https://api.xiaomimimo.com/anthropic) and fixed Token Plan subscriptions (tp-..., https://token-plan-cn.xiaomimimo.com/anthropic). The V2 series is deprecated, and the V2.5 series follows it: Xiaomi withdraws mimo-v2.5 and mimo-v2.5-pro on 2026-10-21 at 10:00 GMT+8, after which those names stop working (mimo.mi.com/docs/en-US/price/pay-as-you-go, read 2026-09-22) - mimo-v2.6-flash and mimo-v2.6-pro replace them at identical prices. A third V2.6 model exists, mimo-v2.6-pro-ultraspeed, at ten times the Pro rate ($4.35 / $8.70); it is not listed here because nobody asked for it. A user's own key runs host-direct and the active variant's baseUrl is applied automatically. Model listing is NOT under this base URL: it answers at https://api.xiaomimimo.com/v1/models while chat is at /anthropic/v1/messages, and `modelsPath` can only be appended to `baseUrl` — so it is deliberately unset here, and the credential test uses its one-token ping instead.",
      "userBaseUrl": true
    },
    {
      "id": "kimi",
      "displayName": "Kimi (Moonshot)",
      "kind": "anthropic-passthrough",
      "route": "gateway",
      "credentialClass": "api_key",
      "baseUrl": "https://api.moonshot.ai/anthropic",
      "messagesPath": "/v1/messages",
      "auth": {
        "header": "x-api-key"
      },
      "models": [
        {
          "id": "kimi-k3",
          "displayName": "Kimi K3",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "kimi-k3.1-pro",
          "displayName": "Kimi K3.1 Pro",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "kimi-k3.1-pro-highspeed",
          "displayName": "Kimi K3.1 Pro (high speed)",
          "contextWindow": 1000000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "kimi-k2.7-code",
          "displayName": "Kimi K2.7 Code",
          "contextWindow": 262144,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false
        },
        {
          "id": "kimi-k2.7-code-highspeed",
          "displayName": "Kimi K2.7 Code (high speed)",
          "contextWindow": 262144,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false
        },
        {
          "id": "kimi-k2.6",
          "displayName": "Kimi K2.6",
          "contextWindow": 262144,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        }
      ],
      "defaultModel": "kimi-k3",
      "modelAliases": {
        "opus": "kimi-k3",
        "sonnet": "kimi-k3",
        "haiku": "kimi-k2.6"
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": false
      },
      "passthrough": {
        "stripCacheControl": true,
        "allowedBetas": [],
        "anthropicVersion": "2023-06-01"
      },
      "directCapable": true,
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://platform.kimi.ai/docs/guide/claude-code-kimi",
      "notes": "LOCAL ONLY (owner, 2026-10-27): a user links their own Moonshot platform API key (platform.kimi.ai) and the host calls Moonshot's Anthropic-compatible endpoint directly - no translation, nothing through the OonaCode pool or server (SERVER_EXCLUDED_PROVIDER_IDS). Kimi's own list, read 2026-10-27: kimi-k3 and kimi-k3.1-pro are 1M-context with image input, kimi-k2.7-code and kimi-k2.6 are 256k; the high-speed variants are listed without a stated window (the base model's is assumed). kimi-k2.7-code cannot run with thinking off. NOT covered: the Kimi Code subscription is a different endpoint (https://api.kimi.ai/coding/) with its own model ids (k3.1-pro, kimi-for-coding, ...); both endpoints accept the key as x-api-key or as a bearer token."
    },
    {
      "id": "gemini-voice",
      "displayName": "Google Gemini (voice)",
      "kind": "gemini",
      "route": "gateway",
      "credentialClass": "api_key",
      "poolOnly": true,
      "baseUrl": "https://generativelanguage.googleapis.com",
      "modelsPath": "/v1beta/models",
      "auth": {
        "header": "x-goog-api-key"
      },
      "models": [
        {
          "id": "gemini-3.8-flash-tts",
          "displayName": "Gemini 3.8 Flash TTS"
        },
        {
          "id": "gemini-3.8-flash-lite-tts",
          "displayName": "Gemini 3.8 Flash-Lite TTS"
        }
      ],
      "defaultModel": "gemini-3.8-flash-tts",
      "capabilities": {
        "streaming": false,
        "tools": false,
        "thinking": false,
        "vision": false,
        "countTokens": false,
        "promptCaching": false
      },
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://ai.google.dev/gemini-api/docs/speech-generation",
      "notes": "Speech generation only (2026-10-27): the operator's pay-as-you-go Google key behind POST /v1/audio/speech for the API and the app's text_to_speech tool. Never a chat provider and never in the OonaCode pool (MEDIA_ONLY_PROVIDER_IDS); the separate Google Gemini entry above stays the app's own-key chat provider."
    },
    {
      "id": "antigravity",
      "displayName": "Google Antigravity",
      "kind": "gemini",
      "route": "gateway",
      "credentialClass": "api_key",
      "poolOnly": true,
      "baseUrl": "https://daily-cloudcode-pa.googleapis.com",
      "messagesPath": "/v1internal",
      "auth": {
        "header": "authorization-bearer"
      },
      "models": [
        {
          "id": "gemini-3.8-flash",
          "displayName": "Gemini 3.8 Flash (Antigravity)",
          "upstreamId": "gemini-3.8-flash-{effort:high}",
          "contextWindow": 1048576,
          "maxOutputTokens": 65536,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 0.75,
          "outputPricePerM": 3.75,
          "notes": "Google lists one model per level — gemini-3.8-flash-high, -medium and -low (fetchAvailableModels, 2026-10-03: 1,048,576 context / 65,536 output each); OonaCode shows ONE model and the chat’s effort picker fills the level (upstreamId template; xhigh and max read as high; no effort = high). Cost = Google’s Gemini API list price for gemini-3.8-flash: $0.75 in / $0.075 cached / $3.75 out per 1M through 2026-12-31, DOUBLING to $1.50 / $0.15 / $7.50 from 2027-01-01 (ai.google.dev/gemini-api/docs/pricing, updated 2026-10-01) — move the cost cells on the model page then."
        },
        {
          "id": "gemini-4-argon",
          "displayName": "Gemini 4 Argon (Antigravity)",
          "upstreamId": "gemini-4-argon-{effort:high}",
          "contextWindow": 1048576,
          "maxOutputTokens": 65536,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2,
          "outputPricePerM": 10,
          "notes": "Google lists one model per level - gemini-4-argon-high, -medium and -low (fetchAvailableModels on the operator's Ultra account, 2026-10-13: 1,048,576 context / 65,536 output each; model enums M417 / M418 / M419); OonaCode shows ONE model and the chat's effort picks the level. Asked like the Google-hosted Claude models: a dynamic thinking budget (-1) AND the thinkingLevel (recorded from agy 1.3.3, three real turns plus a tool call). Ultra accounts only: a non-Ultra personal account does not list it. Google's Gemini API list price is INTRODUCTORY $2 / $0.10 cached / $10 per 1M through 2026-11-30 and $4 / $0.20 / $20 from 2026-12-01 - move the catalogue cells then."
        },
        {
          "id": "google-claude-opus-5-5",
          "displayName": "Claude Opus 5.5 (via Google)",
          "upstreamId": "claude-opus-5-5-{effort:high}",
          "contextWindow": 500000,
          "maxOutputTokens": 128000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 4,
          "outputPricePerM": 20,
          "effortLevels": ["low", "medium", "high"],
          "notes": "PRIVATE (owner, 2026-10-07): in no list — served only when this exact id is asked (/model <id>, the picker’s Custom model… row, oona -m <id>); never the pool entry, /v1/models or the API list (its catalogue row is unlisted). Claude through the operator’s Antigravity sign-in under its OWN id, so the pool never folds it with Anthropic’s lanes. Takes chats up to 500,000 tokens, and the gateway declines above that ×1.1 (migration 0227; it was 200,000 from 0177 and 100,000 before, while Google’s prompt cache was broken) - a bigger prompt, and any PDF, is declined before any upstream call), effort low / medium / high (higher reads as high; the id is a template filled from the chat’s effort). Google lists 1,000,000 / 128,000 for every 5.5 level (fetchAvailableModels, 2026-10-06) but its prompt cache barely applies (28k of a 417k prompt) and it meters by token cost, so the ceiling is the pool’s own. Thinking is asked as agy 1.3.0 asks it (budget 0 plus the id’s level). Cost = Anthropic’s list price ($4 / $0.20 cached / $20 per 1M) — Google publishes none."
        },
        {
          "id": "google-claude-sonnet-5-5",
          "displayName": "Claude Sonnet 5.5 (via Google)",
          "upstreamId": "claude-sonnet-5-5-{effort:high}",
          "contextWindow": 500000,
          "maxOutputTokens": 128000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "inputPricePerM": 2,
          "outputPricePerM": 10,
          "effortLevels": ["low", "medium", "high"],
          "notes": "PRIVATE (owner, 2026-10-07): in no list — served only when this exact id is asked (/model <id>, the picker’s Custom model… row, oona -m <id>); never the pool entry, /v1/models or the API list (its catalogue row is unlisted). Claude through the operator’s Antigravity sign-in under its OWN id, so the pool never folds it with Anthropic’s lanes. Takes chats up to 500,000 tokens, and the gateway declines above that ×1.1 (migration 0227; it was 200,000 from 0177 and 100,000 before, while Google’s prompt cache was broken) - a bigger prompt, and any PDF, is declined before any upstream call), effort low / medium / high (higher reads as high; the id is a template filled from the chat’s effort). Google lists 1,000,000 / 128,000 for every 5.5 level (fetchAvailableModels, 2026-10-06) but its prompt cache barely applies (28k of a 417k prompt) and it meters by token cost, so the ceiling is the pool’s own. Thinking is asked as agy 1.3.0 asks it (budget 0 plus the id’s level). Cost = Anthropic’s list price ($2 / $0.20 cached / $10 per 1M) — Google publishes none."
        }
      ],
      "defaultModel": "gemini-3.8-flash",
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": true,
        "countTokens": false,
        "promptCaching": true
      },
      "translate": {
        "wire": "gemini-code-assist"
      },
      "phase": 1,
      "enabled": true,
      "docsUrl": "https://antigravity.google/docs",
      "references": [
        {
          "label": "Antigravity Additional Terms of Service (section 6 forbids third-party access)",
          "url": "https://antigravity.google/terms/",
          "kind": "other"
        },
        {
          "label": "Gemini API pricing (the cost cells)",
          "url": "https://ai.google.dev/gemini-api/docs/pricing",
          "kind": "pricing"
        },
        {
          "label": "Claude pricing (the Google-hosted Claude cost cells)",
          "url": "https://platform.claude.com/docs/en/about-claude/pricing",
          "kind": "pricing"
        },
        {
          "label": "Gemini thought signatures",
          "url": "https://ai.google.dev/gemini-api/docs/thought-signatures",
          "kind": "docs"
        },
        {
          "label": "Appeal a suspended Antigravity account (gemini-cli discussion 20632)",
          "url": "https://github.com/google-gemini/gemini-cli/discussions/20632",
          "kind": "other"
        }
      ],
      "notes": "OPERATOR POOL ONLY (owner, 2026-10-02: build it, knowing the terms). The operator's Google Antigravity subscription, signed in from the admin with Google's installed-app OAuth flow using Antigravity's OWN OAuth client, and called on Google's private Code Assist API (cloudcode-pa /v1internal) in the Gemini request shape, translated from and to Anthropic Messages by @oonacode/translate. THIS BREACHES GOOGLE'S TERMS: Antigravity's Additional Terms section 6 calls third-party access a breach, and Google has suspended whole Google accounts for exactly this since 2026-02 (403, no notice; Gemini CLI and Code Assist went with them). Use a SEPARATE Google account. A 403 that reads as a suspension disables the credential on the spot and puts it on the reminder banner. Never offered to a user; served to clients only as a disabled stub. docs/antigravity.md.",
      "credentialVariants": [
        {
          "id": "token-plan",
          "label": "Antigravity subscription (Google sign-in)",
          "header": "authorization-bearer",
          "operatorOnly": true,
          "baseUrl": "https://daily-cloudcode-pa.googleapis.com",
          "extraHeaders": {
            "user-agent": "antigravity/cli/1.4.7 (aidev_client; os_type=linux; arch=amd64; cl=1006008713; auth_method=consumer)"
          },
          "agyLogin": {
            "type": "agy-server",
            "signInLabel": "Sign in with agy (server-side)"
          },
          "loopbackLogin": {
            "type": "google-loopback",
            "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
            "tokenUrl": "https://oauth2.googleapis.com/token",
            "redirectUri": "http://localhost:51121/oauth-callback",
            "scopes": [
              "https://www.googleapis.com/auth/cloud-platform",
              "https://www.googleapis.com/auth/userinfo.email",
              "https://www.googleapis.com/auth/userinfo.profile",
              "https://www.googleapis.com/auth/cclog",
              "https://www.googleapis.com/auth/experimentsandconfigs"
            ],
            "clientIdSetting": "antigravity_oauth_client_id",
            "clientSecretSetting": "antigravity_oauth_client_secret",
            "userinfoUrl": "https://www.googleapis.com/oauth2/v2/userinfo",
            "signInLabel": "Sign in with Google (Antigravity)"
          },
          "notes": "The operator’s Antigravity account. The base URL is the daily Code Assist channel Antigravity itself talks to (its language server runs with --cloud_code_endpoint https://daily-cloudcode-pa.googleapis.com; prod is https://cloudcode-pa.googleapis.com — the row’s base URL decides). The ONE identity header is the user-agent Google’s own agy CLI sends (1.3.0, os_type=linux — the server’s own agy — cl=994000447, recorded 2026-10-06 on Windows and on the server’s Linux; docs/antigravity.md section 12) — bump its version with Antigravity’s, after the new agy has been recorded and tested on dev. Scopes: the six the language server carries minus `aicode`, which the public Antigravity sign-in integrations do not request; add it here if Google ever refuses a Code Assist call for want of it."
        }
      ],
      "effortLevels": ["low", "medium", "high"],
      "defaultEffort": "high"
    },
    {
      "id": "nvidia",
      "displayName": "NVIDIA NIM (cloud)",
      "kind": "openai-compatible",
      "route": "gateway",
      "credentialClass": "api_key",
      "baseUrl": "https://integrate.api.nvidia.com",
      "messagesPath": "/v1/chat/completions",
      "modelsPath": "/v1/models",
      "auth": {
        "header": "authorization-bearer"
      },
      "models": [
        {
          "id": "nvidia/nemotron-3-ultra-550b-a55b",
          "helperModel": "nvidia/nemotron-3-ultra-550b-a55b",
          "displayName": "Nemotron 3 Ultra 550B (NIM)",
          "contextWindow": 262144,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false
        },
        {
          "id": "nvidia/nemotron-3.5-super-vl-120b-a12b",
          "helperModel": "nvidia/nemotron-3.5-super-vl-120b-a12b",
          "displayName": "Nemotron 3.5 Super VL Intelligence (NIM)",
          "contextWindow": 262144,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true,
          "notes": "NVIDIA Nemotron 3.5 Super VL (hosted id nemotron-3.5-super-vl-120b-a12b): vision-language reasoning, coding, tools, documents and video. The hosted card lists a 262,144-token window and caps a completion at 131,072; the model itself shares up to 1M between input and output. A user's own key only."
        },
        {
          "id": "nvidia/nemotron-3.5-lightning-30b-a3b",
          "helperModel": "nvidia/nemotron-3.5-lightning-30b-a3b",
          "displayName": "Nemotron 3.5 Lightning 30B (NIM)",
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false
        },
        {
          "id": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",
          "helperModel": "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning",
          "displayName": "Nemotron 3 Nano Omni 30B (NIM)",
          "contextWindow": 262144,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "z-ai/glm-5.3-flash",
          "helperModel": "z-ai/glm-5.3-flash",
          "displayName": "GLM-5.3 Flash (NIM)",
          "contextWindow": 1048576,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "meta/muse-glimmer-30b",
          "helperModel": "meta/muse-glimmer-30b",
          "displayName": "Meta Muse Glimmer 30B (NIM)",
          "contextWindow": 131072,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": true
        },
        {
          "id": "openai/gpt-oss-20b",
          "helperModel": "openai/gpt-oss-20b",
          "displayName": "GPT-OSS 20B (NIM)",
          "contextWindow": 128000,
          "supportsTools": true,
          "supportsThinking": true,
          "supportsVision": false
        }
      ],
      "defaultModel": "nvidia/nemotron-3-ultra-550b-a55b",
      "modelAliases": {
        "opus": "nvidia/nemotron-3-ultra-550b-a55b",
        "sonnet": "nvidia/nemotron-3-ultra-550b-a55b",
        "haiku": "nvidia/nemotron-3.5-lightning-30b-a3b"
      },
      "capabilities": {
        "streaming": true,
        "tools": true,
        "thinking": true,
        "vision": false,
        "countTokens": false,
        "promptCaching": false
      },
      "translate": {
        "maxTokensParam": "max_tokens",
        "reasoningEffortFromBudget": false,
        "reasoningContentField": "reasoning_content",
        "supportsParallelToolCalls": false,
        "systemRole": "system",
        "streamIncludeUsage": true
      },
      "userBaseUrl": true,
      "phase": 1,
      "enabled": true,
      "notes": "A user's OWN key (owner, 2026-10-12: \"bring back the nvidia for local only, i have apikey want to use it now\"). The host translates it on the PC (engine/local-upstream.ts) and the key never reaches the gateway. Seven models (owner, 2026-10-26: \"add only these\"), all NVIDIA-hosted and tool-calling (build.nvidia.com); a context window is set only where the model card states one, otherwise the engine's 200k default applies. Left out: embeddings, safety filters, parsers, and every model that timed out, answered 404 or reached end of life when measured with a real key.",
      "docsUrl": "https://docs.api.nvidia.com/nim/"
    }
  ]
}
