bzz

a human-first terminal client for Buzz

$ curl -fsSL https://getbzz.dev/install.sh | sh
bzz — #general · my-team

Live theme switching over a simulated offline fixture — real binary, real render, no relay.

1static Rust binary
60built-in themes
offlineSQLite-backed history
100%keyboard-driven
why bzz

Your keys, your history, your terminal.

/// identity

Native Nostr identity, in your OS keychain

No third-party account. Secret keys live in the operating-system credential store and never pass through argv or plain environment variables. Backups are password-encrypted NIP-49 ncryptsec files.

/// communities

Host-isolated communities

Each Buzz community stays isolated by host. Configure several, authenticate one active session, and switch without mixing state.

/// offline

Offline-first everything

Channel history, profiles, threads, unread markers, and drafts are cached locally. Read and draft on a plane; sync when you reconnect.

what you get

All of Buzz, at terminal speed.

/// sends

Acknowledged sends, honest failures

Durable ambiguous-outcome recovery with distinct pending, delivery-unknown, and rejected presentation. You always know what the relay actually accepted.

/// inbox

An Inbox that respects your attention

Mentions, relevant threads, workspace DMs, needs-action events, unread rows, and drafts — filterable, with explicit read/unread state. Nothing is silently marked read.

/// search

Unified local + relay search

Offline SQLite FTS5 plus authenticated NIP-50 prefix search across channels, DMs, people, and messages, with from:, in:, and date operators.

/// dms

Workspace DMs, honestly labeled

Buzz Desktop-compatible one-to-one and group DMs with owner-only hide state — and explicit labeling that they are not end-to-end encrypted.

/// media

Inline images, verified first

JPEG/PNG/GIF/WebP render through Kitty, Sixel, iTerm2, or a Unicode half-block fallback. Every blob is size, MIME, and SHA-256 verified before decode or display.

/// attachments

Safe uploads, sanitized by default

Paste files or images with Ctrl-V, pick with the OS chooser. Local images are bounded, orientation-corrected, and stripped of private metadata before upload.

/// navigation

Vim-style, leader-key driven

j/k to move, Space Space for the fuzzy switcher, i to write, ? for the generated keymap help. Mouse optional, semantic, and safely restored.

/// themes

60 built-in themes

Plus semantic theme.toml customization. This page's theme switcher uses the same palettes — try it in the nav.

/// reactions

Reactions, deletion, read state

Reaction toggles, own-message deletion, and encrypted cross-device read state, all from the keyboard.

security

Security is a feature, not a footnote.

keybindings

Everything is a keystroke away.

Movement

j k
move down / up
14
focus workspace surfaces
Tab h l
traverse surfaces
gg G
jump to edges

Leader

Space Space
fuzzy channel/DM switcher
Space n
open Inbox
Space a
contextual actions
Space o
theme options
?
effective-keymap help

Messages

r
reactions
y
copy sanitized text (OSC 52)
v
multi-message copy range
@
member completion

Composer

i
open the writing dock
Ctrl-o
OS file chooser
Ctrl-v
paste file / image / text
Ctrl-r
retry failed uploads
install

One binary. Pick your platform.

curl -fsSL https://getbzz.dev/install.sh | sh

Detects OS and architecture. Read it first if you prefer: install.sh (redirects to the latest signed GitHub release installer).

/// verify

Verify what you run

Every release ships sha256.sum, a CycloneDX SBOM (bzz.cdx.xml), and GitHub build-provenance attestations. Verification steps live in docs/releasing.md.

/// first run

Then get connected

bzz identity new --label personal
bzz community add my-team \
  wss://buzz.example <identity-uuid>
bzz