Skip to main content

Agents

Each agent has its own idea of how a provider is configured, so alc translates one provider list into whatever the agent you are launching expects. This page is what it sets, agent by agent.

Every agent also runs on one codex login through the Codex bridge; alc --codex <agent> is the same command throughout, so it is not repeated below. The Antigravity CLI is the one that works differently there: it keeps its own Google login and gains the Codex models next to its own (On the Codex login). That Google login serves every other agent in turn (alc --agy <agent>).

Claude Code​

claude — install · accepts an Anthropic-compatible endpoint; any other API through alc's bridge (Any provider, any agent).

Claude Code gets a settings file (--settings) holding the endpoint, the model variables and the picker, and fetches its credential through apiKeyHelper from a hash-pinned alc executable with --runtime <id> claude-credential. Old unscoped helper calls retain legacy behavior. On Claude Code's own login the login answers and the file carries the endpoint and model. See Background sessions. An Ollama profile gets more — see Local models.

alc claude
alc --openrouter claude

Codex CLI​

codex — install · accepts the OpenAI Responses API; a Chat Completions or Anthropic-only provider through alc's bridge, as model_providers.alc_bridge.

alc sets --model and, when configured, --config model_reasoning_effort=<level>. A non-Codex provider also gets a full model_providers.<id>.* override (base_url, wire_api=responses, requires_openai_auth=false) and, when it needs a key, env_key plus ALC_PROVIDER_API_KEY. An Ollama profile gets --oss --local-provider ollama instead.

Codex CLI is the one agent that never goes through the bridge: a codex-kind profile runs it directly on your native login.

alc codex
alc --openrouter codex

OpenCode​

opencode — install · accepts any API-compatible provider.

alc sets an inline OPENCODE_CONFIG_CONTENT JSON variable, writing no file, naming the model as <provider-id>/<model>. The provider id is the kind name for Anthropic, OpenAI, OpenRouter and Ollama profiles, and alc-<profile> for every other kind.

A full provider.<id> object goes into the same JSON: always for Ollama, vLLM, llama.cpp, custom and the newer presets; for the first four only when the base URL has been pointed away from that kind's default. options.apiKey appears only when the profile needs a key, so a default Ollama profile gets none.

alc opencode
alc --zai opencode

Pi​

pi — install (npm install -g @earendil-works/pi-coding-agent) · accepts Anthropic, OpenAI or OpenAI-compatible.

alc merges an alc-<profile> entry into $PI_CODING_AGENT_DIR/models.json (default ~/.pi/agent/models.json) and passes --provider, --model and, with an effort configured, --thinking.

The merge is additive: alc only ever writes keys named alc-*, the write is atomic, and a models.json that fails to parse makes alc refuse rather than replace it. An anthropic profile with no stored key skips the merge entirely and launches with --provider anthropic, so Pi uses its own subscription login.

alc pi
alc --minimax pi

Copilot CLI​

copilot — install · accepts OpenAI- or Anthropic-compatible.

alc sets COPILOT_PROVIDER_TYPE, COPILOT_PROVIDER_BASE_URL, COPILOT_PROVIDER_API_KEY (skipped for keyless providers) and COPILOT_MODEL. Pure BYOK: no file is written and no GitHub Copilot login is needed.

alc copilot
alc --deepseek copilot

Goose​

goose — install · accepts OpenAI- or Anthropic-compatible.

