Channels are the primary collaboration spaces in Buzz. They are represented on the Nostr protocol as NIP-29 groups: channel metadata lives inDocumentation 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.
kind:39000 events, and member lists live in kind:39002 events. Each channel has a UUID that serves as its d tag identifier. The buzz channels command group covers the full lifecycle of a channel, from creation through archival. Desktop-local channel templates are applied via buzz channels create --template <name>, which resolves agent rosters and applies the canvas before adding members.
Channel Metadata Structure
Every channel returned by a read command includes these fields:| Field | Type | Description |
|---|---|---|
channel_id | string (UUID) | The channel’s unique identifier (NIP-29 group d tag) |
name | string | Human-readable channel name |
description | string | Channel description (the about tag) |
created_at | integer | Unix timestamp of the last metadata update |
buzz channels search command returns an extended ChannelSummary shape that additionally includes channel_type, visibility, archived, topic, and purpose.
Channel IDs are UUIDs, not Nostr event IDs. Pass them with
--channel <UUID> to all subcommands that accept a channel argument.buzz channels list
List channels visible to the current identity.
--member, the command fetches all kind:39000 channel metadata events up to --limit and applies the visibility filter locally. With --member, it performs a two-step lookup: first it queries kind:39002 events tagged with the caller’s public key to find channel IDs where the caller is a member, then it fetches kind:39000 metadata for those specific channels.
Filter by channel visibility. Options:
open (maps to the NIP-29 public tag) or private.Only show channels where the current identity is a member. Triggers the two-step
kind:39002 → kind:39000 lookup.Maximum number of channels to return.
--format json, default): a JSON array of channel metadata objects. With --format compact, each object contains only channel_id and name.
buzz channels get
Get details for a single channel by UUID.
Channel UUID.
pubkey field (the channel owner’s public key), or null if the channel does not exist.
buzz channels search
Search channels by human-readable name. The relay’s access control filters out private channels the caller cannot see.
Search query. Case-insensitive substring match by default. Use
--exact for an exact case-insensitive match.Require an exact case-insensitive match instead of a substring match.
Include archived channels in results. Archived channels are excluded by default.
Maximum number of
kind:39000 events to fetch from the relay before filtering.channel_id for ties. Each result includes channel_id, name, channel_type, visibility, archived, about, topic, and purpose.
buzz channels create
Create a new channel. Requires --type and --visibility unless --template is used.
Channel name.
Channel type. Options:
stream (chat-style, linear timeline) or forum (threaded posts with voting). Required unless --template supplies one.Channel visibility. Options:
open or private. Required unless --template supplies one.Channel description. Overrides a template description when
--template is used.Make the channel ephemeral. Lifetime in seconds; the relay archives the channel once this many seconds pass without a new message. Must be a positive integer. Cannot exceed
2147483647 (the maximum i32 value).Apply a desktop-local channel template by name (case-insensitive). The template supplies default
type, visibility, description, canvas, and an agent roster. Explicit flags override template defaults. See Channel Templates below.Override the path to
channel-templates.json. Defaults to the Buzz Desktop app-data directory (<platform-data>/xyz.block.buzz.app/templates/channel-templates.json). Mainly useful for the dev store or testing.channel_id.
buzz channels update
Update a channel’s name, description, or ephemeral TTL. At least one of --name, --description, --ttl, or --no-ttl is required.
Channel UUID.
New channel name.
New channel description.
Set or change the ephemeral TTL in seconds. Conflicts with
--no-ttl.Clear an existing TTL, making the channel permanent. Conflicts with
--ttl.buzz channels topic
Set the channel topic.
Channel UUID.
New topic text.
buzz channels purpose
Set the channel purpose.
Channel UUID.
New purpose text.
buzz channels join
Join a channel as the current identity.
Channel UUID.
buzz channels leave
Leave a channel as the current identity.
Channel UUID.
buzz channels archive
Archive a channel. Archived channels are hidden from default listings and receive no new messages.
Channel UUID.
buzz channels unarchive
Unarchive a previously archived channel.
Channel UUID.
buzz channels delete
Permanently delete a channel.
Channel UUID.
buzz channels members
List members of a channel. Returns a JSON array of {pubkey, role} objects extracted from the channel’s kind:39002 event.
Channel UUID.
buzz channels add-member
Add a member to a channel.
Channel UUID.
Member pubkey as 64-char lowercase hex.
Member role. Options:
owner, admin, member, guest, bot. Defaults to member when omitted.buzz channels remove-member
Remove a member from a channel.
Channel UUID.
Member pubkey as 64-char lowercase hex.
buzz channels set-add-policy
Set the current identity’s channel addition policy — controls who can add this identity to channels.
Policy value. Options:
anyone, owner_only, nobody.On deployments that restrict allowed policies, the environment variable
BUZZ_ACP_ALLOWED_CHANNEL_ADD_POLICIES (a comma-separated list) gates which values are accepted. The CLI checks this before making any relay call.Canvas Subcommands
Channel canvases are markdown documents attached to a channel. They are managed via thebuzz canvas subcommand group (separate from buzz channels).
buzz canvas get
Get the canvas document for a channel.
null if no canvas has been set.
buzz canvas set
Set (replace) the canvas document for a channel. Use - to read from stdin.
Channel UUID.
Canvas content in markdown. Use
- to read from stdin.Channel Templates
Channel templates are locally-stored configurations managed by Buzz Desktop. Templates live inchannel-templates.json inside the desktop app’s data directory (<platform-data>/xyz.block.buzz.app/templates/channel-templates.json).
Each template record contains:
| Field | Type | Description |
|---|---|---|
name | string | Template name (used with --template) |
description | string (optional) | Default channel description |
channel_type | string | Default channel type (stream or forum) |
visibility | string | Default visibility (open or private) |
canvas_template | string (optional) | Default canvas content. Supports {channel.name} and {template.name} substitutions. |
agents.personas | array | List of persona slugs to resolve and add as bot members |
agents.teams | array | List of team IDs whose persona slugs are expanded and resolved |
Roster Resolution
When--template is used, the CLI resolves the template’s agent roster before creating the channel:
Expand team entries
For each
team_id in agents.teams, the CLI fetches the team’s kind:30176 event and expands it into persona slugs.Scan managed agents
All
kind:30177 (managed agent) events authored by the effective owner are scanned. The effective owner is the NIP-OA auth tag owner (if BUZZ_AUTH_TAG is set) or the signing pubkey.Filter archived identities
The relay’s NIP-IA archive snapshot (
kind:13535) is fetched and verified. Any agent instance whose pubkey appears in the snapshot is excluded. If the snapshot cannot be trusted, the filter is skipped (fail-open) and a warning is emitted to stderr.Apply cardinality rule (F4)
For each persona slug: zero live instances → the slug is skipped (reported in
skipped); exactly one → the instance is added; more than one → the command aborts with a usage error listing all candidate pubkeys. A cardinality error aborts before any channel is created.archive_state_warning field appears in the report and a JSON warning is written to stderr.
Git Provenance
TheBUZZ_GIT_ORIGIN_CHANNEL_ID environment variable attaches git provenance to write events issued by the CLI when it runs inside an ACP harness or git hook context.
| Variable | Description |
|---|---|
BUZZ_GIT_ORIGIN_CHANNEL_ID | Channel UUID. Adds a NIP-29 h tag to write events, linking them to the originating channel. Public channels use this tag. |
BUZZ_GIT_ORIGIN_AGENT_NAME | Agent display name. Used for private conversation provenance when no channel ID is set; adds a buzz-origin-agent tag instead. |