Repository navigation
v0.1.0
Agent Mesh v0.1.0 is the first stable release. It is the result of six months of work, ten release candidates, and two public testnets that have run it since May.
The idea
Agent Mesh implements the idea in Agent-Aware Mesh Network for Hybrid AI Policy Enforcement (Technical Disclosure Commons, July 2026). It is a private network for AI agents and for the tools and models they use. The network knows who talks to whom. It applies the organization's policy to every call. It keeps the data, the agent state and the audit trail under the organization's control. The agents still reach the models and services they need, on premises or in a cloud.
Three ideas are present in every part of it:
- Every member has an identity that every other member can verify. A member enrolls with an identity it already has: OIDC, a Kubernetes service account, SPIFFE, or a bootstrap token. It then holds a short-lived credential. No part of the mesh answers a peer that has not authenticated. This applies to routers, to directory lookups and to relayed traffic.
- You write the policy once. The mesh applies it everywhere. The operator writes roles and bindings. The control plane turns them into Datalog. Every node, router and SDK evaluates that Datalog locally. A member can narrow its own credential before it gives it to an agent. The agent then gets only the tools, destinations and time it needs. Decisions use names, never addresses. The default is deny.
- The network goes where the agents are. Nodes connect directly when they can. When they cannot, they connect through authenticated relays. One mesh can span laptops, containers, clusters and phones behind NAT. A standard JWT crosses the border in both directions. Inside the mesh, the credential is a Biscuit.
What is in the box
agentmesh-control-plane: enrollment, policy, a web console, and signing keys that rotate on a schedule and retire after a grace period. It stores its state in Postgres or SQLite.agentmesh-router: the backbone of the mesh. It authenticates every connection, holds the service directory, relays traffic between members that cannot reach each other, and sheds load before it fails.agentmesh-node: the sidecar. It puts an MCP server, an A2A agent or an OpenAI-compatible model on the mesh. It lets local clients call remote ones, with the mesh's authorization applied at both ends. It integrates with Envoy and Istio throughext_authz, and it runs on Android.- SDKs for JavaScript and Python. With them, an agent joins the mesh in-process, without a sidecar.
agentmesh-one: the whole mesh in one binary on one port. Use it to try the mesh in a minute.- Helm charts, and guides for Kubernetes, Cloud Run, Codespaces and SkyPilot.
Tested at scale
In the last week we took the bananas testnet to 10,000 members, four times. Members joined 1,000 at a time, on 12 routers. Each member called a service across the mesh as soon as it joined. On the final run, all 10,000 joined on the first attempt and stayed for the whole hold. The control plane answered in less than 250 ms at the 99th percentile. The routers refused nothing and shed nothing.
These runs found and fixed a dozen problems. The control plane's storage is now bounded: it collects the records of members that left, on a schedule. Signing-key rotation no longer depends on how long a process has been up. Each problem was found from the counters and logs that the previous run had added. The scalability guide explains how to size a mesh from these numbers.
Two testnets
hub.sam-mesh.dev has run since 30 May 2026 and follows the releases. bananas.sam-mesh.dev has run since 12 July 2026 and follows every merge to main. Both run canary members, and probes that enroll, join, discover and call through the mesh every 15 minutes, in Go, JavaScript and Python. Both have been through signing-key rotations and retirements with no effect on their members. They are open: enroll with a Google account and look around.
Known limitations
- The JavaScript SDK's in-cluster probe shows an intermittent hang. We track it in #732. The Go node and the Python SDK are not affected.
- Routers keep some memory after members leave. This comes from two upstream libp2p issues that have fixes pending.
Thanks
Agent Mesh is built on two open source projects, and their communities helped us every time we asked. Thank you to @libp2p, for the networking stack that makes a mesh of relays, NAT traversal and authenticated streams possible, and to @eclipse-biscuit, for biscuit-go and the Biscuit token that carries our policy to every member.
Thank you to everyone who wrote, reviewed, tested and reported: @aojea, @kaisoz, @divarvel, @fer-marino, @HosniBelfeki, @IbrahimAhmed8, @fedebongio, @wenjiaswe, @vbcherepanov, @rhein1, @AsyncAssassin, @roushou, @BenTheElder, @anxkhn, @darkdi, @eminaktas, @Mukezh, @LiorLieberman, @MaddipatlaChetan24, @anfernee, @moreWax, @asivanadi0, @toasterbook88, @yorkerhodes3, @yashksaini-coder, @sachouri611 and @bodapatisaikrishna.
Get started
- Documentation: https://google.github.io/agentmesh/
- Getting started: https://google.github.io/agentmesh/docs/getting-started/
- Changes since v0.1.0-rc.10: v0.1.0-rc.10...v0.1.0