Third-party endpoints · checked 2026-09-22

Third-party endpoints and keys in Orca, set per agent

Its docs say Orca runs any CLI agent that works in a terminal, the picker just starts a process, so the endpoint and key go into the config the agent itself reads. This page lays out 11 rows: where a vendor names a field we copy it, where it does not (a third-party endpoint for Cursor CLI) we say so. Anthropic-style agents change an endpoint variable, OpenAI-compatible ones set base_url, a key and a model id, and the two families fail in different places (checked 2026-09-22).

Updated 2026-09-22

#11 agents in this table#verbatim from official docs#BYOK: bring your own key#Anthropic-style vs OpenAI-compatible

4 things this table settles

10 / 11

Rows with a verbatim official quote

The 11 CLI agents sit in rows, and each row copies only the config location and field names stated in that agent's official docs, with the source attached. As of 2026-09-22, 10 rows have a verbatim sentence on custom endpoints or bring-your-own keys; on the Cursor CLI row the official docs stay silent. Each agent gets its own row, and nothing gets filled in for a vendor.

2 endpoint families

Anthropic Messages vs OpenAI-compatible

One family is Anthropic Messages: Claude Code sets ANTHROPIC_BASE_URL to route requests through a proxy or gateway, with the credential in ANTHROPIC_AUTH_TOKEN or ANTHROPIC_API_KEY depending on the header the other side expects. Those same docs state that Anthropic audits no third-party gateway and supports no routing of Claude Code to non-Claude models. The other family is OpenAI-compatible: base_url, key and model id go in that agent's own global config or settings panel. Checked 2026-09-22.

3 switches in Orca

Agent picker, launch args in Settings, worker-start

None of the 3 edits an endpoint for you. The built-in agent picker just starts a preconfigured CLI in a terminal, and deeper integration is noted per agent. Settings can override one agent's default launch arguments and environment, after which Orca leaves that agent alone. For orca orchestration worker-start, --model is documented for these 3 only, and orchestration has to be enabled under Settings → Experimental first. The docs say command flags evolve with the app, so this holds as of 2026-09-22.

1 of 11 rows

Cursor CLI: no third-party endpoint in the docs

Cursor CLI documents 2 sign-in paths: browser login, or a user API key from Cursor's own dashboard passed as CURSOR_API_KEY. In the configuration docs checked on 2026-09-22 the network items are proxy and HTTP/1.1 settings, with no general base_url; bring-your-own credentials are documented only for AWS Bedrock, which officially goes through your AWS account instead of Cursor's model providers. So this row reads not documented, which is not the same as unsupported.

Before the table: 3 layers

Endpoint layer: every CLI agent reads only its own config. The Anthropic-style family redirects through environment variables; the OpenAI-compatible family enters a base URL, a key and a model ID in that agent's config file or settings panel, using the field names from each vendor's docs. Credential layer: the key is issued by the model provider or gateway and goes where those docs point - a variable name, a config field or a box in the settings panel. Orchestration layer: Orca's own wording for the built-in picker is “the agent combobox just launches a process in a terminal”, and it names its own part as the worktree, terminal panes, review flow and session management. So “a third-party key in Orca” means editing the config of these 11 agents separately. Field names and sources checked 2026-09-22.

Why this table carries a date

As of the 2026-09-22 check, pointing an agent at a third-party endpoint is a documented feature, not a forum trick: the Droid BYOK page says “Use your own OpenAI or Anthropic keys”; Qwen Code names OpenRouter and Requesty inside its OpenAI-compatible section; OpenCode states that the baseURL option can be set for any provider, citing proxy services and custom endpoints; the Codex config schema defines base_url as that provider's OpenAI-compatible API address; the Grok CLI custom-models guide opens with alternative providers and self-hosted models. The movement also runs backwards: the Roo Code sunset page says all its products shut down on 2026-05-15, so that row stays official but historical. Docs move at different paces (OpenCode prints 2026-09-21 as its update date, Roo Code 2026-05-15), so this page carries only its own check date, 2026-09-22.

Timeline of the checks

2026-05-15

Roo Code's shutdown date and scope go unwritten: the official page gave no verbatim sentence and the site has not checked it (2026-09-22). Its row still copies the official wording, but it reads as history.

2026-09-21

2026-09-21: the last-updated date in the footer of the official OpenCode Providers page, which is also where any provider's baseURL is documented as pointing at a proxy service or a custom endpoint. This page does not adopt each vendor's own footer date; it carries only its own check date.

2026-09-22

2026-09-22: every row was re-read against the official docs of the 11 agents and of Orca; paths and field names are copied as vendors write them, each row keeps its source, and Cursor CLI is marked not documented, not unsupported. Orca says its flags evolve with the app, so the table holds only for this date.

What the docs state, and what they do not

Stated word for word

