Connections are named, and any option can be held more than once: two Claude plans and an Anthropic API key can coexist. Saving one never touches another. Names are unique per option, so a second add of the same option needs a different name.
Default connection
You have a default connection for each harness. Tasks use it when neither their own setting nor a profile pin says otherwise.- The first task-usable connection you add becomes the default when none was chosen. Your agent’s own host login is not task-usable and never becomes a task default.
- Adding a second connection never moves the default. Choose Make default for Claude Code tasks, Make default for Codex tasks, or Make default for OpenCode tasks from a row’s menu in Settings → Connections to move it yourself.
- Disconnecting the default is refused while you hold another task-usable connection for that harness. Choose a different default first.
- Disconnecting the last task-usable connection sets the default to Aether inference for Claude Code and Codex. For OpenCode it removes the default: Aether inference does not serve OpenCode, so choose or add a connection before another turn can run.
- With nothing ever chosen, Claude Code and Codex tasks run on Aether inference by rule. OpenCode tasks are refused until you add a connection.
Add a connection
Every connection lives in one collection on the API:GET /connections lists them all, each with its option, which decides the agents it works with. Each option’s add route is named by its slug, the option with hyphens for underscores (openrouter_api_key is openrouter-api-key): POST /connections/{slug} adds one, and POST /connections/{id}/reconnect reconnects one in place with a credential of its option. A ChatGPT plan is added and reconnected through its device flow instead, and your agent’s own ChatGPT login is never added here. PATCH /connections/{id} renames a connection and DELETE /connections/{id} removes it. See the Connections API.
Connect from the web app under Settings → Connections, or with the CLI. Each provider’s CLI commands share the same shape:
connect(andapi-keywhere the provider takes one) adds a connection under--name. Without--name, the connection is named after its option, for exampleClaude plan.reconnect --name <name>refreshes an existing plan or auth file in place;api-key --reconnect <name>rotates a held key. The id stays unchanged, so your agent, profiles and tasks keep pointing at the same row.statuslists every connection the agent works with, with whether it needs re-authentication.- The disconnect command removes one connection by name. If you hold only one, you can omit the name; see each harness’s CLI reference for its command.
Codex
Codex works with a ChatGPT plan connected by device login, or an OpenAI API key.- Web
- CLI
In Settings → Connections, choose Add, pick the ChatGPT plan or the OpenAI API key, name the connection, and either start the device login or paste the key.
POST /connections/chatgpt-plan/device-auths, which carries mode add with the new connection’s name, or mode reconnect with the connection_id of the ChatGPT plan it reconnects, and answers the sign-in’s id; GET /connections/chatgpt-plan/device-auths/{id} reads it until it is complete. A key is sent to POST /connections/openai-api-key.
Claude Code
Claude Code authenticates with a Claude plan’s setup token or an Anthropic API key.- Web
- CLI
In Settings → Connections, choose Add, pick the Claude plan or the Anthropic API key, name the connection, and paste the setup token printed by
claude setup-token or the key.POST /connections/claude-plan and a key to POST /connections/anthropic-api-key.
OpenCode
OpenCode authenticates with theauth.json file written by your local OpenCode login (opencode auth login). The file is uploaded verbatim and materialized into each task’s config directory at session start.
- Web
- CLI
In Settings → Connections, choose Add, pick OpenCode auth file and name the connection. Follow the CLI command shown, then click Check status.
POST /connections/opencode-auth-file.
OpenCode models routed through OpenRouter can use your own OpenRouter API key.
aether opencode api-key, or the OpenRouter API key option under Add, adds it as a connection of its own, sent to POST /connections/openrouter-api-key. See Agents and models.Refresh an existing connection
Use reconnect, notconnect, when a setup token expires or a key changes. Reconnect never adds a second connection:
connection_option_mismatch sentence unchanged. API-key --name (add) and --reconnect (replace) cannot be used together.
aether setup offers to reconnect a flagged connection instead of adding another. If several connections need re-authentication, it asks which one to reconnect. API keys are entered at a secure prompt. A provider with a healthy connection is already configured and is skipped by setup; use the commands above to refresh another row.
Next Steps
Agents and Models
Pick the agent, model, and reasoning effort per task.
Tasks
Choose what your task runs on.