Agent CLI

mur agent cli opens an interactive, streaming terminal chat with a running MUR agent — tokens stream live, tool calls show as step cards, and risky actions pause for your approval.

mur agent cli coach            # chat with the "coach" agent
murmur coach                   # quick form — the murmur symlink is identical
mur agent cli coach --resume   # continue the last conversation
mur agent cli dev qa ops       # three agents, one tiled pane each
murmur                         # bare murmur opens the concierge

The agent must be running (mur agent status <name>; start one with mur agent start <name>). Multiple names open one pane per agent — tmux is preferred, with zellij / WezTerm / kitty auto-detected. See Agent Lifecycle for start/stop/remove and what changes once it runs as a service.

Keys

KeyAction
EnterSend the message
Alt+EnterInsert a newline
↑ / ↓Move through the completion menu (when open)
Tab / EnterAccept the highlighted completion or suggestion
EscDismiss the menu · clear the input · cancel a streaming turn
Ctrl+VPaste a screenshot from the clipboard
Ctrl+OOpen the full transcript in a pager
Ctrl+DQuit

Completion menu

Type / to open a filtered menu of everything you can invoke — built-in slash commands (with their sub-commands) and the agent's own skills. Keep typing to filter, ↑↓ to move, Tab or Enter to accept, Esc to dismiss. Commands with sub-commands expand to a second layer (for example /mcp → list · add · remove · …), and the agent's skills appear by name so you can drop one straight into your message.

Slash commands

CommandDoes
/helpShow the in-chat cheatsheet
/clearStart a fresh conversation
/cardShow the agent's A2A card
/sessionsList past conversations
/channels [N] [--follow]List channels, switch to channel N, or live-tail channel N while you keep chatting
/model [N|name]List the registry's models (current one marked, with prices) or switch to another — the next message uses it, no restart
/auto [on|off]Toggle session-wide auto-approval of tool calls
/mcp …Manage the agent's MCP servers (list · add · remove · …)
/skill …Manage the agent's skills (list · add · remove)
/login [anthropic|chatgpt]OAuth health for every provider, or repair one — re-read the credential, ask the owner CLI to refresh, and only then a browser login
/skin [dark|light|mur]Switch the colour theme
/quitExit

Suggested replies

When the agent wants you to pick from a short set of options, it offers them as Tab-to-fill suggestions right in your input box — no copy-paste. A single suggestion shows as greyed ghost text you accept with Tab; several show as a small picker you move through with ↑↓ and accept with Tab/Enter. Start typing to ignore them.

Live fleet progress

When the agent you are chatting with kicks off a fleet (the concierge's fleet_run tool), the TUI arms two things automatically — no flag, no command:

  • a member rail at the bottom: one row per fleet member with its live state (working / blocked on approval / done / failed), the sub-goal it was handed, and elapsed time;
  • a milestone feed in the transcript: delegations with their sub-goal, each member's own completion summary with how long the turn took, run outcomes, loop-guard notes, and approval gates (with the exact mur channel approve … command inline).

Milestones come from the fleet's signed channel, so what you see is what was recorded — not a narration. The raw event stream is still there when you want it: /channels N --follow live-tails any channel line by line, and mur agent cli <name> --fleet <fleet> arms the rail at launch for a fleet you are about to run by hand.

Tool approvals

By default the agent pauses before any write or otherwise risky tool call and shows you exactly what it's about to run — approve or deny in place. To loosen this for a session:

mur agent cli coach --auto          # auto-approve every tool call this session
mur agent cli coach --auto-reads    # auto-approve only read-only commands

You can also toggle full auto-approval mid-chat with /auto on / /auto off. Approvals are never persisted — a fresh session always starts back at ask-first.

--auto-reads covers read_file and shell commands a conservative classifier can prove read-only (cat, ls, grep, git status, …). Anything it cannot prove still asks. It behaves the same in --plain mode, so a piped or headless run doesn't stop on every read.

/auto off also revokes the per-tool grants made with [a], and the AUTO: badge in the status bar names the tools currently muted rather than only counting them — so you can see what you granted, and take it back.

Answering a gate

An open gate always renders somewhere: inline on the step card that triggered it, or as a centred modal when that card has scrolled out of the live view. The status line names the tool and counts down to the auto-deny.

KeyAction
yApprove this call
a aAlways allow this tool for the session — two presses
A AAlways allow every tool for the session — two presses
n / EscDeny

Decision keys only count while the composer is empty. Once you have started typing, y / a / n are ordinary characters — a message that happens to contain one cannot decide the gate behind your back. The session-wide grants take two presses for the same reason: a single keystroke should never hand out blanket approval.

If nobody answers, the gate expires, the call is denied, and the status line stops asking.