EveryAPI docs everyapi.ai

Launching AI tools with everyapi use

The main reason to install the CLI. Every AI coding client has its own idea of which environment variable holds the key, whether the base URL wants a /v1 suffix, and where its config file lives. everyapi use knows all of them.

everyapi use claude
everyapi use codex
everyapi use        Picker over the tools actually installed

Syntax

everyapi use [<tool>] [--group <name> | --channel <name>] [--model <id>]
             [--sanitize] [--transparent[=false]] [-- tool args...]
--group <name>         Relay via the key bound to that routing group
--channel <name>       Alias of --group
--model <id>           Pick the model for this launch and remember it
--sanitize             Route through the local sanitizer proxy
--transparent[=false]  Keep the tool on its vendor's official origin
                       (on by default for claude and codex); =false
                       injects the gateway base URL and relay key
--                     End of parsing; the rest goes to the tool

A bare --group or --channel with no value opens a picker over your enabled keys' routing groups.

Supported tools

claude      codex       opencode    gemini      antigravity
aider       goose       crush       cline       openclaw
continue    kilo        pi          vibe        copilot
droid       openhands   forge       llxprt      grok
qwen-code   kimi-code   hermes      librefang
open-webui  pi-web      deepseek-harness

antigravity and librefang are native integrations: they keep their own authentication path and never receive a copied relay key. open-webui, pi-web, and deepseek-harness serve a browser UI — EveryAPI registers the provider and the whole compatible catalog up front, and the model is chosen inside that UI rather than by a terminal picker.

Provider names are not tool names. Use qwen-code and kimi-code for those vendors' official clients; to reach a provider's models from some other client, select them from that client's live catalog.

How each tool is pointed at the gateway

claude      ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN, live catalog
codex       OPENAI_API_KEY, persistent EveryAPI CODEX_HOME, a
            lifecycle-bound --profile, key-scoped model catalog
gemini      GEMINI_API_KEY, GOOGLE_GEMINI_BASE_URL, GEMINI_MODEL
aider       OpenAI-compatible env plus openai/<model> for LiteLLM
goose       GOOSE_PROVIDER=openai, GOOSE_MODEL, OPENAI_API_KEY
crush       Process-scoped CRUSH_GLOBAL_CONFIG, key from env
cline       Lifecycle-bound CLINE_PROVIDER_SETTINGS_PATH
openclaw    Process-scoped config with an env-backed SecretRef
continue    Lifecycle-bound CONTINUE_GLOBAL_DIR/config.yaml
kilo        Process-scoped KILO_CONFIG_CONTENT, env-backed key
pi          Isolated PI_CODING_AGENT_DIR holding models.json
pi-web      providers.everyapi in the durable PI_CODING_AGENT_DIR
vibe        Isolated VIBE_HOME/config.toml with api_key_env_var
copilot     Official COPILOT_PROVIDER_* BYOK environment
droid       Official --settings runtime file, one custom model
openhands   --override-with-envs plus process-only LLM_API_KEY
forge       Isolated FORGE_CONFIG with a pinned provider
llxprt      Isolated homes, pinned --provider/--baseurl/--model
grok        XAI_API_KEY, GROK_MODELS_BASE_URL, isolated GROK_HOME
qwen-code   OPENAI_API_KEY/_BASE_URL/_MODEL, scoped QWEN_HOME
kimi-code   KIMI_MODEL_* env, isolated KIMI_CODE_HOME
hermes      Generated HERMES_HOME/config.yaml, custom provider
open-webui  open-webui serve with OPENAI_API_BASE_URLS and _KEYS
deepseek-harness
            A provider entry in $DSH_HOME/settings.yaml plus creds

The pattern behind the table: wherever a client supports a process-scoped or lifecycle-bound configuration root, EveryAPI uses it and deletes it at exit, so a routed session cannot collide with your own configuration or with a concurrent launch on a different key.

Transparent mode

Default for Claude Code and Codex. Instead of pointing the client at a third-party base URL, the CLI starts an ephemeral HTTP CONNECT proxy on a random loopback port, mints a per-run CA whose private key never leaves memory, and gives the child only the proxy URL, the public CA bundle, and a non-secret placeholder credential. Registered model routes are decrypted locally and relayed to EveryAPI with the real key; every other HTTPS host is raw CONNECT passthrough.

What that buys: the relay key is absent from the child's environment and from any generated config, and the client stays on api.anthropic.com / api.openai.com.

What it does not buy, stated plainly:

Opt out per launch with --transparent=false. --sanitize composes with it rather than conflicting: the connector relays through the sanitizer.

Choosing a model

At launch the CLI fetches the live catalog for the selected key and group, drops incompatible media and embedding protocols, and injects the result into the client's own selector. Use /model in Claude Code, Codex, Qwen Code, or Kimi Code; Grok's /model, or hermes model for Hermes.

