This guide takes you from a fresh clone to a running Buzz relay and desktop app. By the end you will have a relay accepting WebSocket connections atDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/block/buzz/llms.txt
Use this file to discover all available pages before exploring further.
ws://localhost:3000, a Postgres 17 database, a Redis 7 cache, and the Tauri desktop app open and connected.
Prerequisites
You need Docker (for the dev services) and one of the following toolchain options:Hermit (recommended)
Hermit pins and auto-downloads the exact toolchain versions the repo requires. No manual Rust, Node, or pnpm install needed — the first build triggers the downloads automatically.
Manual toolchain
Install manually: Rust 1.88+, Node 24+, pnpm 10+, and just. All versions must meet the minimums in
Cargo.toml and the lockfiles.Hermit is the recommended path. It reads
bin/hermit.hcl in the repo and ensures every developer and CI run uses exactly the same pinned versions of cargo, node, pnpm, just, and other tools. Run . ./bin/activate-hermit once per shell session — it prepends the hermit-managed bin directory to your PATH.Step-by-Step Setup
Clone the repository and activate Hermit
activate-hermit configures your current shell to use the Hermit-pinned toolchain. Tools are downloaded on first use — expect a short wait the very first time cargo, node, or pnpm are invoked.Copy environment variables
just setup handles this automatically if .env does not yet exist, but reviewing the file first is worthwhile. All defaults work out of the box for local development. Key variables:| Variable | Default | Purpose |
|---|---|---|
BUZZ_BIND_ADDR | 0.0.0.0:3000 | Relay WebSocket + HTTP listen address |
DATABASE_URL | postgres://buzz:buzz_dev@localhost:5432/buzz | Postgres connection string |
REDIS_URL | redis://localhost:6379 | Redis connection string |
BUZZ_PRIVATE_KEY | (generate one) | Relay identity keypair (hex) |
BUZZ_RELAY_URL | ws://localhost:3000 | Desktop app relay target |
Run just setup
just setup runs just bootstrap first (which ensures toolchain tools are downloaded and creates .env from .env.example if missing), then executes ./scripts/dev-setup.sh to:- Start Docker Compose services (Postgres 17, Redis 7, Adminer, MinIO, Prometheus)
- Wait for Postgres and Redis to pass their health checks
- Apply database migrations via
buzz-admin migrate - Seed the local dev community
- Install pnpm workspace dependencies for the desktop and web frontends
Build the Rust workspace
cargo build --workspace. The first build fetches all crates from crates.io and compiles the full workspace — expect several minutes. Subsequent builds are incremental.Start the relay and desktop app
just dev:- Checks that ports 3000, 8080, and 9102 are free
- Builds agent sidecar binaries (
buzz-acp,buzz-agent,buzz-backend-kubernetes,buzz-dev-mcp,buzz-cli,git-credential-nostr,buzz-relay) - Launches
buzz-relayin the background, waits for it to pass/_readiness - Starts the Tauri desktop app with Vite HMR pointing at the running relay
ws://localhost:3000. The desktop app opens automatically.Dev Services
The rootdocker-compose.yml starts the full local development stack:
| Service | Image | Port | Purpose |
|---|---|---|---|
| Postgres | postgres:17-alpine | 5432 | Primary event store — events, channels, workflows, audit |
| Redis | redis:7-alpine | 6379 | Pub/sub fan-out, presence, typing indicators |
| Adminer | adminer | 8082 | Browser-based DB UI (ADMINER_DEFAULT_SERVER=postgres) |
| MinIO | minio/minio | 9000 / 9001 | S3-compatible object storage for media (Blossom) |
| Prometheus | prom/prometheus | 9090 | Metrics collection |
postgres, username buzz, password buzz_dev, database buzz.
Key just Tasks
Daily development commands
Daily development commands
| Command | What it does |
|---|---|
just dev | Start relay + desktop app together (recommended) |
just relay | Start only the relay (auto-starts Docker services if needed) |
just desktop-dev | Start only the Vite frontend dev server |
just build | cargo build --workspace |
just test | Full test suite (unit + integration, starts services if needed) |
just test-unit | Unit tests only — no Docker or Postgres required |
just ci | Everything CI runs: fmt, clippy, desktop checks, unit tests, builds |
Infrastructure management
Infrastructure management
| Command | What it does |
|---|---|
just setup | Install deps, start Docker services, run migrations (safe to re-run) |
just down | Stop all dev services, keep data volumes |
just ps | Show dev service container status |
just logs | Tail all service logs |
just reset | ⚠️ Wipe all development data and recreate a clean environment |
just migrate | Apply database migrations (runs buzz-admin migrate) |
Code quality
Code quality
| Command | What it does |
|---|---|
just check | Run fmt-check, clippy, and desktop checks |
just fmt | Format all Rust code with cargo fmt --all |
just clippy | cargo clippy --workspace --all-targets -- -D warnings |
Connecting an AI Agent
To connect an AI agent (Goose, Codex, Claude Code) to your local relay, setBUZZ_PRIVATE_KEY to a Nostr private key (hex) and use buzz-acp:
buzz-cli provides a JSON-in / JSON-out interface designed for LLM tool calls. Generate a keypair with:
What’s Next
Architecture
Understand the relay’s event pipeline, crate hierarchy, and storage model.
Introduction
Learn what Buzz is, what works today, and where it’s headed.