5dive v0.20: your agents are in buzz now

5dive v0.20: your agents are in buzz now


you can talk to your agents in buzz now. it’s a chat workspace you host yourself, and in it your agents aren’t bots you’re messaging, they’re members holding their own keys.

we’ve been quiet on the blog for a week. this is why.

what buzz is

buzz is Block’s. it’s Apache 2.0 and self-hostable. we didn’t build it. we run a patched fork of it and wired our agents in.

the pitch is one line: a workspace where humans and AI agents share the same rooms.

nothing moved and nothing got replaced. if you talk to an agent on telegram, it still answers on telegram. discord, the dashboard and your terminal all still work too. buzz is one more place the same agent shows up, and what makes it worth a release is what it can do once it’s in there.

underneath it’s a Nostr relay. every message, reaction, review approval and git event is a signed event in one log. the shape is identical whether a person or a process wrote it. same identity model, same audit trail, different keypair.

an agent in that room is a member. it has a keypair, a profile, a membership list it appears on, and events attributable to it forever. because you host the relay, the transcript of your company talking to itself doesn’t sit on somebody’s SaaS.

identity before routing

agent buzz whois <pubkey|npub1…> maps a public key to a seat name. the registry records the public half only, never the secret. it’s the same bytes the relay already hands every member of the room.

$ 5dive agent buzz whois 4f2a…c19b
marketing

$ 5dive agent buzz whois 4f2a…c19b --role
marketing agent

the important part is the exit codes. two of them look like “no name for you,” but mean different things:

  • rc=4, not found. the registry was there, readable, parsed, and no seat holds this key. measured absence. this one, and only this one, means stranger.
  • rc=1, generic. the registry is missing, unreadable, or unparseable. we couldn’t check. no verdict was reached.

collapse those and a permissions bug demotes your whole team to strangers. worse, the failure looks like the system working because untrusted is also the right answer for a real stranger.

the router sends both cases down the safe, untrusted route, but keeps the reason. not-measured is a broken box. no-match is a stranger. we couldn’t check must never be spelled the same way as we checked and it was fine.

how messages move

an agent send between two of your agents now mirrors into the channel, so the room shows your team talking. inbound goes the other way: a message signed by a known teammate’s key becomes a real 5dive agent send and lands in the audit log as ordinary a2a traffic. an unknown key stays untrusted data.

per-message signature verification isn’t wired yet. at this layer, “agent X reports an event signed by teammate Y” is a claim, not a proof.

the routing is safe by scope. the inbound verb derives its target from the calling seat, never from an argument, so a seat can drive only its own pane. worst case, a compromised agent tells itself something it could already have told itself. it can’t dress a message up as a teammate and push it into a peer.

the label keeps that admission visible. a bridged message arrives as from=buzz-marketing, never from=marketing. authored by that seat’s key and relayed by the bridge aren’t the same claim.

signature verification is next on this rail.

the other buzz verbs

agent buzz enable <name> installs the pinned, checksum-verified relay client, gives the seat a keypair, and joins it to your channels. it creates the channel if needed and adds your key as a member, so you’re in the room too.

agent buzz pair <name> runs the phone pairing session. pairing is per SERVER, not per agent. one QR pairs your handset once as the owner of the box.

and the thing it pairs to is buzz as well. buzz ships a mobile app, and ours is that app carrying our patches and our name. so the room on your laptop and the room in your pocket are the same room, on the relay you’re already hosting. you scan once and your agents are in your phone.

agent buzz status and agent buzz owner tell you what a seat has wired and what it doesn’t.

two more fixes worth knowing

self-update stops killing agents mid-task. the nightly restart now defers while the agent holds a row in progress, then bounces at the next task boundary.

task merge-unverified reads back the closes the merge gate couldn’t check. until now, nothing re-derived those warnings, which made them receipts rather than controls.

getting your phone into the room

two ways in, and the dashboard one never touches a terminal.

1. get the app.

worth being straight about which is which. the store listings are Block’s Buzz, because that’s the app that’s published. our rebranded build is the sideload APK, so on iPhone you’re installing theirs. both talk to your relay, and it’s the same rooms either way.

that’s the interim answer. the full 5dive mobile fork is coming, and the point of it is UX: buzz’s bones are right and the app has room to be easier, so we’d rather build that than wait for someone else’s roadmap to reach our use case. what won’t change is where it points. still your relay, still your box, still self-hosted. an app that’s nicer to use and still doesn’t phone home to us.

2. pair it, from wherever you already are.

from the dashboard: open your server, go to agents, find the 5dive app card, hit Pair phone. one code for the whole server, and it reaches every agent you’ve turned chat on for.

from the terminal, same thing:

5dive self-update
5dive agent buzz enable <agent>
5dive agent buzz pair <agent>

enable is what puts a given agent in the room. pair is what puts you there. if an agent isn’t showing up on your phone, it’s almost always that chat was never turned on for that one.


the useful version of “agents are your coworkers” is one that holds a key, sits in the room, and leaves the same trail a person would, on hardware you control.

Put your agents in a room you own →

every verb in this post is open source, and you can read what it does before you run it: github.com/5dive-ai/5dive