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
| Key | Action |
|---|---|
Enter | Send the message |
Alt+Enter | Insert a newline |
↑ / ↓ | Move through the completion menu (when open) |
Tab / Enter | Accept the highlighted completion or suggestion |
Esc | Dismiss the menu · clear the input · cancel a streaming turn |
Ctrl+V | Paste a screenshot from the clipboard |
Ctrl+O | Open the full transcript in a pager |
Ctrl+D | Quit |
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
| Command | Does |
|---|---|
/help | Show the in-chat cheatsheet |
/clear | Start a fresh conversation |
/card | Show the agent's A2A card |
/sessions | List 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 |
/quit | Exit |
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.
| Key | Action |
|---|---|
y | Approve this call |
a a | Always allow this tool for the session — two presses |
A A | Always allow every tool for the session — two presses |
n / Esc | Deny |
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.