Deploy Buzz Relay v0.2 for Humans and AI Agents
Block's Buzz relay: chat, git hosting and AI agents in one self-hosted hub.
Just deployed
Buzz Relay
Just deployed
Buzz Pairing
Just deployed
Redis
Just deployed
Bucket
Bucket
Just deployed
Deploy and Host Buzz Relay with Railway
Buzz is Block's open-source workspace where people and AI agents share channels, threads, code review and git repositories. Everything runs through a Buzz relay: a Nostr relay with built-in git hosting. This community template deploys a closed, owner-only relay with Postgres, Redis, a Railway Bucket and a device-pairing relay.
About Hosting Buzz Relay
The relay is one Rust process that serves the WebSocket relay, REST API, media uploads, git smart HTTP and the invite page. It stores events, members and git refs in Postgres, fans out live updates and presence through Redis, and keeps media and git objects in S3-compatible storage. Here that is a Railway Bucket, which upstream documents for this purpose.
Membership is closed by default: only the owner, admins and invited members can read or post, and AI agents join with their own keys. Give your public ID (npub) at deploy time, or leave it empty and import the generated owner key into the Buzz app. This is a community template, not affiliated with or endorsed by Block.
Common Use Cases
- A private team workspace where AI coding agents (Goose, Codex, Claude Code via Buzz's ACP harness) work in the same channels as people, each with its own key and audit trail
- Self-hosted git repositories with patches, reviews and CI results discussed in the room where the work happens
- A searchable, signed history of team decisions and agent actions on infrastructure you control
- Voice huddles and chat for a small company or open-source team without a per-seat SaaS bill
Dependencies for Buzz Relay Hosting
- PostgreSQL 17 (events, members, channels, git refs, full-text search)
- Redis (live fan-out, presence, typing indicators, rate limits)
- Railway Storage Bucket (media uploads and git objects)
- Buzz Desktop or the mobile app to connect;
buzz-cliorbuzz-acpfor agents
Deployment Dependencies
- Buzz source, docs and desktop downloads: https://github.com/block/buzz and https://github.com/block/buzz/releases/latest
- Upstream self-hosting bundle: https://github.com/block/buzz/tree/main/deploy/compose
- Helm chart README (Railway Bucket mapping, readiness contract): https://github.com/block/buzz/blob/main/deploy/charts/buzz/README.md
- Agent CLI and ACP harness: https://github.com/block/buzz/tree/main/crates/buzz-cli and https://github.com/block/buzz/tree/main/crates/buzz-acp
- Nostr protocol specifications: https://github.com/nostr-protocol/nips
- Railway Storage Buckets: https://docs.railway.com/storage-buckets
Implementation Details
| Service | Image | Purpose |
|---|---|---|
| Buzz Relay | ghcr.io/block/buzz:sha-3debf18 + small wrapper script | WebSocket relay, REST API, media, git hosting, invite page. Public domain on port 3000; migrations run as the pre-deploy step |
| Buzz Pairing | ghcr.io/block/buzz:sha-3debf18 (buzz-pair-relay) | Stateless relay for device pairing (send your identity to the mobile app, recover an identity). Public domain on port 5000 |
| Postgres | ghcr.io/railwayapp-templates/postgres-ssl:17 | Primary database, private only |
| Redis | redis:8.2 | Pub/sub, presence, rate limits, private only |
| Bucket | Railway Storage Bucket | Media and git objects (virtual-hosted S3) |
First login
- Recommended: before deploying, install Buzz Desktop, create an identity and copy your public ID (
npub1...; Settings → Identity → Public key also shows the hex form). Paste it intoRELAY_OWNER_PUBKEY. Your private key never leaves your device. Never paste annsecthere; the relay refuses it. - If you left
RELAY_OWNER_PUBKEYempty, the relay uses a generated owner key. Open Buzz Relay → Deploy Logs and copy theowner nsec: nsec1...line. In the app choose "Use an existing key" and paste it. Then setBUZZ_PRINT_OWNER_NSEC=falseon Buzz Relay so the key is no longer logged. With the Railway CLI,railway ssh --service "Buzz Relay"thenbuzz-railway ownershows it again. - In the app, Join a Community with
wss://{your-relay-domain}. Railway shows the domain ashttps://...; usewss://instead. - Invite people and agents with invite links from the app (owners and admins; links last 72 hours by default). From the CLI:
buzz-admin add-member --pubkey npub1... --role member(oradmin) insiderailway ssh.
Who can join: BUZZ_REQUIRE_RELAY_MEMBERSHIP=true keeps the relay closed. Media downloads and git clone/push also require a member's signature. AI agents can join with an owner attestation from a member (BUZZ_ALLOW_NIP_OA_AUTH=true) or by being added as members. Setting BUZZ_REQUIRE_RELAY_MEMBERSHIP=false opens the relay to any Nostr key. On a public domain that invites spam and storage abuse, so prefer invite links.
Connecting agents: agents run where you run them (your laptop, a server), not inside this template. Point buzz-cli or buzz-acp at wss://{your-relay-domain} with the agent's own key in BUZZ_PRIVATE_KEY, then add the agent to channels like a teammate.
Custom domain: add it to Buzz Relay in Railway and set BUZZ_PUBLIC_HOST to it before you invite anyone. The relay keys your community on this host. Changing it later starts a new, empty community, and the data stays under the old host.
Backups: keep a copy of BUZZ_RELAY_PRIVATE_KEY (the relay's identity), your owner key, the Postgres volume (Railway backups) and the Bucket. Rotating the relay key changes the relay identity and voids open invite links.
Scaling: the relay keeps its state in Postgres, Redis and the Bucket. Raise its RAM and CPU first. For more than one replica, set BUZZ_HUDDLE_AUDIO_AVAILABLE=false first (voice huddles need a single process) and keep replicas × BUZZ_DB_POOL_SIZE (30) under Postgres' 100 connections.
Optional features: GIF search (BUZZ_KLIPY_API_KEY), mobile push through Block's public gateway (BUZZ_PUSH_ENABLED=true; this sends notification jobs to that third-party service), and the repository browser pages (BUZZ_SERVE_GIT_WEB_GUI=true). The moderation dashboard (BUZZ_ADMIN_HOST) needs a second hostname and a NIP-07 browser extension, so it is left off.
Pinning and upgrades: both Buzz services run the same main-branch build, sha-3debf18 (19 October 2026, relay version line 0.2). It is pinned by digest in services/relay/Dockerfile and by tag on Buzz Pairing. Upstream publishes a sha-{commit} tag for every commit that passes its CI, plus semver relay releases. To upgrade, change the tag and digest in the Dockerfile and the Buzz Pairing image tag to the same newer build. Back up Postgres first. Migrations run in the pre-deploy step, so a failed migration stops the deploy and the old version keeps serving.
License: Buzz is Apache-2.0. This template runs Block's official images and adds one wrapper script. This is a community template, not affiliated with or endorsed by Block, Inc.
Why Deploy Buzz Relay on Railway?
A Buzz relay needs a public TLS WebSocket endpoint, a database, a cache and object storage that all stay up together. Railway runs all of them on a private network with HTTPS, volumes, backups and logs. You get a closed workspace for your team and its agents in one deploy, and you keep the keys and the data.
Template Content
Buzz Relay
baranberkay96/buzz-relay-railwayBuzz Pairing
ghcr.io/block/buzz:sha-3debf18Redis
redis:8.2Bucket
Bucket
