Skip to main content
Gathers your credentials, discovers your tenant and workspace, encrypts your profile, and writes the local config file (murmur.local.yaml). Run this once per repo to get ready to spawn agents.

Synopsis

murmur setup takes no positional arguments. The subscription and connection subcommands must come directly after setup.

Arguments

What it does

Interactive murmur setup runs eight sections:
  1. Control plane: Reports the murmur API server address setup talks to.
  2. Sign in: Chooses how murmur verifies who you are: your gh CLI login (recommended), or a one-time device-flow code from murmur’s GitHub App. If the gh token cannot serve as identity (for example, it is a personal access token), setup falls back to the device flow. A device-flow identity is stored in the OS keychain.
  3. GitHub access: Chooses the token agents act with on GitHub: from the gh CLI (refreshed with gh auth token on every spawn), or a fixed token you paste (for example, a bot account’s PAT). If gh is not authenticated, setup runs gh auth login for you.
  4. Tenant & workspace: Lists the tenants you belong to and lets you pick one. A single tenant is selected automatically. Then lists workspaces for that tenant. If .murmur/murmur.yaml does not exist, setup asks before creating it.
  5. Claude: Uses ANTHROPIC_API_KEY from the environment, signs in with a Claude subscription (OAuth), takes a pasted Anthropic API key, or skips. Without a Claude credential, Claude agents run on murmur-billed inference.
  6. OpenAI / Codex: Uses OPENAI_API_KEY from the environment, signs in with a ChatGPT subscription (OAuth), takes a pasted OpenAI API key, or skips. Without one, Codex agents run on murmur-billed inference.
  7. Git & SSH: Offers to generate an ed25519 SSH key when ~/.ssh has none, and offers to set up commit signing.
  8. Save & finish: Creates or updates .murmur/murmur.yaml (shared team config) with your tenant and workspace. A newly created file also adds .murmur/murmur.local.yaml to .gitignore. Encrypts your credentials and writes murmur.local.yaml (personal, gitignored). Optionally uploads your profile so you can spawn agents from the dashboard. A subscription credential gathered in this run is always uploaded. Finally, offers to register murmur as an MCP server with Claude Code (claude mcp add -s user murmur -- <murmur> mcp) and Codex (codex mcp add murmur -- <murmur> mcp).
On a re-run, sections whose recorded credential is still usable offer to keep it.

MCP registration only

murmur setup --mcp runs step 8’s MCP registration by itself. Each prompt defaults to yes. It fails when neither claude nor codex is on PATH, or when a registration you confirmed does not complete.

Non-interactive mode

With --non-interactive, murmur setup reads credentials from environment variables instead of prompting. An existing .murmur/murmur.yaml is required. The recognized variables are: All backend credentials are optional. Without one, agents on that backend run on murmur-billed inference. Without --upload, the profile is written locally and not uploaded.

Subscriptions and connections

murmur setup subscription manages the Claude (Anthropic) and Codex (OpenAI/ChatGPT) subscriptions that spawns round-robin across. murmur setup connection manages the inference connections that opencode models run on. See murmur setup subscription and murmur setup connection.

Examples

Interactive setup in a new repo

Abbreviated output (prompts omitted):

Non-interactive setup in CI

Write local config to stdout

Register the MCP server only

Errors