Connect

polyglot application networking platform · on the BEAM

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.

ProtocolsWAMP v2 · MCP · HTTP
TransportsHTTP/SSE · WebSocket · TCP · UDS
EncodingsJSON · MsgPack · CBOR
ClusterMaster-less · Causal+ Consistency
RuntimeBEAM · OTP 28
LicenseApache-2.0
The problem

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.

Point-to-point integration grows as N × M, and every link re-solves discovery, authentication, authorisation and retries. One router makes it N + M, once — with WAMP in place of gRPC, AMQP or MQTT for the peers you control, and HTTP, MCP, SMTP and Kafka for the ones you don't.
routed rpclivedealer
Routed RPC

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.

01

Routed, not addressed.

Callers name a procedure, not a host. Move it, replace it, run three of it — nobody reconnects.

02

No client/server split.

Caller and Callee are roles, not tiers. A single session can be both at once.

03

Even a browser tab.

A browser can serve a call. That is not a trick — it is a peer like any other.

publish / subscribelivebroker
Publish / Subscribe

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.

01

In order.

Events arrive in publication order, per topic, however many nodes they crossed on the way.

02

Cluster-wide.

Subscribe on any node. The event finds you, without anyone routing it by hand.

03

Watchable live.

Sessions, registrations and subscriptions are themselves topics, so the network can be observed as it runs.

MCP

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.

what an agent reachesliveone tool call
Agentany mcp clientBondy Connectmcp gateway · realm · rbacMicroserviceany languageDeviceat the edgeWeb appa browser tabMobile appon the phoneYour REST APIsunchangedMCP serversstdio · httpSOONCALL · every peer already on the networkvia HTTP Connectorvia MCP Connectortools/callresult a browser tab is a callee like any other — no WebMCP required
01

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.

02

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.

03

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.

http connectorliverest → procedures
Bondy ConnectMobilecallerPaymentsyour apiDealerroutes the callHTTP Connectorrest → procsCALLcom.acme.payRESULTPOST/v1/charges200 OK
HTTP Connector

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.

01

Declared, not built.

A specification — not one more service to build, deploy and keep alive.

02

No SDK anywhere.

Callers just call. They never learn a host, a path or an auth scheme.

03

Governed like the rest.

The upstream endpoint inherits realms, grants and audit like any other procedure.

http gatewayliveprocedures → rest
Bondy ConnectBrowserrest clientServicecalleeHTTP Gatewayspec, not glueDealerroutes the callGET/cart/42200 OKINVOCATIONcom.acme.cartYIELD
HTTP Gateway

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.

01

From a spec.

Routes, mapping and errors are all declared. There is no handler to write.

02

OAuth2 and OIDC.

Built in, so the HTTP edge authenticates into the same realms as everything else.

03

One registry.

The procedure behind a route is the same one agents and peers already call.

The platform

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.

Your DAN · Distributed Application Networktraced · tool call in, rest api outBondy Connect nodeevery node runs all of itBondy Connect nodesame appsBondy Connect nodesame appsAuthN · AuthZRouterDealer · BrokerMCP Gatewayprocedures → toolsHTTP Gatewayprocedures → restWAMP Listenersws · tcp · udsMCP Connectortools → proceduresSOONHTTP Connectorrest → proceduresKafka Bridgetopics → streamsEdge Bridgeedge ↔ cloudmcphttp · restwamp / tcpwamp / wswamp / wswamp / tcpAgentmcp clientServicerest clientServiceany languageWeb appa browser tabMobile appon the phoneDeviceat the edge
The unit

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
The front door

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.

one router · many realmslivea session belongs to one realm
Bondy Connectrouter"bondy"master realmcom.acmerealmcom.iotrealmAdmin CLIcallerServicecaller · calleepublisher · subscriberDevicepublisherAgentcaller · subscriberMobile appcaller · calleewamp / wsSession 1wamp / tcpSession 2mcpSession 3wamp / tcpSession 4wamp / wsSession 5
01

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.

02

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.

03

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.

Distributed by design

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.

01

No leader to elect.

Add a node and it joins the mesh. Kill one and the fabric keeps routing.

02

Active anti-entropy.

Any node that fell behind re-syncs itself, without an operator noticing.

03

Millions per node.

The BEAM holds that many concurrent connections on a single machine.

Run it

Deploy with one command.

Official Docker images are the fastest path — a full router, gateway and cluster member in one container.

Dockerfastest start
# single node
$ docker run --rm -it \
  -p 18080:18080 -p 18081:18081 \
  leapsight/bondy:master

Bondy up · realms loaded
ws :18080 · api :18081
Composelocal cluster
# three-node mesh
$ docker compose up

✓ bondy1 · bondy2 · bondy3
✓ gossip active — 3 members
✓ realm replicated
Sourcerebar3 · OTP 26+
# build a release
$ git clone bondy-io/bondy
$ cd bondy && make release

$ bin/bondy foreground
✓ release started
A note on the name

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.