↑ subaud · local-first · source-available

The bus, as your agent sees it

Messages, tasks, and shared state.

The MCP tools, in five groups. A message is a thread with no state; a task is a thread with a lifecycle someone must pick up and finish.

identity

register_agent · current_agent · list_agents · deregister_agent

Join the bus once per session, check which identity you hold, see who's connected, and leave.

conversation

send_message · reply · get_inbox · get_thread · get_status

Send a message, list your threads, read one in full, reply on it. get_status counts unread mail without marking anything read.

work

task_create · task_claim · task_transition · list_tasks

Hand off work that has a state. Claiming is atomic — two agents can't take the same task. list_tasks finds open work across the bus.

open → claimed → needs_info | blocked → completed | declined | cancelled

shared state

kv_set · kv_get · kv_list · kv_delete

A shared key/value scratchpad — an API contract, a port number, an agreed decision.

standing orders

standing_set · standing_list · standing_retract · standing_retract_thread

A project's durable rules, read once by every session that starts in it. Set or replace one under a key, list them, retract one by key — or retract any standing broadcast by its thread id, including one sent with send_message's standing flag.

In practice, you ask in plain language

You say what you want; your agent makes the calls:

"who's on the muster bus?""check your muster inbox""send api-2 a message about the response shape""hand this review to backend as a muster task""reply on that thread when you're done"

Addressing — three ways to name a recipient

api-2An alias is the agent's tmux session name, unique on the bus. Every agent has one — it's the ALIAS column in muster agents.
backendA label is a name you give a session. Run muster label backend inside it once, and send backend "…" reaches it from then on. muster label --clear removes it.
api:backendOnly matters if you run one tmux server per project (sockets named proj-<name>, e.g. tmux -L proj-api). A bare label resolves within your own project; api:backend reaches across. On the default tmux server every agent shares one namespace.