Agents that find each other offline

Inference moved on-device. Coordination did not. Service discovery lets an agent advertise a tool or a model, discover peers up to 8 hops away, and call them request and response, authenticated with OfflineID and with no broker in the middle.

An on-device AI agent discovers and invokes a tool on a peer agent over the mesh, peer to peer with no cloud broker, no server, and no internet between the devices.

Cloud broker, not in the loop
Discover, invoke, req/res
Response, MLS encrypted, 2 hops
Peer session translate.v2 Discovered locally OfflineID verified MLS request / response
10:32●●● 78%
Agent consoledev-a
agent-btranslate.v2, tool Invoke
IdentityOfflineID verified ✓ Routepeer to peer, 2 hops Brokernone
agent-cvision-ocr.v1, tool Invoke
Mesh, no server
10:32●●● 91%
Agent runtimedev-b
Serving
translate.v2advertised
req from agent-a✓ 38 ms
Session
MLSEncrypted
Caller IDVerified
This hour
14Reqs14Res0Broker

agent-a calls translate.v2 on a peer two hops away with no broker and no internet between the devices.

8hops of reach
0brokers in the loop
5transports under every call
350,000+devices reached to date

On-device AI has outrun its coordination layer

Every framework assumes a server. MCP, tool registries, and orchestration layers are client-server designs. Two agents on adjacent devices still coordinate through a data center that may be seconds away or unreachable.

An agent announces what it can do. A tool, a model, a data source. Peers within 8 hops discover it, compare providers by hop distance and version, and pick one before sending anything.

Calling a peer looks like calling an API. Request and response, acknowledged and retried by the transport, inside an OfflineID-authenticated MLS session. No lookup service is needed for trust.

Client-server versus peer to peer

MCP standardises how a client talks to a tool server. Service discovery removes the server.

MCP and tool registries
Service discovery
Where the registry lives
On a server your client must reach
In the mesh, carried by the devices themselves
Path of a tool call
Client, data center, tool server, and back
Device to device, up to 8 hops
Trust between agents
Improvised, or a lookup service
OfflineID, verified device to device with Ed25519 keys
When the internet is down
Nothing runs
Everything local keeps running
On-device inference
Still pays a cloud round-trip per call
Stays on the device that holds the model

The two can coexist. Keep an MCP-shaped interface for your agents and run the mesh underneath it as the transport.

What you can build

Each of these runs on the shipped SDK primitives.

Peer-to-peer tool calls with no serverTools

An agent registers a tool. Any peer within 8 hops discovers and invokes it request and response, with acknowledgment and retry at the transport.

Local inference shared across devicesModels

A device with a loaded model advertises an inference capability. Nearby agents send classification or generation requests with no cloud access.

Authenticated agent sessions offlineTrust

Every invocation runs inside an OfflineID-authenticated, MLS-encrypted session. Agents verify each other with keys that never leave the device.

What agent teams run on the mesh

Local inference as a service
A device with a loaded model registers an inference capability. Nearby agents discover it and send requests without cloud access, so one model serves many devices.
Distributed computation
One agent registers a compute service. Peers discover it, send work units, and collect results, splitting a long job across the devices in range.
Shared context and content
Agents with cached maps, documents, or embeddings register as content providers. Others fetch from the nearest peer, keeping retrieval local.
Provider selection
Discovery responses carry each provider's peer id, version, capabilities, and hop distance, so an agent picks the closest, the newest, or the one with what it needs.

The primitives behind it

Service discovery
Advertise, discover, and invoke capabilities across the mesh with no DNS and no registry. How service discovery works.
DORS
Agent traffic rides BLE and WiFi Direct with automatic failover. The internet is one transport among several. How mesh networking works.
OfflineID
Every agent carries an Ed25519 identity verifiable device to device, and every session is MLS-encrypted. How offline identity works.
Platforms
iOS and Android through the React Native binding over a Rust core. Anything that runs the core can advertise and invoke. Start building.
Your coding agent
Build it with Claude Code, Codex, Cursor, or any MCP client. The Offline Protocol MCP server gives your agent the packages, the integration guides, and a plan before it writes code. Build with agents.

AI agents FAQ

Can AI agents communicate without the internet?

Yes. With service discovery, agents advertise capabilities, discover peers, and invoke each other request/response over BLE and WiFi Direct with multi-hop relay up to 8 hops. The internet is one transport among several, not a requirement, so two agents on adjacent devices coordinate directly.

Is there a peer-to-peer alternative to MCP for agent tool calls?

MCP standardizes how a client talks to a tool server. Service discovery removes the server: capabilities are advertised, discovered, and invoked peer-to-peer over the mesh. The two can coexist, with the mesh as the transport under an MCP-shaped interface.

What does an agent capability look like on the wire?

A named, versioned capability with a request/response contract. Requests travel at high priority with acknowledgment, retry, and deduplication at the transport layer. Discovery is signed with the sender's Ed25519 key, and since SDK 0.29 requests and responses are sealed inside the MLS session once the two devices have confirmed one.

Does this work when devices are fully offline?

Yes. Discovery and invocation run over BLE and WiFi Direct with multi-hop relay up to 8 hops. The internet is one transport among several, not a requirement.

Which platforms can host an agent?

iOS and Android through the React Native binding, and macOS, Linux, and Windows hosts through the Python binding, the Java package, the C API, or the Rust crates. Anything that runs the core can advertise and invoke capabilities. On a box running the Python service, an agent that does not use the SDK can call a service on another device with a plain HTTP request through the HTTP front.

How does a consumer pick between multiple providers?

Discovery responses carry each provider’s peer ID, version, capability metadata, and hop distance, so an agent can select the closest provider, the newest version, or the one advertising the capability it needs before sending a request.

A network that follows your agents off-grid. Peer-to-peer. No broker.