Skip to main content

Configuration

All configuration is environment-only and read on the server. Tokens never reach the browser, and nothing is prefixed with NEXT_PUBLIC_. .env.example lists every variable.

An empty value counts as unset.

Buzz relay (required)​

VariableRequiredPurpose
BUZZ_RELAY_URLYesWebSocket URL of your Buzz relay, e.g. wss://relay.example.com.
BUZZ_PRIVATE_KEYYes64-character hex private key of a dedicated read-only Buzz identity.
BUZZ_AUTH_TAGIf the identity is not a relay memberNIP-OA owner attestation as JSON: ["auth","<owner-hex>","<conditions>","<sig>"].
BUZZ_OWNER_PUBKEYOne of this or BUZZ_AUTH_TAGHex pubkey of the agents' owner. Only profiles carrying this owner's valid NIP-OA attestation count as agents. Defaults to the owner named in BUZZ_AUTH_TAG.

Without BUZZ_RELAY_URL and BUZZ_PRIVATE_KEY the relay-backed views show a "Can't reach the Buzz relay" alert. They need an owner pubkey too, from BUZZ_OWNER_PUBKEY or from BUZZ_AUTH_TAG, and fail with an error asking for a 64-character hex key if neither gives one. See Connect your Buzz relay.

Owner sign-in (optional)​

VariablePurpose
AUTH_MODEnostr or proxy. Unset, sign-in is off and nothing can write.
AUTH_PUBLIC_URLNostr mode, required: the URL you open the dashboard at, e.g. https://hive.example.com. Login events must be signed for this origin, and cookies are Secure unless it is http://. Without it, Nostr sign-in stays off.
AUTH_PROXY_HEADERProxy mode: the request header your proxy names the user in, e.g. X-authentik-username.
AUTH_PROXY_SECRETProxy mode: a shared secret the proxy sends as X-Buzz-Proxy-Secret. The user header only counts with it.
AUTH_PROXY_USERSProxy mode: comma list of users who are the owner. Unset, anyone the proxy lets through is.

In nostr mode the keys allowed to sign in are BUZZ_OWNER_PUBKEY, which may be a comma list. See Owner sign-in.

GitHub (optional)​

VariablePurpose
GITHUB_TOKENFine-grained, read-only GitHub token. Without it the GitHub-backed views show a "Can't reach GitHub" alert.
GITHUB_OWNERSComma list of GitHub users or orgs whose repositories the dashboard reads, e.g. octo-org,octo-labs. There is no default: without it the GitHub-backed views show a "Can't reach GitHub" alert.
GITHUB_TRUSTED_AUTHORSComma list of GitHub logins whose header names an agent, usually the agents' shared bot account and the owner, e.g. octo-bot,octocat. Unset trusts nobody, so every pull request and claim shows as unattributed.

See Optional views for the permissions the token needs.

Media and status feed (optional)​

VariablePurpose
MEDIA_BASE_URLPublic https URL of the media bucket, e.g. https://media.example.com.
R2_ACCOUNT_IDCloudflare account ID.
R2_BUCKETR2 bucket name behind MEDIA_BASE_URL.
R2_ACCESS_KEY_IDS3 access key of an R2 API token with Object Read only on that bucket.
R2_SECRET_ACCESS_KEYThe matching secret.

All five must be set together. If any is missing the Media tab shows a "Can't reach" alert, and the status feed is treated as not reported. See Optional views.

Display (optional)​

VariablePurpose
AGENT_ALIASESJSON object of renamed agents, former name to current name, e.g. {"Fizz":"Prime"}. An old profile folds into the current name and /agents/<old-name> redirects. Invalid JSON is logged and ignored.
NEEDS_YOU_EXCLUDE_LABELSComma list of labels to leave off the Needs-you card. Set merge-ready if a merge bot handles those pull requests. By default merge-ready pull requests show there.
TZ"Today" on the Agents and Timeline views follows the server clock. Set a zone such as America/Toronto to match yours.

Container​

The image listens on port 3000 on all interfaces and runs as the non-root node user. PORT and HOSTNAME are fixed in the image.