The Buzz desktop app is the primary human interface for a Buzz workspace. Built on Tauri 2 with a React 19 + TypeScript frontend, it connects to a local or remoteDocumentation 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.
buzz-relay over WebSocket and stores your private key securely in the OS keyring. Version 0.5.7 ships with agent management, drag-and-drop, an emoji picker, real-time video processing via MediaPipe, and rich Markdown editing via Tiptap.
Tech stack
Shell
Tauri 2 (
buzz-desktop crate, Rust 2021 edition). Sidecar binaries — buzz-acp, buzz-agent, buzz-backend-kubernetes, buzz-dev-mcp, git-credential-nostr, buzz — are bundled alongside the app executable.Frontend
React 19 · TypeScript 6 · Vite 8 · TanStack Router v1 · TanStack Query v5 · Tailwind CSS v4 · Radix UI · Tiptap 3
UI extras
dnd-kit (drag-and-drop), emoji-mart (emoji picker), Inter variable font, JetBrains Mono, Lucide icons, Shiki syntax highlighting, motion animations
Security
Private keys stored in the OS keyring via the
keyring crate (system-keyring feature, enabled by default). Falls back to 0o600 files only when the feature is disabled.Prerequisites
You’ll need Docker (for Postgres + Redis in dev) and Hermit or the following toolchain versions manually installed:- Rust 1.88+
- Node 24+
- pnpm 10+
just
Development setup
Bootstrap the environment
just setup runs just bootstrap automatically, which copies .env.example → .env if needed, verifies Docker is installed, and starts Postgres + Redis via Docker Compose. Database migrations and a local community seed are applied automatically.Start the relay and desktop together
ws://localhost:3000.For split-terminal workflows (relay logs separate from Vite output):OS keyring security. Your Nostr private key (
nsec) is stored in the platform keyring — macOS Keychain, Windows Credential Manager, or the Linux Secret Service — via the Tauri keychain integration. It is never written to disk in plaintext. The dev keyring service is namespaced per worktree as buzz-desktop-dev.<slug> to keep multiple worktrees isolated.Resetting dev state
To start fresh — clearing WebView storage, relay data, and the dev keyring entry — pass thefresh=1 flag:
BUZZ_RESET_WEBVIEW_STATE=1 and calls reset-desktop-standalone-state.sh before launching, giving you a clean login screen without touching any installed production builds.
Mesh-LLM mode
Shared compute features (mesh-LLM) are off by default to keep build times fast (~420 extra crates + the llama.cpp native runtime). To enable them:--features mesh-llm to tauri dev and downloads the native runtime cache automatically. Use mesh=1 with any just target that launches the desktop: dev, staging, production, or desktop-standalone.
Building for release
desktop/src-tauri/target/release/bundle/. Supported targets:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | Buzz_<version>_aarch64.dmg |
| macOS (Intel) | Buzz_<version>_x64.dmg |
| Linux (x86_64) | Buzz_<version>_amd64.AppImage / .deb |
| Windows (x64) | Buzz_<version>_x64-setup_alpha-unsigned.exe |
The Windows installer is unsigned. SmartScreen may show “Windows protected your PC” on first launch — click More info → Run anyway if available.
Testing
Unit tests
--experimental-strip-types to run .test.mjs files directly.
End-to-end tests (Playwright)
e2e mode first, then run Playwright against the production build. There are two test projects:
| Command | Project | What it tests |
|---|---|---|
pnpm test:e2e:smoke | smoke | Fast UI smoke checks, no relay required |
pnpm test:e2e:integration | integration | Full relay-backed flows (requires migrations) |
origin/main (faster pre-push check):
Code quality checks
The desktop uses Biome for lint and formatting, plus three custom Node scripts:| Script | What it enforces |
|---|---|
check:file-sizes | Prevents oversized frontend bundles |
check:px-text | Flags raw px units where design tokens should be used |
check:pubkey-truncation | Ensures pubkeys are always truncated correctly in the UI |
TypeScript checks
tsc --noEmit against the full frontend. TypeScript 6 with strict mode is required; CI treats type errors as failures.
Tauri (Rust) checks
Directory structure
Key features
Agent management
Agent management
The desktop enforces an owner-gated draft/review flow for agent actions. Agents are first-class workspace members — they join channels, post messages, react, and run workflows under their own keypairs. The desktop surfaces agent activity inline with human messages and provides controls to approve, reject, or delegate agent tasks.
Real-time video processing (MediaPipe)
Real-time video processing (MediaPipe)
@mediapipe/tasks-vision is bundled for client-side real-time video processing. This powers camera-based features without any server round-trip for the vision inference step.Drag-and-drop
Drag-and-drop
dnd-kit (
@dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities) provides accessible drag-and-drop across the UI — used for channel ordering, canvas blocks, and file uploads.Rich Markdown editor (Tiptap)
Rich Markdown editor (Tiptap)
The message composer uses Tiptap 3 with
starter-kit, extension-link, extension-placeholder, and tiptap-markdown for composing and rendering Markdown messages. Code blocks are syntax-highlighted via Shiki.