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.

1 key
Each human or agent signs its events
12 msgs
Threads and DMs load this history by default

Agents join the same rooms

SurfaceBuzz featureResult
WorkspaceChannels and DMsPeople and agents share one room
AgentsSigned accounts and work historyEach 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.”

  1. Human identity Human key
    Signs the attestation
    attests to
  2. Agent identity Agent key
    Signs its own work
    produces
  3. Signed activity Work events
    Chat and code activity
    records
  4. Audit trail Work record
    Signed event history
Relay checkShipped behaviorResult
IdentityVerifies event signature and signed-in keyBinds a signed event to one account
Member-only accessClosed workspaces and non-open channels check membershipOrdinary 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

ControlCurrent stateGap
Action rightsChannel membership controls accessNo per-action approval
Human approvalWorkflow creates an approval tokenCannot 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.

The audit fix leaves old rows behind

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.

ControlWhat the code doesLimit
Prompt inputChannel mentions omit history; threads and DMs load 12 messagesLarge messages can still fill the prompt
RecallLoads core memory and offers full-text searchThe 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.

One cost report

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.

A latency report, not a benchmark

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.

Agents can miss stored messages

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.

PartShipped pathBoundary
Agent runtimeFizz runs through buzz-acp and buzz-agentCodex and Claude Code keep their own provider setup
Model computeMeshLLM sends inference to a member nodeNo 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

  1. Shipped Signed key
    Names the buyer, agent, or host
    signs
  2. Missing link Job quote
    Binds scope, model, price, and deadline
    starts
  3. Partial Work record
    Links the result and agreed use
    releases
  4. Missing path Payment
    Settles 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

UseNostr pieceBuzz gap
Fund shared hardwareNIP-75 goal and NIP-57 split tipsNeeds a wallet and funding UI
Pay for an agent jobNIP-90 job and NIP-47 wallet callsNeeds 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.

Private channels leave repositories readable

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.

Who can read hosted Buzz

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

TrialUse it whenRisk
HostedTwo agents handle non-sensitive workBlock and model providers may read the work
Self-hostedThe team can run the relay and data storesModel 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

signal Delegation survives a restart

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.

signal Private project code follows room access

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.

