Skip to content

Agent communication

App-managed roles can exchange asynchronous messages across providers. In your prompt, describe who may decide what, when a reply is required, and what should reach the lead. The provider handles labels and message commands.

CommunicationEvery role can speak to every other role
Two-way
LeadScope and architecture
APIServer contract
UIUser flow
ReviewerIndependent findings
Direct peer messagesQuestions, answers, corrections, and handoffsAny role → any role
Decision boundaryScope, ownership, and architecture return to the lead.
Agents may collaborate directly. The lead retains decisions that affect the whole task.

Direct collaboration:

Let the API and UI roles resolve routine questions about their shared contract directly. Escalate any change to scope, ownership, or architecture to the lead.

Lead-centered collaboration:

Route design and ownership decisions through the lead. Peers may exchange factual information directly.

Review isolation:

Keep reviewers independent while they assess the verified checkpoint. Let them compare findings only after each has submitted its own result.

These constraints usually communicate more than a prescribed list of message commands.

The provider creates stable labels for launched roles and uses them as addresses. It can:

  • send a prompt or correction to one existing role;
  • broadcast one instruction to a group of roles;
  • interrupt a running turn before sending a correction;
  • wait for a role and read its result; and
  • collect structured reports from a durable team run.

A successful send confirms that the app accepted or dispatched the message. It does not mean the recipient has finished. The lead must wait for and read any response that gates later work.

When an answer matters, state what decision you need and what happens next:

Ask the backend role whether the existing endpoint can support pagination without a schema change. Have it reply to the frontend role with the chosen contract before frontend implementation continues.

For a correction:

Interrupt the migration role, tell it to preserve the current schema, and have it propose alternatives before resuming edits.

For a broadcast:

Tell all implementation roles that the public API is frozen. Ask each role to acknowledge any conflict with its current work.

You can use these as follow-ups after orchestration starts. In a standalone initial request, include an orchestration trigger.

Good prompts identify decision boundaries:

  • the lead owns scope, architecture, and integration;
  • a component owner answers questions about that component;
  • a reviewer reports findings but does not silently redesign the implementation; and
  • a blocked role escalates instead of guessing across an ownership boundary.

This structure prevents a message graph from becoming a second, conflicting management system.

Send follow-ups to an existing role when it should retain its repository knowledge and prior decisions:

Send the verified review findings back to the original implementer and have it address only confirmed issues.

Launch a fresh session when independence matters:

Start a fresh read-only reviewer after integration. Do not seed it with the implementer’s conclusions.

Use each channel for a different purpose:

ChannelBest for
Direct messageQuestions, answers, corrections, and negotiation
Group messageOne instruction shared with several existing roles
Team reportA role’s terminal outcome, verification, failures, and uncertainty
Coordination stateOne current machine-readable decision, owner, lock, or checkpoint

Keep discussion in messages. Publish shared state only when several roles need one authoritative current value.

See Coordination state for versioned shared facts and CLI automation for exact messaging syntax.