alc sets GOOSE_PROVIDER, GOOSE_MODEL, an optional GOOSE_FAST_MODEL, and the BYOK variables that provider needs: OPENROUTER_API_KEY, OLLAMA_HOST, ANTHROPIC_API_KEY (plus ANTHROPIC_HOST when it differs from goose's default), or the OPENAI_* set.

With no arguments of your own, alc appends goose's interactive session subcommand; pass your own and they are forwarded exactly as given.

alc goose
alc --groq goose

Qwen Code​

qwen — install · accepts OpenAI-, Anthropic- or Gemini-compatible.

alc sets --auth-type <anthropic|openai|gemini> and --model, plus the matching environment: ANTHROPIC_*, GEMINI_API_KEY for the google kind, or OPENAI_*.

alc qwen
alc --xai qwen

Kimi Code CLI​

kimi — install · accepts OpenAI- or Anthropic-compatible.

alc reads your existing config (~/.kimi/config.toml, or ALC_KIMI_CONFIG), merges in providers.alc-<profile>, models.alc-<profile> and default_model, and writes the merged result to a new temp file (mode 0600) passed as --config-file. Your real config is never written to, and the temp file is deleted when Kimi exits, so the key touches disk only for the life of that process. Passing your own --config-file disables all of this.

alc kimi
alc --moonshot kimi

Antigravity CLI (agy)​

agy — Google's Antigravity CLI · runs on its own Google login, which also serves every other agent, and on the Codex login or any API provider through alc's bridge.

agy signs in to Google itself, so alc has no endpoint, key or config file to hand it and touches none of agy's credentials. It runs on the antigravity profile the starter configuration ships, and alc sets only --model from that profile and, when the profile names one, --effort. agy's efforts are low, medium, high, xhigh and max; a profile set to ultra launches on max, with a note saying so. A --model or --effort of your own after alc agy is forwarded as is, and alc then sends none of its own. agy lists wire ids only, so a bare family id on the profile (claude-opus-5-5, which the other agents' bridge reads too) reaches agy as the wire id for the profile's effort.

alc agy
alc agy --model gemini-3.8-flash-low
alc models --agy

The starting model is claude-opus-5-5-high, with no effort set, so agy uses its own default. alc models --agy lists what agy models reports, kept for a day (--refresh asks again), with a bundled list when agy cannot be asked, and marks an id no model family serves (not bridgeable): agy may run it, the other agents cannot. The Model row of an antigravity profile in alc config steps through the same list. A config.toml from an older alc has no antigravity profile; alc agy then names the fix, alc config upsert antigravity --kind antigravity.

The same login serves every other agent through alc's bridge: alc --agy claude, alc --agy opencode, and so on. See Providers for what alc borrows and what agy still owns.

On the Codex login​

alc --codex agy starts alc's bridge and points agy's CLOUD_CODE_URL at it. The bridge adds the Codex models to agy's own model list, one entry per reasoning effort (gpt-6.1-sol-high): agy's /model picker shows them as GPT-6.1-Sol · Codex, with agy's own effort slider from low to max, and Codex's ultra runs as max. Turns on a Codex model go to your codex login. Everything else agy asks — its own Gemini, Claude and GPT-OSS models, login checks, quota, and helper turns such as titles and checkpoints — is relayed to Google unchanged, with the token agy itself sent; alc reads and keeps no agy credential. agy therefore still needs its own Google sign-in, and /model switches between Codex and Google models mid-session.

alc --codex agy # starts on the codex profile's model and effort
alc --codex agy --model gemini-3.8-flash-low # a --model of your own wins

The session starts on the codex profile's model at its effort, passed as --model gpt-6.1-sol-<effort>. Turns on a Codex model are recorded as agent agy on the codex profile, so alc usage and alc tps count them. Any other provider with an API reaches agy the same way, through the bridge's translation (Any provider, any agent): alc --openrouter agy adds the profile's model to agy's picker, tagged with the profile name.

Direct API metrics​

alc --metrics <agent> opts into observation at supported alc-managed endpoint seams. It preserves the native SDK, protocol, model, arguments, and upstream authentication. Durable Claude observation uses a sealed-helper credential on the local hop, not the raw vendor key. Ordinary direct launches without the flag remain unchanged. Codex translation-bridge traffic is already observed automatically. Native Codex CLI login traffic is not bridge traffic.

AgentSupported direct observation seam
Claude Codealc's API-key settings/helper and Anthropic endpoint; an authenticated durable host and AEAD-sealed route/instance-bound surrogate support background restarts. Native login, keyless endpoints, or an overridden helper/endpoint/auth setting are refused.
Codex CLIalc-generated HTTP Responses provider configuration, requiring an explicit passthrough --config model_providers.alc_<profile-normalized>.supports_websockets=false (profile hyphens become underscores); missing/true is refused. WebSockets are not observed or force-disabled; ordinary no-metrics launches are unchanged. Native login and native Ollama integration are refused.
OpenCodeThe selected alc-managed provider's inline endpoint/configuration, not a custom provider/config override.
Copilot CLIalc's Anthropic- or OpenAI-compatible BYOK environment.
Qwen Codealc's Anthropic/OpenAI branches, not the Google/Gemini integration.
Goosealc's Anthropic/OpenAI branches, not native OpenRouter/Ollama integrations. OpenAI split endpoints containing query/fragment are refused for metrics; ordinary launches are unchanged.
Kimi Code CLIThe endpoint in alc's generated temporary provider config, not a user config/model/provider override.
PiUnavailable for direct launches: its endpoint is in a persistent shared models.json, which alc will not point at an ephemeral observer.
Antigravity CLIUnavailable: agy runs on its own login. Other agents on that login, and agy's Codex turns under alc --codex agy, are observed by alc's bridge automatically.

Native OAuth/login and explicit endpoint/helper/config/provider overrides outside these seams are not silently intercepted; explicit --metrics fails with a reason when unsafe or unsupported. --dry-run only describes the plan, starts no listener, and writes nothing. Claude's helper authenticates the host using the owner-only runtime bridge.observer-key, registers digests only, and seals the local credential; the host restores the upstream key/header only on fixed-endpoint dispatch. Old surrogates receive 401 after a restart; rerun the helper. forward-observer-v2 verifies actual host capability, not a version string. New launches use their own generation host while old hosts continue serving old sessions; no stop/relaunch of those sessions is required.

Local requests still use loopback HTTP, not TLS. Trust local processes: the Claude surrogate protects the raw key, not plaintext request bodies at a hijacked port. Other agents' ephemeral routes do not promise sealed credentials. Read Usage for timing basis, cost, and coverage limits.

Binary overrides​

Point any agent at a specific binary instead of resolving it from PATH:

AgentOverride env
Claude CodeALC_CLAUDE_BIN
Codex CLIALC_CODEX_BIN
OpenCodeALC_OPENCODE_BIN
PiALC_PI_BIN
Copilot CLIALC_COPILOT_BIN
GooseALC_GOOSE_BIN
Qwen CodeALC_QWEN_BIN
Kimi Code CLIALC_KIMI_BIN
Antigravity CLIALC_AGY_BIN