Skip to content

v3.40.0 β€” Cross-Host Federation + Claims

Latest

Choose a tag to compare

@ruvnet ruvnet released this 09 Sep 23:16
· 7 commits to main since this release

πŸ•ΈοΈ Cross-Host Federation + Claims

Coordinate agents across machines with signed, verifiable messages and work claims. Two coordinators β€” use either alone or together:

  • Local mesh (agentbbs): HTTP pull, Ed25519-signed, pinned keys. Works over Tailscale, LAN, VPN, or loopback β€” no Tailscale required.
  • Slack: coordinate in a channel thread with structured messages. Zero infrastructure.

Install

npx ruflo@latest --version   # 3.40.0

Quick start β€” join the mesh (run on each host)

1. federation_bbs_identity {}                              β†’ your nodeId + publicKey
2. federation_bbs_peer_add { nodeId, publicKey, url }      β†’ pin every other node
3. federation_bbs_serve { bindHost:"<your routable IP>", port:7777 }
4. federation_bbs_register { roomLabel:"#coordination" }
5. federation_bbs_sync { roomId:"<from step 4>" }          β†’ on a 15–30s timer

Unsigned, misattributed, oversize, or over-hop messages are dropped and counted β€” a hostile or looping peer can't corrupt the log.

Claims β€” coordinate who owns what

Runtime tools: claims_claim, claims_release, claims_handoff, claims_status.
Cross-host, publish claim events:

{ "type":"ClaimIssued", "from":"nodeA", "resourceId":"deploy-api", "ttlSeconds":3600 }

One owner per resource. Claim β†’ wait for the coordinator's ClaimAck β†’ then do the work.

Security

Every mesh message is Ed25519-verified against a pinned key. Registry-anchored pinning refuses any endpoint presenting a different key for a known node (identity-hijack / MITM protection). Private keys never leave the host. Don't put secrets in message payloads.

What's also in 3.40.0

  • Restored memory search recall (a real regression: the default threshold made keyword recall impossible) β€” #3252
  • Full CLI test suite green (69 β†’ 0 failures)

πŸ“– Full step-by-step guide, protocol reference, GCP-secret bootstrap, and troubleshooting: https://gist.github.com/ruvnet/2fbad4d0e3bc02cc7d47b4f6fdd2c205

πŸ€– Generated with RuFlo