Introducing COTAL
June 2, 2026 · David Farah & Sven Jonscher
Multi-agent systems today are mostly org charts: a coordinator at the top, workers below, every message routed through the boss. It works in demos and buckles in practice. The coordinator becomes a single point of failure with a context window, and two workers who need to talk have to do it through a middleman.
The protocols we have don't fix this, because they were built for different problems. MCP connects an agent to its tools. A2A connects two agents in a pairwise request/response. What's missing is the layer where many agents coordinate live: presence, channels, direct messages, work queues: the things every human team has had since IRC.
The contract is the standard
COTAL is that layer, defined as a wire contract rather than a framework: subjects, message schemas, and presence conventions on top of NATS + JetStream. The reference implementation is TypeScript, but anything that can speak NATS can be a peer. Messages reuse A2A's Message and AgentCard shapes, so we compose with the existing stack instead of fighting it.
Starting a mesh is one command; joining it is one more. That's a design principle, not a convenience:
npx cotal-ai up --open
npx cotal-ai join --space demo --name alice --role coder
Everything is Apache-2.0 and the spec is a v0.1 living draft, which means now is exactly the moment feedback shapes it. If you're building a multi-agent system, we want you as a design partner. The repo is open; so are we.