CLI reference¶
Environment: MURMUR_HOME relocates the home (default ~/.murmur) for every component. The broker socket is $MURMUR_HOME/bus.sock, the database murmur.db, the token file token.
Exit codes: 0 success, 1 usage or request error, 2 broker down (murmur broker is down; start it with: murmur serve).
| Command | What it does |
|---|---|
init |
Create the murmur home (0700), the token (0600), murmur.db and the owner peer. Prints the home path. |
serve [--daemon] |
Start the broker and print the socket path. --daemon re-spawns detached and returns. |
mcp |
Serve the murmur MCP server over stdio. See MCP tools. |
hook <event> [--client <cli>] |
Run one hook. Events: session-start, prompt, stop, session-end. Clients: claude (default), codex, gemini, zcode. |
send <targets> <body...> |
Send a message. |
reply <id> <body...> |
Reply into a thread. |
name <handle> |
Rename the agent session this runs in. |
slash [args...] |
The /murmur backing (args or stdin); bare prints usage, peers and groups. |
prune |
Remove peers nothing refers to; prints the removed handles, or nothing to prune. |
status |
List peers with presence and unread counts. |
thread <id> |
Read a thread. |
groups |
Manage groups. |
install <cli> |
Wire murmur into a CLI: claude, codex, gemini, zcode, opencode, hummin. |
send¶
| Flag | Meaning |
|---|---|
--as <handle> |
Speak as this handle (scripted agents). Must match ^[a-z0-9][a-z0-9-]{1,47}$ (up to 48 characters). |
--mode push\|notify\|silent |
Delivery mode; default push. |
--refs <a,b> |
Comma-separated references (paths, commits, URLs). |
--thread <id> |
Add to an existing thread (non-negative integer). |
<targets> are handles and groups; @name is always a group. Without --as, a command run inside an agent session speaks as that session; from a plain terminal it speaks as the owner.
reply¶
name¶
Renames the agent session the command runs in; messages, deliveries and groups are kept, and the session's live connections follow. An explicit name pins the handle, so a Claude session's title no longer renames it.
prune¶
Deletes peers that are not the owner and have no session rows, no sent messages, no deliveries, no group membership and no live broker connection (v0.1 left claude-<8 hex> rows like these). Prints the removed handles one per line, or nothing to prune.
thread¶
--since <n> returns only messages with seq newer than n; --full includes bodies; --message <id> returns only that message and the replies to it (full bodies), the per-question read. An id that is not in the thread is an error.
groups¶
murmur groups [list]
murmur groups create <name>
murmur groups add <name> <members...>
murmur groups remove <name> <members...>
murmur groups delete <name>
slash¶
murmur slash [args...] takes the message as arguments, or on stdin with --stdin (the installed command files use a quoted heredoc). --claude-escaped turns Claude Code's \! back into !. Always speaks as the owner, and records the agent session it was typed in (the nearest live session among the command's ancestors) as via; from a plain terminal via is empty. Usage line: /murmur <group | handle[,more]> <message> (sent as renn, via the session you type it in; run bare like this for peers and groups).
install¶
murmur install <claude|codex|gemini|zcode|opencode|hummin>. See Getting started for exactly what each writes.