10 of the 11 rows copy wording that exists word for word in that agent's docs: Claude Code - ANTHROPIC_BASE_URL plus ANTHROPIC_AUTH_TOKEN or ANTHROPIC_API_KEY; Codex - base_url and env_key in a model_providers section; OpenCode and Kilo Code - options.baseURL, each on its own page; Cline and Roo Code - API Provider, Base URL, API Key and Model in the settings panel (no config path given); Qwen Code - baseUrl and envKey under modelProviders in settings.json; Kimi Code - base_url under its openai entry; Droid - customModels in ~/.factory/settings.json with model, baseUrl, apiKey; Grok CLI - base_url and env_key in ~/.grok/config.toml. Orca adds 3 documented sentences: the picker just launches a process in a terminal, one agent's arguments and environment can be overridden in Settings, and --model covers Claude, Codex and Cursor. Checked 2026-09-22.

3 things this table does not say

Item 1: the Cursor CLI row says “not documented”, not “not supported”. Scanning all 15 of its CLI doc pages on 2026-09-22 gives 0 hits for base_url, baseUrl, OPENAI_BASE_URL and ANTHROPIC_BASE_URL, shows only 4 CURSOR_ variables, and lists browser login plus a user API key from Cursor's dashboard; the only own-credentials path documented is AWS Bedrock. Item 2: “supports a custom endpoint” is not “any endpoint will run”. Droid writes “we cannot guarantee that all custom models will work out of the box”, and Anthropic states it does not endorse, maintain or audit third-party gateway products and does not support routing Claude Code to non-Claude models. Item 3: the rows are not equally current - Roo Code dates its shutdown to 2026-05-15, while the OpenCode providers page prints 2026-09-21. This page describes the mapping on 2026-09-22 only.

2 ways to set an endpoint: shared and different

What the 2 styles share

The 2 styles do one job: stop that agent from sending inference requests to the vendor's first-party host. The edit always lives in the agent's own config, and both need the same 3 items: an endpoint, a key, a model ID. On the Orca side the 2 styles are treated alike - the docs say the built-in picker just launches a process in a terminal, that one agent's default launch arguments and environment can be overridden in Settings, and that Orca leaves an already overridden agent alone. Checked 2026-09-22.

Where the 2 differ, and the traps

The traps sit in different places. Claude Code, which speaks Anthropic Messages, edits environment variables or the env block of settings.json; the docs give the file precedence when both set one variable, switch MCP tool search off by default on a non-first-party host and disable Remote Control when the host is not api.anthropic.com. Anthropic also says it does not endorse, maintain or audit third-party gateway products, and an endpoint must serve /v1/messages and pass anthropic-beta and anthropic-version through unchanged. In the OpenAI-compatible family the trap is spelling: base_url in Codex and Kimi Code, options.baseURL in OpenCode and Kilo Code, baseUrl in Qwen Code and Droid; the key is a typed value in the Cline and Roo Code panels, but a variable name in Codex env_key, Qwen Code envKey and Grok CLI env_key. Checked 2026-09-22.

3 steps: pick the family, write it, verify it

Step 1 — the family. Anthropic Messages is set by variables: Claude Code puts the endpoint in ANTHROPIC_BASE_URL, whose official wording is routing requests through a proxy or gateway. The others here are OpenAI-compatible, with base_url, key and model id inside that agent's own config. Step 2 — where the docs say to write it. In a file: the env block of Claude Code's settings.json, or a custom-named model_providers section in ~/.codex/config.toml. In a panel: Cline and Roo Code both say to choose OpenAI Compatible as the API Provider, then fill Base URL, API Key, Model. Step 3 — one minimal request. In Orca's Settings you override that agent's launch arguments or environment, and the docs say an agent you overrode is left alone; where it ships its own check, use it — Grok tells you to run grok inspect after editing ~/.grok/config.toml (checked 2026-09-22).

Where the key actually comes in

Orca proxies no models and holds no credentials: the official first-session page says it launches the agent's CLI in the right working directory and forwards your subscription credentials. So the endpoint and the key both change inside that launched CLI's own config, and that key can be a QCode one — that is the only bridge here. We never write that Orca supports QCode, nor that plugging in is enough: Anthropic's official wording is that it does not endorse, maintain or audit third-party gateways and does not support routing Claude Code to non-Claude models, and the examples its docs name are LiteLLM, Kong and internal proxies, not us. Pointing that family at a non-first-party host changes 2 documented behaviours; those, and the 2 variables, are on /anthropic-base-url-setup-guide. Aggregate-side usage per key is on /api-key-usage-query-guide (checked 2026-09-22).

FAQ

Can several agents on one machine each use their own key?

Yes, because they never shared one config to begin with. Orca's supported page says the agent combobox just launches a process in a terminal, so the endpoint and the credential belong to whichever CLI got launched: Claude Code reads the env block in settings.json plus those 2 variables, Codex reads ~/.codex/config.toml, Droid reads its customModels entries in ~/.factory/settings.json, Qwen Code reads ~/.qwen/settings.json, and Cline and Roo Code read what you typed into their settings panels. On the Claude Code side the official line adds a rule: a gateway credential variable takes precedence over a saved claude.ai login or Console key, so your own key outranks the subscription. Cursor CLI is the counter-example: the docs give only browser login and an API key, and that key comes from Cursor's own dashboard. Checked 2026-09-22.