Sources & Evidence
Block launched Buzz on July 21 with an Apache-2.0 license and self-hosting support Teams can inspect the code and run their own server.
Block launch
Buzz provides Slack-like workspace tools and connects to separate agent runtimes Teams can change the runtime without replacing the workspace.
Buzz vision
buzz-acp accepts any stdio ACP agent and can process separate channels in parallel The runtime supplies worktrees and delegation; Buzz supplies the queue and shared identity.
ACP bridge
Agents have their own keys and revocable relay access An agent keeps its authorship when an owner attests to its key.
Block Engineering
Owner attestation remains an optional draft Nostr extension Relay access and action approval remain separate.
NIP-OA draft
The relay verifies each signed event and matches its key to the signed-in key An accepted event belongs to one authenticated account.
Relay ingest
Closed Buzz workspaces check membership during NIP-42 authentication Workspace membership remains a separate access check.
Relay authentication
Ordinary writes to non-open channels pass a membership check Private channel writes require membership.
Relay access checks
The workflow engine fails runs that reach request_approval Buzz cannot yet resume work after a person approves it.
Workflow engine
The Buzz workflow schema accepts schedules and HTTP webhooks The workflow format covers recurring work and outside triggers.
Workflow triggers
Open issue #2376 tracks work to pause and resume runs for approval The missing approval path remained open on July 25.
Buzz issue #2376
Closed issue #2637 reported audit failures after timestamps lost precision The report found why old audit chains failed verification.
Buzz issue #2637
Commit 264a56a hashes new audit entries at Postgres timestamp precision New rows can verify, but the change does not repair old rows.
Audit precision fix
Large objects stay outside the event log, one relay holds each community, and ACP restarts crashed agents Event signatures cover only part of the system; one relay and other stores remain required.
Buzz architecture
Buzz loads 12 messages for threads and DMs; agents must request ordinary channel history The fixed limit uses fewer prompt tokens but leaves recall to the agent.
ACP context configuration
ACP prompt blocks retain full event metadata and tags Those fields add tokens to each prompt.
ACP prompt formatting
The native agent summarizes near its context limit, then drops old turns after repeated handoffs The agent can lose facts during long tasks even when the room keeps them.
Native context handoff
Buzz loads core memory at session start; agents must fetch named memories Long sessions can use old core memory, while named notes need a lookup.
Agent memory specification
Each Buzz memory note belongs to one agent-owner pair Shared room history does not create one common team memory store.
Agent memory records
History retrieval uses filtered Postgres full-text search Recall depends on useful search words.
Search query implementation
Git clone, fetch, and push ship through standard Smart HTTP Teams can host code on Buzz itself.
Git transport
The Projects preview builds pull-request views and review decisions from signed events Review work can happen inside Buzz.
Projects pull-request code
Issue #2631 reports about 220 Codex descendants and 17.7 million cumulative tokens Eager 24-worker pools can raise local cost; the report does not measure normal or billed use.
Buzz issue #2631
The activity panel can show raw ACP JSON-RPC frames and stop a local turn People can inspect protocol activity, but they cannot attach to the live agent terminal.
Agent activity panel
The native Buzz agent uses non-streaming model calls and cannot load a saved session A process restart loses its in-memory session, and each model round arrives as one response.
Native agent
The project terminal command opens a separate shell at the project checkout It does not attach the user to the agent’s live process.
Project terminal
Issue #2386 timed four short replies at 13 to 31 seconds The small sample flags latency but does not isolate its cause.
Buzz issue #2386
Open issue #1743 reports that an offline agent can miss a stored mention The agent cannot act on a message it never receives.
Buzz issue #1743
Open issue #2270 reports ignored thread replies unless the agent gets a fresh tag A person may need to tag the same agent on every turn.
Buzz issue #2270
ACP first subscribes from about five seconds before process startup Older offline mentions may remain unprocessed.
ACP startup watermark
Default ACP mention mode adds a tag filter to the relay subscription An untagged thread reply does not reach the agent.
ACP relay filter
Buzz enables MeshLLM shared compute in its Apple Silicon release build The feature ships on one supported build rather than across every desktop release.
Release workflow
Buzz documents the Fizz path to a member model over direct QUIC or encrypted Iroh relays The runbook traces one shared-compute path and keeps model traffic off the Buzz relay.
Shared compute runbook
The shared provider caps output at 4,096 tokens and disables model thinking The settings bound what a shared local model can return in one round.
Shared provider settings
Buzz frames Mesh as a community-gated compute commons Adding prices would change a trust-based pool into a market.
Buzz Mesh vision
Buzz publishes a NIP-AM record only when a runtime reports use and the agent has an owner key A turn without reported use leaves no metric.
NIP-AM publisher
NIP-AM marks token cost as an estimate and records it from the agent The record can guide a budget but cannot prove what a provider should charge.
Agent turn metric spec
A Mesh host reads request and output-token counts from its local runtime The host sees session use but not the remote member, and both sides lack a signed bill.
Mesh serving usage
NIP-75 defines goals that people can fund with zaps A community could fund shared hardware without pricing each model turn.
NIP-75
NIP-57 can link Lightning tips to events and split them among recipients A room could reward one signed result or several hosts, though the receipt issuer remains trusted.
NIP-57
Open issue #265 lists NIP-57 zap request and receipt kinds as relay work Buzz has a path to store zap events, but it still needs the wallet and Lightning parts.
Buzz issue #265
NIP-90 sketches paid compute jobs but is marked unrecommended The closest open job-market spec leaves payment timing and bad-result rules open.
NIP-90
Buzz reserves custom job kinds instead of NIP-90 kinds Buzz chose owner authorization chains over the public NIP-90 job range.
Buzz job kinds
NIP-47 lets clients pay and hold Lightning invoices through encrypted Nostr requests An agent could get a separate wallet key and wallet-set budget without holding the main wallet key.
NIP-47
The Buzz relay rejects event kinds outside its write allowlist NIP-57 receipts and Buzz job events do not pass the inspected write path.
Relay event allowlist
Buzz does not advertise NIP-47, NIP-57, or NIP-90 support Using Nostr does not give Buzz a wallet, zap, or paid-job path.
Relay NIP list
Lightning routing nodes may charge a base and proportional fee Lightning payments can be cheap, but “zero-fee” is not a sound general claim.
BOLT 7
Open issue #2469 says every authenticated community member can read each hosted repository A private project channel can expose its code to the whole community.
Buzz issue #2469
Open PR #2539 adds channel-scoped private repository reads but remains unmerged Private channel code still lacks shipped read controls.
Buzz PR #2539
Hosted messages and DMs lack end-to-end encryption, and Block may access them The relay operator may read sensitive work.
Buzz support
Block may send channel content to model providers and keep messages or media for up to 180 days Outside model providers may receive workspace content.
Buzz privacy notice
The production stack requires four persistent data volumes The team owns every backup and restore.
Deployment guide