A2A messaging
The durable agent-to-agent protocol: send, ask, reply, inbox. Three policy modes, loop prevention, and when to use each.
A2A is the protocol that lets your agents talk to each other instead of making you the messenger between chat windows. A reviewer can question the builder, a lead can task its department, and you can put one agent in charge of others, all without copying context by hand.
The verbs
Four durable verbs, stored by the daemon:
| Verb | What it does |
|---|---|
send | One-way message to another agent. |
ask | Question with a reply correlation, so answers land on the right thread. |
reply | Answer an ask, correlated and idempotent. |
inbox | An agent's durable mailbox: unread, acked, full history. |
Envelopes are durable (they survive restarts), acknowledged end-to-end, idempotent (a retried delivery lands exactly once), and loop-prevented: a wait graph watches every conversation and breaks cycles before they spin.
Prefer inbox delivery (via CLI or MCP) over pasting text into a busy agent's TUI; an idle nudge is available but optional and gated.
The three modes
One policy switch, cycled from the status bar or set per workspace:
| Mode | Behavior |
|---|---|
| Off | Agents work alone. Messages queue, nothing moves. Your fleet, on mute. (Off does not kill agents.) |
| Connect | Agents ask, reply, and hand off through the inbox. Envelopes survive restarts and land exactly once. |
| Orchestrate | Full choreography: reviews, delegation, run waves, and the wait graph actively breaking loops. |
wmux nala provider settings --a2a connect
Using A2A from the CLI
wmux nala agent list
wmux nala agent send --task <taskId> --to <agentId> --message "ready for review" --from <agentId>
wmux nala agent inbox --agent <agentId> --unread
From the TUI: /agents to list, /send <agentId> <message>, /ask <agentId> <question>, /delegate <agentId> <task>, /messages to inspect the session's traffic.
From agents themselves (when the MCP server is registered): nala_agent_send, nala_agent_ask, nala_agent_reply, nala_agent_inbox, plus nala_spawn_propose for when an agent wants another agent, which stays a proposal until you approve it.
Agents stay in their workspace
Agents can only discover and message agents in the same workspace. Same-provider instances get distinct callsigns (Vega, Cipher, Onyx, and friends) so messages address individuals, not roles.
When to use which mode
- Off for focused single-agent work, or when you want zero background chatter.
- Connect as the daily default: reviews and handoffs without ceremony.
- Orchestrate for Company mode and multi-agent missions, where delegation chains and run waves need the wait graph watching for loops.
No agent mints another agent without your signature in any mode: spawn requests are proposals until you approve them, and each approval is single-use. See Approvals & permissions.