Why doesn't Orca's usage bar show the gateway I pointed at?

Because it never asks the vendor. The official usage-tracking page says Orca reads the local usage state each agent maintains on disk, followed immediately by No API calls, no extra auth., and the same page says numbers update when the agent writes, not in real time. The coverage that page names is 6 agents: Claude Code, Codex, Gemini, OpenCode, Kimi Code, MiniMax. Whether that readout stays correct after you point an endpoint at a third-party gateway is not written in the official docs, and this page does not guess for them. Look at the key provider's own side for the aggregated bill (checked 2026-09-22).

Why does --model do nothing for some agents?

Because the docs give it to 3 agents only. The orchestration page says --model accepts opaque provider model IDs for Claude, Codex, and Cursor., and in the same sentence requires --effort to come with --model and to apply only when that agent and model support the level. Those commands also need Settings → Experimental switched on first. For the rest, a different endpoint or model is set in that agent's own config, which is what the 11 rows of the table on this page are for. Orca itself writes Command flags evolve with the app, so this shape holds only for the day it was checked, 2026-09-22.

Will an Orca update overwrite the endpoint I changed?

Two layers. What Orca's docs commit to is about launch arguments and environment: new launches come with each supported CLI's permission-bypass flag pre-filled, and once you have overridden a specific agent the official sentence is Orca leaves that agent alone, followed by a rule that a non-empty custom value counts as an explicit override and opts that agent out of later permission-mode migrations. The docs never say whether some update will rewrite your agent config files, and there is no blanket guarantee to quote — those two sentences are all there is. What really drifts is field names and paths in vendor docs: the endpoint sits in your user-level file, and updating Orca is a different event from updating that CLI (checked 2026-09-22).

How do I diagnose a wrong endpoint?

Start with the shape of base_url: Qwen's docs say that for a hosted OpenAI-compatible gateway you set baseUrl to the API's /v1 root, for example https://gateway.example.com/v1, not the full /v1/chat/completions path, since the SDK appends that path itself. Then check the family: Claude Code's Anthropic Messages format expects the endpoint to forward the anthropic-beta and anthropic-version headers unchanged. Then confirm the config was read: Grok's docs say to run grok inspect after editing ~/.grok/config.toml and see what it found there. Finally the credential slot: Claude Code's rule is ANTHROPIC_AUTH_TOKEN when the other side says bearer token or Authorization header and ANTHROPIC_API_KEY when it says API key or x-api-key, and when a shell export and the settings.json env block set the same variable, the file wins (checked 2026-09-22).

Which file do these keys actually end up in?

It differs per agent, and splits into files and settings panels. Claude Code: the official route is an env block in settings.json, plus an explicit warning not to put the credential in a project's .claude/settings.json, which gets committed to the repository. Codex: in the official schema env_key stores the name of an environment variable, not the key, and the inline field is marked discouraged for security reasons. Kilo: environment references resolve only in trusted locations, a project file committed to a repo cannot resolve them, and the docs end with Keep provider credentials in your global config. OpenCode: /connect writes credentials into ~/.local/share/opencode/auth.json. Cline and Roo Code: an API Key field in the settings panel. Grok also says Prefer env_key over hardcoding api_key. Orca stores none of this; it only launches that CLI (checked 2026-09-22).

Sources

Orca: agents/supported, agents/usage-tracking, cli/orchestration and first-session under https://raw.githubusercontent.com/stablyai/orca/main/docs/site/content/docs/, rendered at https://www.onorca.dev/docs. Agents: code.claude.com/docs/en/env-vars plus llm-gateway, llm-gateway-connect and llm-gateway-protocol; raw.githubusercontent.com/openai/codex/main/codex-rs/core/config.schema.json; opencode.ai/docs/providers/; docs.cline.bot/provider-config/openai-compatible; docs.roocode.com/providers/openai-compatible and its sunset; kilo.ai/docs/code-with-ai/agents/custom-models; github.com/QwenLM/qwen-code/blob/main/docs/users/configuration/auth.md; docs.factory.ai/model-independence/byok.md; cursor.com/docs/cli/reference/authentication; docs.x.ai/build/overview and build/settings/reference. All checked 2026-09-22; a page dated earlier is quoted as it stood that day.

Set the endpoint right, then go parallel

This page answers one thing: for each of the 11 CLI agents in that table, where its official docs put a third-party endpoint and what the fields are called. Orca ships no model — it runs agents you already subscribe to, and the CLI it launches reads your own config, where that key can be a QCode one. This site makes no promise about any gateway or its compatibility; official wording checked 2026-09-22.

Related reading

This page paraphrases documentation that Orca and each CLI vendor in that table publish in the open. We are not affiliated with Orca, Stably or any of those vendors and hold no endorsement from them. File paths, field names and command shapes are bounded by the official pages captured on 2026-09-22; vendors revise their docs, and Orca itself says its command flags evolve with the app. Roo Code's official sunset page says all its products shut down on 2026-05-15, so that row reads as history. QCode is only one possible provider of the key in that config — we judge no third-party gateway's compatibility and take no responsibility for the behaviour of Orca or of any CLI agent.