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

Arguments

What it does

In interactive mode, murmur setup walks through these steps:
  1. GitHub authentication — Discovers your GitHub token via the gh CLI. If gh is not authenticated, opens gh auth login for you.
  2. Tenant selection — Lists the tenants you belong to and lets you pick one. If only one tenant exists, it is selected automatically.
  3. Workspace selection — Lists workspaces for the selected tenant and lets you pick one.
  4. Claude credentials — Prompts for an Anthropic API key, or offers to run a Claude OAuth flow for subscription-based access. Skippable if you use an OpenAI key instead.
  5. OpenAI credentials — Checks for OPENAI_API_KEY in the environment and prompts for confirmation.
  6. murmur.yaml creation — Creates .murmur/murmur.yaml (shared team config) if it does not exist, with your tenant and workspace. Adds murmur.local.yaml to .gitignore.
  7. Profile encryption — Encrypts your credentials and writes murmur.local.yaml (personal, gitignored).
  8. Profile upload — Optionally uploads your profile so you can spawn agents from the dashboard.
  9. MCP server — If Claude Code is installed, offers to register murmur as an MCP server (claude mcp add).

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: At least one of a Claude OAuth token, an Anthropic API key, or an OpenAI API key is required.

murmur setup auth

murmur setup auth manages the labeled Claude OAuth credential set that spawns round-robin across. The legacy single credential from murmur setup is entry 0, label default. Your credentials are recorded in murmur.local.yaml — the source of truth, with every token value KMS-encrypted like the rest of the file — and after each change you are asked whether to upload them to your developer profile. The upload mirrors the file: it overwrites the profile’s Claude credential state from murmur.local.yaml. Declining leaves the profile stale; murmur setup auth update <label> re-runs the flow and offers the upload again. A confirmed upload after remove also deletes the removed credential’s server-side secrets — and if that upload was declined or failed, re-running murmur setup auth remove <label> offers to finish the server-side cleanup. Selection is server-side and does not require an upload: spawns from this machine (CLI or MCP) carry the full local rotation on the request, and the server assigns each spawn one credential from it (round-robin). The uploaded profile is what dashboard spawns select from — keep it mirrored if you spawn from the dashboard. With --service-profile NAME, the subcommands manage a service profile’s credential set instead. Service-profile credentials are server-only and never touch murmur.local.yaml.

Examples

Interactive setup in a new repo

Non-interactive setup in CI

Write local config to stdout

Errors