Tools with a model-environment contract — Gemini, Aider, Goose, Crush, Cline, OpenClaw, Continue, Kilo, Pi, Vibe, Copilot, Droid, OpenHands, Forge, LLxprt, Hermes, Qwen Code, Kimi Code — open EveryAPI's own picker; --model <id> skips it. A non-interactive run deterministically takes the first compatible model.

Reasoning level

everyapi use codex and everyapi use pi ask which reasoning level to launch at, once, then reuse the answer.

The two are gated differently because they know different things. Codex reads the levels its own bundled catalog publishes for that model and receives the choice as model_reasoning_effort; a model Codex has never heard of gets no step at all. Pi has no per-model table for a custom provider, so its step appears only where the gateway has verified the model takes an effort (supports_thinking on /v1/models), and it receives the choice as defaultThinkingLevel. A remembered level the current model does not offer is dropped rather than pinned.

Safety preferences

On the first interactive launch the CLI asks whether to enable dangerous mode, and for Codex whether to bypass hook trust review. The answers are saved in settings.json and reused without prompting. The prompt defaults to Yes, but nothing dangerous is enabled before you confirm. Change them later with everyapi settings set dangerous_mode false / codex_hook_trust_bypass false.

What the launched agent is told

A routed launch writes two process-scoped standards into the client's instruction surface: a pointer at this handbook, and the Artifact delivery standard below. Nothing the user owns is edited except by the one path that says so, and that path removes what it wrote.

The capability list exists because an agent that knows a command exists runs it, and one that does not asks you to go look it up — or answers from training data this platform is not in. So the agent is handed the commands that answer questions about this gateway and this account exactly, on a machine where the binary is already installed and already authenticated:

docs list | docs <topic> | docs search <query>  the handbook, offline
auth status                                     identity, quota, usage
stats usage | stats log stat                    consumption and spend
stats log summary | stats log list              per-model spend, recent logs
models list | models pricing                    routable models and rates
stats perf | stats upstream | doctor            model, provider, local health
token list                                      this account's keys, masked

Those are read-only and the agent runs them unprompted. Everything else is fenced off, and that split is the point rather than a detail: everyapi is not a read-only tool — token revoke, wallet topup, seller withdraw, and edge remove move money and destroy access. An agent handed the CLI as a uniform information source will eventually run one of them to "check" something, so the safe set is enumerated explicitly, everything outside it is declared state-changing and needs an explicit yes from you naming the exact command, and token key <id> is called out on its own — it changes nothing and still prints a credential in plaintext.

The agent is also told the handbook covers EveryAPI and not your own project, without which a model instructed to consult it reaches for it on unrelated questions.

How it reaches each client depends on what that client documents, and the three answers are not equally strong:

Through a named configuration surface — guaranteed to be read:

claude      --append-system-prompt
codex       developer_instructions in the generated config.toml
opencode    instructions file listed in the generated config
kilo        the same, through its OpenCode-compatible config
crush       options.context_paths
aider       --read
continue    rules in the generated config.yaml
gemini      context.includeDirectories in the settings overlay EveryAPI owns

Through the AGENTS.md convention — best-effort. Every process-scoped home EveryAPI creates carries EVERYAPI.md and AGENTS.md, so a client that reads the cross-tool convention out of its own home picks the pointer up, and one that does not sees an unused markdown file in a directory deleted when it exits. This covers grok, qwen-code, kimi-code, cline, droid, forge, llxprt, openclaw, pi, and vibe without naming any of them: the files are written by the single function all prepared homes come through, so a client added later inherits it.

Through a managed block — for a client whose only documented surface is a file the user owns. Goose is the case: its global hints live in ~/.config/goose/.goosehints, and CONTEXT_FILE_NAME selects a file name searched for in that hierarchy rather than a path that could be redirected. So the launch writes a delimited block into that file and removes exactly that block when it exits, leaving every other line untouched. It will not create the directory: a machine where Goose has never stored global configuration is left as it was. A launch killed hard enough to skip its cleanup leaves a block behind; the next one replaces it rather than stacking a second.

Two clients receive nothing: GitHub Copilot CLI and OpenHands, whose documented integration surface is the BYOK environment and a model override, with no instruction channel to attach to. Run everyapi docs yourself alongside them.

EVERYAPI_NO_AGENT_CONTEXT=1 opts a launch out of all of it.

Completion reports

Claude Code, Codex, OpenCode, and Kilo launches receive a process-scoped delivery standard through their documented instruction surfaces: after finishing a task, publish a sanitized self-contained HTML report through everyapi artifacts share and return the artifact URL. The launcher exports its own path as EVERYAPI_CLI_PATH, so the child uses the same authenticated installation even when everyapi is not on PATH. A publish failure never replaces the normal text result or invents a link, and no project-owned instruction file is ever edited.

Examples

everyapi use claude
everyapi use claude --transparent=false
everyapi use codex --channel byteplus
everyapi use codex -- resume
everyapi use hermes --model gpt-5.1
everyapi use grok -- --model grok-4.5
everyapi use hermes -- --tui

Everything after -- is forwarded to the tool verbatim.