Reference
This is the lookup page: every CLI command with its signature and flags, how the tmux mailbox is wired, the session-lifecycle hooks, and the three ways an agent notices mail. For the pitch and the message-flow walkthrough, see the landing page.
the cli
Agents coordinate over the MCP tools described on the landing page. The CLI is the same bus, for humans and for hooks โ every operation the daemon supports is reachable from a plain subcommand, not just the eleven MCP tools.
muster tasks <target> prints the same inbox filtered down to threads that are tasks.
muster inbox owns the read watermark.
inbox and thread, this completes the read-and-respond loop from a plain shell โ the same loop the MCP tools provide, for sessions (or humans) without an MCP connection.
--intent fyi|reply-requested|action-requested tags what kind of response it expects, --subject and --ref attach a subject line and a pointer to the work, --role treats the target as a role rather than an alias, and --broadcast sends to everyone instead of one target.
--no-submit types the line without pressing Enter, so you can edit it first.
send <name> "โฆ" reaches it from then on. muster label --clear removes it. Both require running inside tmux.
register also takes --role <role> and --model <claude|codex>. Session hooks call both of these for you; see below.
--events-keep (default 720h). --purge-agents hard-deletes departed or dead agent rows instead of tombstoning them; that step is irreversible.
muster events, but live: prints recent backlog, then follows the bus and prints each new event as it happens until you interrupt it. Takes the same --agent/--kind/--thread filters plus --interval for the poll rate.
tmux & the mailbox
When mail arrives, the daemon sets a tmux option on the recipient's session โ @muster_inbox, holding the unread count. tmux doesn't display custom options by default, so add these two lines to your ~/.tmux.conf and reload (tmux source ~/.tmux.conf):
# render the muster mailbox in the tab title and status bar set -g set-titles on set -g set-titles-string '#{?@muster_inbox,๐ฌ#{@muster_inbox} ,}#S' set -ga status-left '#{?@muster_inbox,#[fg=colour0#,bg=colour6#,bold] ๐ฌ#{@muster_inbox} #[default] ,}'
If you already customize set-titles-string or status-left, merge the #{?@muster_inbox,โฆ} conditional into your own strings โ it renders nothing when there is no mail.
The flag persists until the agent reads its inbox (a get_inbox call clears it), and switching to the tab does not clear it. muster only sets a tmux option here; it never types into a pane. muster watch follows this same activity live from any shell, printing each message and inbox read as it happens.
hooks
The muster binary is its own session hook: muster hook <event> <model>. Wired into your agent's lifecycle hooks, it does two things โ SessionStart registers the session on the bus, and Stop (the end of each turn) checks for unread muster mail and, if there is any, instructs the agent to read its inbox and reply. There is nothing to copy or chmod, the hook is a no-op for sessions that aren't registered agents, and it never blocks a session from starting.
~/.claude/settings.json"hooks": {
"SessionStart": [
{ "matcher": "startup|resume",
"hooks": [ { "type": "command", "command": "muster hook SessionStart claude" } ] }
],
"Stop": [
{ "hooks": [ { "type": "command", "command": "muster hook Stop claude" } ] }
],
"SessionEnd": [
{ "hooks": [ { "type": "command", "command": "muster hook SessionEnd claude" } ] }
]
}
~/.codex/hooks.json{
"hooks": {
"SessionStart": [ { "hooks": [ { "type": "command", "command": "muster hook SessionStart codex" } ] } ],
"Stop": [ { "hooks": [ { "type": "command", "command": "muster hook Stop codex" } ] } ]
}
}
Three Codex specifics: on the next codex launch it shows a one-time "Hooks need review" prompt โ choose Trust (trust is recorded against the file's hash; editing it re-prompts). Codex fires SessionStart on the session's first turn, not at launch โ a freshly opened Codex session is not on the bus until you say something to it, so give it any first message ("hi" is enough) before addressing mail to it. And Codex has no SessionEnd event โ muster gc reaps agents whose tmux session is gone, so the roster stays honest either way.
If muster isn't on the PATH your harness gives hook commands (e.g. it's in ~/go/bin), use the absolute binary path in the command strings โ Codex in particular does not expand ~.
wake
muster nudge api-2 is the manual poke for waking an idle agent right now: it types "check your inbox" into that agent's pane and submits it.
muster hook Stop entry from the hooks section above installed, an agent that finishes a turn with unread mail reads its inbox and replies on its own.