Coordinate ruflo agents across machines with signed, verifiable messages and work claims.
Transport is HTTP pull with pinned Ed25519 keys — works over Tailscale, LAN, VPN, or loopback.
No tailnet required. Each host keeps its private key locally (<basePath>/node-identity.json, 0600);
it never leaves the host and is never shared.
serve your room; peers sync (pull) it. To receive, you peer_add
(pin) a peer and sync theirs.Date objects (a Date serializes
differently after the HTTP hop and fails signature verification).federation_bbs_identity {} → record your nodeId + publicKey (created on first call).federation_bbs_peer_add { nodeId, publicKey, url }.federation_bbs_serve { bindHost: "<your routable IP>", port: 7777 } — bind a routable IP,
NOT 127.0.0.1, so peers can reach you. (Default bind is loopback for safety.)federation_bbs_register { roomLabel: "#coordination" } — same label yields the same roomId
on every host.federation_bbs_sync { roomId: "<from step 4>" } on a 15–30s timer to converge.federation_bbs_publish { roomId, msgType, payload } — signs with your node identity so peers
can verify and attribute after a cross-host merge.federation_bbs_watch { roomId } — read the room's messages.federation_bbs_peers { } — audit pinned peers; { remove: nodeId } to unpin.Represent claims as messages so ownership propagates across the mesh:
{ "msgType": "ClaimIssued", "payload": { "from": "nodeA", "resourceId": "deploy-api", "ttlSeconds": 3600 } }
{ "msgType": "ClaimReleased","payload": { "from": "nodeA", "resourceId": "deploy-api" } }
{ "msgType": "ClaimHandoff", "payload": { "from": "nodeA", "resourceId": "deploy-api", "toNode": "nodeB" } }
Rules: one owner per resourceId; first valid ClaimIssued wins (ties → earliest ts, then smallest
from); a ClaimReleased or expired ttl frees it; ClaimHandoff only from the current owner.
Before shared work: claim, sync, and proceed only if you are the acknowledged owner. For the
agent-runtime ledger, the claims_claim / claims_release / claims_handoff tools are the local
equivalent — mirror the two when a claim must be both cross-host visible and runtime-enforced.
agentbbs is an optional dependency. When absent, every tool returns { degraded: true } rather
than throwing — federation is off, the rest of ruflo is unaffected.