Connect
Bondy Connect routes calls and events between all the pieces of a distributed system, under one open protocol. Clustering is masterless and Causal+ consistent: replicas stay available under partition, converge without consensus, and never show you an effect before its cause.
Every pair, its own integration.
A distributed system does not get complicated because it has many parts. It gets complicated because every pair of parts is its own integration — its own protocol, its own discovery, its own authentication and authorisation, its own retry policy. Bondy Connect makes each part hold one link instead.
Anyone can answer.
There is no client/server split. Any peer can register a procedure — a service, a device, a phone, a browser tab — and callers never address it. They call a name; the Dealer routes. Register the same name from three peers and calls load-balance across them.
Routed, not addressed.
Callers name a procedure, not a host. Move it, replace it, run three of it — nobody reconnects.
No client/server split.
Caller and Callee are roles, not tiers. A single session can be both at once.
Even a browser tab.
A browser can serve a call. That is not a trick — it is a peer like any other.
Once. Everywhere.
A publisher emits to a topic and the Broker fans it out to every subscriber at once, in order, across the whole cluster. Publishers never learn who is listening, and subscribers never learn who published.
In order.
Events arrive in publication order, per topic, however many nodes they crossed on the way.
Cluster-wide.
Subscribe on any node. The event finds you, without anyone routing it by hand.
Watchable live.
Sessions, registrations and subscriptions are themselves topics, so the network can be observed as it runs.
What an agent can reach.
Point an agent at Bondy and its tools are everything already on your network: every peer, every upstream REST API, and soon every other MCP server. You write no MCP server, and nothing you already run has to change.
No WebMCP.
A web app that registers a procedure is a callee like any other, so an agent can call into a running browser tab — no browser-side tool protocol, no extension, no shim.
Per-tool RBAC.
Grants are per-URI and every Tool is a URI. One tool, for one group, in one realm is a grant you can actually write — and OAuth2/OIDC is already at the door.
Nothing to build.
The HTTP Connector turns REST you already run into procedures; the MCP Gateway declares procedures as Tools. Neither one asks you for code.
Bring the APIs you already have.
Declare an upstream REST service once and its operations register as procedures in a realm. No adapter to write, no HTTP client in every peer, no URL in any caller — and the endpoint is permissioned per procedure, like everything else on the network.
Declared, not built.
A specification — not one more service to build, deploy and keep alive.
No SDK anywhere.
Callers just call. They never learn a host, a path or an auth scheme.
Governed like the rest.
The upstream endpoint inherits realms, grants and audit like any other procedure.
And send them back out.
The same idea in reverse: a spec turns procedures into REST endpoints, with request, response and error mapping declared alongside each route. Anything on the network can be published as an ordinary HTTP API without a line of glue.
From a spec.
Routes, mapping and errors are all declared. There is no handler to write.
OAuth2 and OIDC.
Built in, so the HTTP edge authenticates into the same realms as everything else.
One registry.
The procedure behind a route is the same one agents and peers already call.
The whole edge, in one process.
The gateways, connectors and bridges aren't sidecars — they're apps inside every node, around the router. The lit path is one call: an agent's tool arriving at the MCP Gateway, crossing the router, and leaving through the HTTP Connector to an API that knows nothing about agents. Nodes are identical, and together they form a DAN (Distributed Application Network). Hover a block.
One Bondy Connect node
Everything on this diagram is one OTP release in one BEAM process. The gateways, the connectors and the bridges are apps inside the node, not sidecars you deploy and scale separately.
- Nothing to wire together — the apps share the node’s realms, sessions and registry
- Every node runs all of it, so any node can serve any request
- Millions of concurrent connections per node
Any client. Every realm.
Each client authenticates into a realm — an isolated routing domain with its own users, procedures and topics. One Bondy hosts many, side by side.
Realm.
An application network domain that segregates authentication, authorization and routing — no message routed in one realm leaks into another. Each holds its own users, groups and grants: a self-contained IAM service, with no external identity system to run.
Same Sign-on.
One set of credentials across many realms. A realm delegates identity to a shared SSO realm, so a user is defined once rather than once per realm. They still authenticate to each — but you administer one identity, not five.
Single Sign-on.
Same Sign-on plus a ticket. Authenticate once and reach every realm sharing that identity provider without entering credentials again — the authentication step is skipped, not repeated.
Built to stay on.
Bondy was a distributed router from day one: a master-less cluster where every node is equal and shares all routing state through gossip. Kill one — the fabric keeps routing.
No leader to elect.
Add a node and it joins the mesh. Kill one and the fabric keeps routing.
Active anti-entropy.
Any node that fell behind re-syncs itself, without an operator noticing.
Millions per node.
The BEAM holds that many concurrent connections on a single machine.
Deploy with one command.
Official Docker images are the fastest path — a full router, gateway and cluster member in one container.
# single node $ docker run --rm -it \ -p 18080:18080 -p 18081:18081 \ leapsight/bondy:master Bondy up · realms loaded ws :18080 · api :18081
# three-node mesh $ docker compose up ✓ bondy1 · bondy2 · bondy3 ✓ gossip active — 3 members ✓ realm replicated
# build a release $ git clone bondy-io/bondy $ cd bondy && make release $ bin/bondy foreground ✓ release started
Bondy is a platform and a language.
The WAMP router you've known for years is Bondy Connect — and it keeps shipping exactly as before. The name Bondy, on its own, now belongs to the multi-paradigm language it inspired.