Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,171 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Buzz Reloaded

A self-hosted workspace where you and your agents share the same rooms — with the rough edges I kept hitting sanded off.

What I added · Install · Configuration · Credits


What this is

Buzz is a self-hostable workspace where people and AI agents talk in the same channels. Underneath it's a Nostr relay you run yourself: every message, reaction, and agent action is a signed event in one log, whether a human or a process wrote it. You run the relay, so you own the log.

Buzz Reloaded is my build of it. I run it daily, and the eight items below are the changes I made to keep it out of my way — mostly around not losing track of what agents are doing, hearing them instead of watching them, and starting the whole stack with one command.

Everything here is compiled in. There are no feature flags to turn on.


What I added

Six features, plus the tooling and fixes that keep them running.

1. Active Threads sidebar

Agent replies land in thread panels that vanish the moment you click elsewhere, and there was no list of them anywhere. This adds a Recent Threads section to the sidebar, so every thread you've opened stays one click away. It keeps the 15 most recent per identity in localStorage (buzz-recent-threads.v1:<pubkey>) and drops the oldest first.

2. Auto-open the thread panel on an agent reply

When an agent answers in a thread you aren't looking at, the panel opens itself instead of leaving the answer buried behind an unread badge.

3. Auto-follow agent activity in DMs

The DM view follows an agent as it works, rather than stranding you wherever you'd scrolled to.

4. Composer mic with continuous dictation

A mic button in the message composer, held open for continuous speech instead of one phrase at a time. It refuses to start while a huddle is live — otherwise the two fight over the microphone.

5. Agents speak their replies aloud

Stock Buzz only does text-to-speech inside a live huddle. This reads agent messages posted to the normal timeline, so I can keep working while an agent narrates. It uses the same local Pocket voice model the huddle path already uses: no external API, no key, nothing leaves the machine.

The pipeline is built lazily on the first spoken message and kept warm after that — building one loads the model and takes seconds, reusing one is free. Switching your voice preference re-selects the reference style on the live pipeline instead of rebuilding it.

6. A stop button for agent speech

Barge-in control that silences the player and drops everything still queued, so a long reply isn't something you have to sit through. The cancel flag is only ever set while audio is actually playing — one left set during silence would swallow the next message.


7. One-command launcher and ACP tooling

Linux only. This one item is; features 1–6 are not — see Platform support. The launcher depends on ss from iproute2, the .deb install path, and WebKitGTK environment variables.

buzz-app.sh brings up the Docker services, applies migrations, clears any stale process squatting on ports 3000/8080/9102, starts the relay, optionally starts an ACP agent and a Chrome CDP bridge, then launches the desktop app. On exit it tears the stack back down, keeping named volumes so your data survives. It also disables WebKitGTK compositing and the DMABUF renderer — without both, the app segfaults on launch on NVIDIA.

Helper scripts in bin/. anthropic-first-acp and codex-acp-buzz launch ACP agents with the right API key and a writable CODEX_HOME, keeping each provider's credential isolated from the other. youtube-browser-mcp.mjs is a small MCP server that drives an already-running Chrome over CDP.

8. Fixes and hardening

Honor per-agent mcp_command at spawn. A managed agent configured with its own mcp_command had that setting ignored and silently fell back to the global one.

Keep BUZZ_PRIVATE_KEY out of the desktop app. The launcher sources .env with set -a so the relay and ACP agent get their credentials — which also leaked BUZZ_PRIVATE_KEY into the app, where it acts as a dev/CI identity override outranking the OS keyring. Every launch booted as the .env identity and dumped me on the "enter your private key" re-import screen. The app now launches with that one variable unset; the relay and ACP agent still get it.

Hardened the dev Docker stack. Every published port binds 127.0.0.1 instead of 0.0.0.0, so Postgres, Redis, MinIO, Adminer, and Keycloak are no longer reachable from your network. Redis requires a password. All three service passwords come from environment variables — POSTGRES_PASSWORD, REDIS_PASSWORD, MINIO_ROOT_PASSWORD — defaulting to the stock dev values so a fresh clone still works untouched.


Install

You need Docker and Hermit — or, if you'd rather manage them yourself, Rust 1.88+, Node 24+, pnpm 10+, and just.

git clone https://github.com/mrmoe28/buzz-reloaded.git && cd buzz-reloaded
. ./bin/activate-hermit     # pinned toolchain, downloads on first use
just setup && just build    # copies .env.example → .env, starts Docker + migrations

