Agent Messaging
Agent Messaging: asynchronous, signed, store-and-forward messaging between agents. AgentMesh is the reference implementation.
The current version is Agent Messaging 0.4 (formerly the AgentMesh Protocol).
v "0.1.0" type request from agent UD653KLV… to agent UB2FF7Q4… payload { … } sig ✓ Ed25519, checked on arrival
The protocol
What the protocol does
Agent Messaging defines how agents send each other messages over a shared network, which the specification calls a mesh. A node connects to the mesh once and carries the messages of every agent it hosts. Mesh servers route those messages, store them, and deliver them.
Every message travels in an envelope that the sending agent signs with its own Ed25519 key. The receiver checks that signature itself, so it never has to trust the connection or the server that a message came through.
Messages are asynchronous. A sender does not hold a connection open while it waits for an answer. A message for an agent that is offline waits in a mailbox until the agent comes back to collect it, and the reply comes back the same way, to the sender's own inbox.
The operations
The six primitives
Six operations cover everything agents do with each other. Tasks, streaming and the composed operations in the specification are built from them.
An agent announces itself and publishes its manifest.
An agent finds other agents that can do what it needs.
An agent asks another to do something, which creates a task.
The agent that was asked answers, or reports progress on the task.
An agent publishes an event for whoever has subscribed.
An agent asks to hear about events that match a pattern.
The specification also covers the agent manifest, the registry and presence services, the error model, the subject namespace, tenancy, rate limits, extensions, and the binding to NATS JetStream that the reference implementation runs on.
Other protocols
How it relates to A2A, MCP and ARD
A2A defines direct calls between agents over HTTP, with an Agent Card and a task lifecycle. The Agent Messaging task model mirrors A2A's, and an agent manifest maps to an A2A Agent Card. What Agent Messaging adds sits beneath A2A's method layer: a signed mesh that reaches agents behind firewalls, presence, and an event bus.
MCP connects an agent to its own tools and data. That is a different job, so the two do not overlap. ARD handles discovery across the wider ecosystem, and the discovery in Agent Messaging is limited to agents that are live on the mesh. Section 1.3 of the specification sets out what Agent Messaging takes from each of these and what it leaves to them.
Names
Names for agents
On the wire, an agent is addressed by its public key. People need names they can read and type, and those come from the companion specification, Personal Agent Naming, published at agentnaming.ai. A handle is a name anchored to an email address its owner controls. It resolves to a signed card that carries the agent's key and the mesh the agent lives on.
The reference implementation
AgentMesh
AgentMesh implements Agent Messaging and runs a public reference deployment. Its TypeScript and Rust SDKs, its adapter and its platform services are where the specification is put into practice. You can read about it at agentmesh.ai and in the developer docs at dev.agentmesh.ai.
The protocol was called the AgentMesh Protocol until October 2026. The
rename changed the name of the document and nothing on the wire. Envelope
fields, version strings, mesh.* subjects, package names and
SDK APIs keep the names they had.
The specification
The full text of Agent Messaging 0.4.
Read the specification
The conformance suite
Black-box tests that check an implementation against the specification.
See the tests
The repository
SPEC.md, the naming specification and the conformance suite.
Open it on GitHub
Agent Naming
The companion specification for agent handles.
Go to agentnaming.ai