Block launched Buzz on July 21 as an open-source workspace with team chat and signed work records for people and agents. Buzz can run Codex and Claude Code, and its Apple Silicon build lets members lend local model compute. A team assigns work and sees who acted. Restart-safe delegation and private repository reads remain unfinished. Buzz is Slack on AIroids.
Agents join the same rooms
| Surface | Buzz feature | Result |
|---|---|---|
| Workspace | Channels and DMs | People and agents share one room |
| Agents | Signed accounts and work history | Each signed event has an author |
Buzz connects runtimes through the Agent Client Protocol (ACP) over stdio. Codex and Claude Code need ACP adapters. If either runtime creates a Git worktree or delegates to another agent, that runtime supplies the tool. Buzz queues the room message and records the reply. Its pool can process separate channels at once, but every process in one pool uses the same Buzz identity.
Each agent gets a key
Buzz gives each person and agent a Nostr key. In its draft owner-agent scheme, an owner signs an attestation for an agent key, and the agent signs its own events. The attestation records provenance; relay membership still controls access. Block states the rule: “authorization does not erase authorship.”
-
Human identity Human keySigns the attestationattests to
-
Agent identity Agent keySigns its own workproduces
-
Signed activity Work eventsChat and code activityrecords
-
Audit trail Work recordSigned event history
| Relay check | Shipped behavior | Result |
|---|---|---|
| Identity | Verifies event signature and signed-in key | Binds a signed event to one account |
| Member-only access | Closed workspaces and non-open channels check membership | Ordinary writes honor those rules |
Buzz binds each accepted event to the authenticated key and verifies its channel access.
A shared bot account can hide which agent announced or approved a change. Buzz keeps each agent's events separate across chat and Git. If someone steals a key, an admin can remove its relay access without changing the owner's account.
The agent key does not change when its model or harness changes. Buzz should show those changes, or readers may assume the same software still runs it.
The controls are unfinished
| Control | Current state | Gap |
|---|---|---|
| Action rights | Channel membership controls access | No per-action approval |
| Human approval | Workflow creates an approval token | Cannot resume after approval |
Buzz's workflow schema accepts schedule and HTTP webhook triggers. Owner attestation remains a draft Nostr extension that records provenance, while relay membership controls access. Human approval uses a separate workflow step that cannot yet resume a run; Issue #2376 remains open and tracks the missing support.
Issue #2637 reported that Postgres cut timestamp precision after Buzz hashed each audit entry. Buzz closed it on July 24 after the fix began hashing new entries at the precision Postgres stores. The change does not repair old rows, so operators must re-anchor chains they need.
Some work stays outside the event log
Buzz signs chat and Git events. Git objects live in another store, and voice frames never enter the event log. A reviewer can see which key announced a push or approved a change. Teams must check linked objects and later jobs elsewhere.
Models still lose context
Buzz keeps chat and agent work in one record. After a restart, an agent can search it, but only selected room history and memory enter the prompt. The relay may hold six months of chat while the model sees a small part of it.
| Control | What the code does | Limit |
|---|---|---|
| Prompt input | Channel mentions omit history; threads and DMs load 12 messages | Large messages can still fill the prompt |
| Recall | Loads core memory and offers full-text search | The agent must fetch notes or choose useful search words |
Buzz searches stored events with Postgres full-text search, which matches exact terms and may miss paraphrases. The agent must choose a query and inspect the results.
Buzz loads core memory only when a new ACP session starts. Named memories require a lookup, and a long session may keep an old core record. Named memories stay out of the prompt until the agent fetches them.
Room history is shared. Buzz keeps each memory note with one agent-owner pair. A team can pass facts through chat; Buzz has no common team memory store.
ACP prompts carry full event IDs and tags. During a long native session, a handoff replaces old history with a model-written summary. After ten handoffs, Buzz drops older turns.
Stored history helps only when an agent loads it.
When Buzz runs Codex or Claude Code through ACP, each runtime controls its own context and compaction. Buzz can track reported token use and add room history. The repository has no benchmark that compares token use with and without Buzz.
Issue #2631 reports one snapshot with four agents and about 220 Codex descendants. The same local history held 17.7 million cumulative tokens across 40 Buzz-created threads over three days. The reporter traced the process spike to eager 24-worker pools and notes that billed use may differ.
Activity is not a terminal
Buzz can show a parsed activity feed or raw ACP JSON-RPC frames. A local owner can stop the current turn. The view cannot attach to the agent's terminal or accept terminal input. Buzz can open a separate shell at the project checkout, but that shell does not join the running agent process.
Buzz's native agent keeps sessions in memory and advertises loadSession: false. A restarted
process starts a new ACP session and rebuilds context from the room and memory tools. It also waits for one
non-streaming model response per round. Codex and Claude Code keep their own session rules behind their ACP
adapters.
Issue #2386 timed four short replies at 13 to 31 seconds. The sample has no matched run in a direct agent terminal. It cannot show whether the relay, queue, ACP session, model call, or reply publish caused the delay.
Buzz restarts crashed agent processes
The ACP layer sends one prompt at a time per channel and batches later events. If an agent process crashes, Buzz starts a new one. These controls do not replay work missed while the agent was offline.
ACP subscribes to events from about five seconds before startup, and its default mentions mode
accepts only tagged events.
Open issue #1743
reports missed offline mentions; open issue #2270
reports missed untagged thread replies.
Members can lend a local model
Buzz's Apple Silicon release build includes shared compute through MeshLLM. A member picks a local model and turns on Share this machine. Buzz then offers that model to other members through a local OpenAI-compatible endpoint. Signed discovery data binds the member key to the serving node, and current community membership controls which nodes may serve.
| Part | Shipped path | Boundary |
|---|---|---|
| Agent runtime | Fizz runs through buzz-acp and buzz-agent | Codex and Claude Code keep their own provider setup |
| Model compute | MeshLLM sends inference to a member node | No price, payment, or per-member quota |
The runbook traces the built-in Fizz path from desktop to buzz-acp, buzz-agent,
MeshLLM, and a member model. Shared compute acts as an LLM provider. It does not move a Codex or Claude
Code harness to another member's machine.
MeshLLM carries inference over direct QUIC or encrypted Iroh relays; the Buzz relay handles membership and discovery. The local provider caps an answer at 4,096 tokens and turns off model thinking. Buzz's code says this keeps output inside smaller local-model context windows. That choice favors short work. Buzz has no result that compares it with the same model outside Buzz.
Buzz calls Mesh a compute commons. Members who trust one relay lend spare hardware to each other, with no API key or cloud bill. Buzz plans a community compute pool. The X post adds a second idea: a market where agents or teams pay for work.
Nostr can move the invoice. Buzz cannot price the job
-
Shipped Signed keyNames the buyer, agent, or hostsigns
-
Missing link Job quoteBinds scope, model, price, and deadlinestarts
-
Partial Work recordLinks the result and agreed usereleases
-
Missing path PaymentSettles or cancels the invoice
Buzz can record two kinds of use. When an agent runtime reports use, its NIP-AM publisher stores an encrypted record with token counts and an estimated cost. A serving Mesh node also tracks requests, output tokens, and remote use. These records do not form one bill. The node keeps aggregate counters in local runtime status; neither record binds a member, one request, a price, and a payment. Buzz's NIP-AM spec calls its cost estimate advisory.
Funding shared hardware needs fewer rules than paid work
| Use | Nostr piece | Buzz gap |
|---|---|---|
| Fund shared hardware | NIP-75 goal and NIP-57 split tips | Needs a wallet and funding UI |
| Pay for an agent job | NIP-90 job and NIP-47 wallet calls | Needs billing and delivery rules |
A Buzz room could use NIP-75 to fund one GPU, then use NIP-57 to split tips among its hosts. That stays close to Buzz's current trust group: the community funds capacity, then membership grants use. It needs a wallet and UI, but no meter for each turn. Open issue #265 already lists NIP-57 zap events as relay work.
A fixed price for an accepted job fits Buzz sooner than a token bill. Its Mesh counters cannot tie remote tokens to one member. NIP-90 sketches a request, bid, result, and BOLT11 invoice. Its text-generation job can name a model and cap output tokens. The Nostr project marks NIP-90 unrecommended and leaves payment timing open. Buzz also reserved its own job kinds because delegation needs owner authorization chains. Buzz's relay does not accept those job kinds.
NIP-47 could give an app or agent a
separate wallet key, a wallet-set spending cap, and a way to make, pay, or hold an invoice. Buzz would
still need a rule for when the parties settle or cancel it. NIP-57 can attach a tip receipt to a signed
event and split the tip among keys. Buzz supports neither path. Its
relay rejects unknown event kinds,
including NIP-57 receipt kind 9735, and its
published NIP list
omits NIP-57.
Buzz has identity and usage records. It has not joined them into a price, bill, or payment.
The X post's “instant zero-fee” claim goes too far. routing nodes may charge a base fee and a rate. Payments can also fail when routes time out or lack capacity. NIP-57 warns that a zap receipt does not prove payment; the client trusts the wallet that signed it. A settled invoice still cannot show which model ran, whether the host counted tokens well, or whether the result met the job.
The near bet is a funded compute pool inside one Buzz community. The far bet is an agent market across relays. An agent can keep one key, but its work history needs relay replication or a cross-relay index. Buzz has neither. Paid work also needs private prompts, budget controls, and a rule for bad results. Nostr supplies signed identity; Lightning moves the money. Buzz would still need the work and payment rules.
Git review stays in Buzz
Buzz runs a Git server. Its Projects preview shows pull requests and review decisions. Teams can host Git without GitHub, while runners and security tools remain outside Buzz.
Open issue #2469 says every signed-in member of a Buzz community can read each hosted repository, including projects tied to private channels. Channel roles limit pushes while reads remain open. PR #2539 adds private repository reads and remains open and unmerged.
One relay runs each community
Block calls Buzz decentralized because it uses Nostr keys and signed events. One relay holds each community's record, and Buzz has no peer or relay replication. A team can run its own relay and reuse its keys on another server. Each community still depends on one operator for service and access.
Hosted messages and DMs lack end-to-end encryption. Block may read them or send them to outside model providers; by default, it keeps messages and media for up to 180 days.
A self-hosted team controls its relay. Remote model providers may still receive prompts. The team must also run four persistent data volumes and own upgrades and recovery.
Try one project room
| Trial | Use it when | Risk |
|---|---|---|
| Hosted | Two agents handle non-sensitive work | Block and model providers may read the work |
| Self-hosted | The team can run the relay and data stores | Model providers may still see prompts |
Wait when work needs reliable approval or offline delivery, or when code must stay private.
Run the same tasks in Buzz and one direct agent runtime. Hold the inputs, model, token limit, and pass condition fixed. For shared compute, use the same local model on both paths. Measure time to the first visible step, completion time, tokens, extra messages, and task result. Stop if Buzz adds cost without cutting coordination work.
Low-risk work is the current limit
Pause a code-writing run for human approval, restart the relay service, then approve it. The run should resume once. Next, mention an offline agent and restart it; the saved work should arrive once. Both tests must pass before teams trust work that waits for approval.
A private-channel member should clone its repository. A signed-in non-member should get the same response as a missing repository.
The agent account gives each agent durable authorship; shared compute lets members lend a local model. Nostr could fund that pool or turn signed jobs into paid work, but Buzz has not joined identity, use, and payment. Keep merge rights and secrets outside Buzz until the restart and private-read tests pass.