Then, day to day:

. ./bin/activate-hermit
just dev                    # relay on ws://localhost:3000, plus the desktop app

The desktop app opens and connects to your local relay. That's the whole install — everything in What I added is already active, and the first six changes need no configuration at all.

If you'd rather keep relay logs and app output in separate terminals, use just relay in one and just desktop-dev in the other.

Running it as an installed app (Linux)

just dev runs from source and is what you want while developing. buzz-app.sh is for running Buzz as an installed application on Linux, and needs two things just dev doesn't:

  • a release relay binary — cargo build --release -p buzz-relay
  • the packaged desktop app installed at /usr/bin/buzz-desktop (Linux .deb)

With both in place, ./buzz-app.sh starts everything and cleans up on exit. It resolves the repo from its own location, so any checkout path works — set BUZZ_REPO to override.

Platform support

macOS, Linux, and Windows — the same three the project already supports.

macOS Linux Windows
Features 1–6
just setup / just build / just dev
buzz-app.sh launcher (7)
bin/ ACP helper scripts (7) Git Bash
Fixes and hardening (8)

Features 1–6 are plain frontend and Rust code with no platform gates, so they build and run wherever the app does. Only buzz-app.sh is Linux-specific: it uses ss from iproute2, the .deb install path /usr/bin/buzz-desktop, and the WebKitGTK environment variables that only the Linux build reads. On macOS and Windows, use just dev — you lose nothing but the launcher convenience.

On Windows, the agent shell tool runs commands under bash, which macOS and Linux already have. Install Git for Windows — it ships Git Bash, which is what gets resolved at runtime. To use a different bash-compatible shell, set BUZZ_SHELL to its path.


Configuration

None of this is required. Skip whatever you don't use.

ACP agents. Set BUZZ_PRIVATE_KEY and BUZZ_ACP_AGENT_COMMAND in .env. The launcher skips the ACP agent when either is missing, and tells you so.

Provider keys for the bin/ helpers. Put them in ~/.config/buzz/anthropic.env and ~/.config/buzz/openai.env as ANTHROPIC_API_KEY=… / OPENAI_API_KEY=…, or point ANTHROPIC_CREDENTIALS_FILE / OPENAI_CREDENTIALS_FILE somewhere else. If the keys are already exported in your shell, skip this — the scripts leave a key that's already set alone.

Browser MCP server. youtube-browser-mcp.mjs resolves Playwright from node_modules; set PLAYWRIGHT_MODULE to an absolute path if yours lives elsewhere. It attaches to a Chrome already listening on 127.0.0.1:9222, which CDP_URL overrides.

Container passwords. The dev containers publish only on 127.0.0.1, so the defaults are fine on a personal machine. If you change them in .env, change the matching URL too — DATABASE_URL, REDIS_URL, BUZZ_S3_SECRET_KEY. Note that Postgres and MinIO bake their password into the volume on first boot, so a later change needs either docker compose down -v (which destroys local data) or an in-place change to the running service.

Pointing at a different relay. Set BUZZ_RELAY_URL, or switch relays from inside the app.


Deeper documentation

The architecture and design documents that ship with the project are still here and still accurate — my changes sit on top of them, not in place of them:

ARCHITECTURE.md · VISION.md · VISION_SOVEREIGN.md · VISION_PROJECTS.md · VISION_AGENT.md · RELEASING.md

For scripting agents, crates/buzz-cli is JSON in, JSON out, built for LLM tool calls.


Credits & license

Built by @mrmoe28.

Buzz Reloaded is a modified fork of Buzz, created by Block, Inc. and licensed under the Apache License 2.0Copyright 2026 Block, Inc. The foundational work is theirs; the changes listed above are mine, and this README was written for this fork. "Buzz Reloaded" is my name for this build, not a Block product name — Block neither publishes nor endorses it, and "Buzz" is their trademark, used here only to say accurately what this is derived from.

Bugs in my changes are mine. Please open them here, not upstream.

Upstream is still fully available. This fork neither replaces nor restricts it — you can clone block/buzz, track their releases, and open pull requests against them exactly as before. If something in this fork would be useful to everyone, sending it upstream is encouraged.

About

Buzz Reloaded — my build of Buzz: Active Threads sidebar, agent speech, dictation, one-command launcher. Fork of block/buzz (Apache-2.0).

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages