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:
- GitHub authentication — Discovers your GitHub token via the
ghCLI. Ifghis not authenticated, opensgh auth loginfor you. - Tenant selection — Lists the tenants you belong to and lets you pick one. If only one tenant exists, it is selected automatically.
- Workspace selection — Lists workspaces for the selected tenant and lets you pick one.
- 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.
- OpenAI credentials — Checks for
OPENAI_API_KEYin the environment and prompts for confirmation. murmur.yamlcreation — Creates.murmur/murmur.yaml(shared team config) if it does not exist, with your tenant and workspace. Addsmurmur.local.yamlto.gitignore.- Profile encryption — Encrypts your credentials and writes
murmur.local.yaml(personal, gitignored). - Profile upload — Optionally uploads your profile so you can spawn agents from the dashboard.
- 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
Related
- Profiles and secrets — what the profile contains and how credentials are stored
- Workspaces — concept overview
murmur auth— standalone Claude OAuth flowmurmur init— onboarding wizard for new reposmurmur spawn— start an agent- Configuration: murmur.yaml — shared team config file
- Configuration: local overlays — per-developer local config