Skip to main content
Manages your inference connections. A connection is what an opencode model string names before its first slash: murmur spawn --model openrouter/qwen/qwen3-coder runs on the connection with id openrouter. The id selects the endpoint and the key, and nothing else. Agents reach the endpoint through Murmur’s inference gateway, which attaches the stored key. The key never lands on a VM. It is stored as the secret CONNECTION_<ID>_API_KEY (id upper-cased, hyphens turned into underscores), which must not already exist. A service profile’s secret also carries the profile name, CONNECTION_<PROFILE>_<ID>_API_KEY, because its secrets are tenant-wide.

Synopsis

ls is an alias for list, and rm for remove. The subcommands take flags only.

Subcommands

Provider and protocol

--provider associates a connection with a models.dev provider. The provider’s catalog fills the dashboard’s model list and prices the agent’s turns. It never decides where a call is sent or which key it carries. Two connections can share one provider, for example fireworks-dev and fireworks-prod with separate keys, both --provider fireworks-ai. A connection to an endpoint the catalog does not list needs no provider: its models are typed by hand and its turns are reported unpriced. Every connection records the wire protocol its endpoint speaks. The gateway forwards that protocol, and it selects the SDK driver the agent loads: The two Responses protocols post to the same path and differ in the body. Use xai-responses for an xAI endpoint and openai-responses for api.openai.com and endpoints that mirror it. When --provider names a preset, the preset’s protocol, endpoint, and name fill in any flags you omit. Otherwise --protocol and --base-url are required. Presets are catalog metadata, not proof of access: the key decides what the connection serves.

add flags

Common flags

Output

add and remove print a success line on stderr:
list prints a table:
With no connections, list prints a hint to stderr instead. presets prints a table of providers:
When the models.dev catalog is unavailable, presets says so on stderr. A connection can still be added with --protocol and --base-url.

Examples

Add a connection from a preset

The command prompts for the API key.

Two connections for one provider

A self-hosted endpoint

Spawn on it with murmur spawn --model acme-llm/qwen3-coder-480b.

A preset with an explicit endpoint

List and remove

Errors