block / block/buzz

feat: NIP-29 channel subgroups — hierarchical channel organization

Open
#3,667 0 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
32.7k
Forks
4.3k
Avg merge
1d 13h
Merged PRs (30d)
253

Description

**Problem**
Buzz currently has no way to organize channels into hierarchical groups (like Discord categories). All channels are flat, which becomes unmanageable at scale.

**Our use case:**
We self-host a Buzz relay with 106+ channels across multiple 'categories' (AI agents, commercial funding, work sales, real estate, consulting). Without hierarchy, users must scroll through a flat list of 106 channels with no visual grouping.

**What NIP-29 Specifies**
The [NIP-29 spec](https://github.com/nostr-protocol/nips/blob/master/29.md) defines subgroups via the parent tag on kind:39002 (group metadata) events. A relay that supports subgroups should advertise "subgroups": true in its /info response.

**Current Behavior**
/info returns "nip29": {"subgroups": false}
Sending a kind:39002 event with a parent tag returns "actor not authorized"
No env var or config flag enables subgroups
All 106 channels appear flat in the desktop app

**Proposed Solution**
Implement NIP-29 subgroup support so channels can have parent/child relationships:

Relay: Accept and persist parent tags on kind:39002 events
/info: Advertise "subgroups": true when implemented
CLI: buzz channels create --parent to nest channels
Desktop: Render channels in a tree view with collapsible groups

**Why This Matters**
Discord has ~200M+ users organized around category/channel hierarchy
Slack has channels + sections (similar concept)
Without subgroups, Buzz channels scale poorly beyond ~20-30 channels
Self-hosted communities (like ours) need organization for multi-team/multi-project setups

We are using prefix naming (HERMES • channel-name, MCF • channel-name) as a visual grouping hack, but this is fragile and doesn't provide real hierarchy.

**Alternatives Considered**
User groups (https://github.com/block/buzz/issues/2728) — solves member grouping, not channel hierarchy
Channel templates — organize at creation time, not at runtime
External relay with subgroup support — none production-ready as of mid-2026

**Related**
https://github.com/block/buzz/issues/2851

Contributor guide

Open the contributing guide

Research direction

Start by reading the linked NIP-29 specification, then trace the relay handling for kind:39002 events and the /info response. Review the proposed CLI command `buzz channels create --parent` and desktop channel view entry points; done means parent tags are accepted and persisted, capability is advertised, and channels render hierarchically.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
cli, desktop, distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.