Reference
The muon CLI
Everything the desktop app and TUI do is reachable from muon. The CLI auto-starts the embedded local brain on first use — there is nothing to boot by hand. Run muon <command> --help for the full, current option list.
Global flags
--api-base <url> overrides the local brain's API base; --api-token <token> (or MUON_API_TOKEN) supplies a bearer token. Leave both unset for the normal local flow — the CLI discovers a running brain itself, or spawns one.
Set up and sign in
muon setup [--vendors <list>] [--all] [--repair] [--observer] [--check] [--yes] [--json] [--prompt] [--attach] [--force] [--no-interactive]
--yes takes safe defaults without prompts and never installs software or attaches a seat. --check is a read-only prerequisite, registration and brain check; --repair re-applies the agent CLIs you already chose; --observer registers the read-only toolset; --prompt prints the agent setup prompt. MUON remembers your choice so a drifted config can be repaired without re-learning it.muon login / muon logout
muon onboard
muon quickstart [--workspace <dir>]
Chat with the orchestrator
muon chat [--workspace <dir>] [--chat-id <id>] [--message <text>] [--model <id>]
--message it opens an interactive REPL (/quit to exit); with one it sends and exits, so it scripts cleanly. --archive soft-archives the chat (history and audit trail survive); --cancel stops every queued or running job in the chat.Dispatch control
muon dispatch --task-id <id> --vendor <vendor> --brief <text> [--model <id>] [--role <role>] [--json]
muon dispatch status --job-id <id> line to follow it; --json prints the raw job record instead. With no --model, MUON picks its model for the role unless the agent's settings or the task's harness name one; a task that a routine runs uses only its routine's model, or none if the routine pins none. --model default skips MUON's pick: the model named in the agent's settings or the task's harness applies, and if neither names one, the agent's own default does.muon dispatch status [--job-id <id>] [--chat-id <id>] [--json]
muon dispatch wait --job-id <id> [--timeout <s>] [--interval <s>] [--json]
--interval seconds (default 1) for at most --timeout seconds (default 300). The wait never exceeds --timeout; a status read still in flight at the deadline is abandoned. Prints the job's final report; --json prints the job record instead, or nothing if no status was read before the deadline. Exits 0 when the job is done, 1 when it failed or was interrupted, and 124 on timeout, so it scripts cleanly.muon dispatch interrupt --job-id <id>
muon dispatch steer --job-id <id> --message <text>
muon dispatch raise --job-id <id> --pool-ms <ms>
Fleet and agents
The five crew lanes are claude-code, codex, cursor, opencode and kiro. Grok Build connects through MCP and cannot be dispatched as a worker.
muon agents [--json] [--refresh]
muon fleet [--json]
muon fleet set --claude-code <n> --codex <n> --cursor <n> --opencode <n> --kiro <n>
muon fleet agents [--json]
Memory
Decisions, constraints, conventions, attempts and questions — every read is fenced to the invoking workspace by default (--workspace <path> to target another).
muon memory add --kind <decision|constraint|convention|attempt|question> --text <text>
--task-id, --lane-id, --module, --symbol or --topic.muon memory search <query...> [--filter <json>]
muon memory library [--q] [--status] [--confirmed] [--kind] [--trust]
muon memory recall [--task-id] [--lane-id] [--module] [--topic]
muon memory review [--auto] [--from-pack]
muon memory confirm --note-id <id> / muon memory reject --note-id <id>
muon memory pack export --out <dir> | import <store> | sync <store>
MCP server registration
muon mcp install <claude|codex|cursor|opencode|kiro|grok> [--scope user|project] [--mode base|observer] [--chat <id>] [--dry-run] [--force] [--json]
.kiro/settings/mcp.json. For Kiro, install runs the setup check first and refuses on a blocking problem; --force installs anyway.muon kiro doctor [--workspace <dir>] [--json]
--agent-engine v2, API key or login, IAM Identity Center profile, models, the folder's .kiro files, and Kiro seats. Each problem comes with the exact fix. Runs without starting MUON. See Set up Kiro.muon mcp status [vendor] [--scope <scope>] [--json]
muon mcp probe [vendor] [--mode <mode>] [--timeout <ms>] [--json]
muon mcp uninstall <vendor>
muon mcp attach <claude|codex|cursor|opencode|kiro|grok> / muon mcp detach <vendor>
Diagnostics and lifecycle
muon doctor [--json] [--verbose] [--fix] (alias: muon status)
--fix re-registers MUON in the agent CLIs you already chose; --verbose prints the full diagnostic JSON. It exits 1 when anything needs attention and 0 only when everything is ready.muon version
muon update [--check] [--dry-run] [--cli-only] [--desktop-only]
--check reports available updates without changing anything; --dry-run prints what would run.muon graph reindex [--workspace <dir>]
muon github
muon consent
muon watch
muon questions
muon telemetry
muon context <target> [--view-proposal <noteId>]
muon approve list | review --approval-id <id> | resolve --approval-id <id> --status approved|rejected
muon start / muon runtime / muon shutdown
muon uninstall