Skip to content

Add NIP: Collaborative Directories (kind:30890 / kind:30891)#2354

Draft
Giszmo wants to merge 1 commit into
nostr-protocol:masterfrom
Giszmo:add-collaborative-directories-nip
Draft

Add NIP: Collaborative Directories (kind:30890 / kind:30891)#2354
Giszmo wants to merge 1 commit into
nostr-protocol:masterfrom
Giszmo:add-collaborative-directories-nip

Conversation

@Giszmo
Copy link
Copy Markdown
Member

@Giszmo Giszmo commented May 20, 2026

Read the nip here or read and try it out in action.

Multi-author addressable directories whose canonical version is resolved per reader through a Web of Trust. Two new addressable kinds and one indexed tag:

  • kind:30891 — namespace definition: expert list (p tags) and two depth caps experts:M / follows:N (follows <= experts)
  • kind:30890 — directory entry: namespaced d tag /, optional per-entry tightening
  • "n" — single-letter indexed tag carrying the namespace slug,
    enabling {"kinds":[30890],"#n":["..."]} filters

Resolution: per-graph active depth via the shallowest level with a tightening rule; an author is a contributor if reachable within either graph's active depth; newest created_at among contributors wins (tiebreak lowest id). Non-contributors' entries are proposals. The owner is a peer in editing — their power is rule-setting.

The experts and follows tags share one shape on both kinds: a depth from a chosen root. On the namespace definition the root is the owner; on an entry the root is the author. The reader picks the owner; an author cannot pick themselves into hop 0, so their offset is added to their own hop.

Fallback when the active kind:30891 is unreachable or deleted via NIP-09: assume experts:0/follows:0 under the owner pubkey embedded in the naddr. Tombstoning via a ["deleted", ""] tag on a kind:30890 with the same (d, n) and empty content.

Multi-author addressable directories whose canonical version is resolved
per reader through a Web of Trust. Two new addressable kinds and one
indexed tag:

  - kind:30891 — namespace definition: expert list (p tags) and two
                 depth caps experts:M / follows:N (follows <= experts)
  - kind:30890 — directory entry: namespaced d tag <n>/<subject>,
                 optional per-entry tightening
  - "n"        — single-letter indexed tag carrying the namespace slug,
                 enabling {"kinds":[30890],"#n":["..."]} filters

Resolution: per-graph active depth via the shallowest level with a
tightening rule; an author is a contributor if reachable within either
graph's active depth; newest created_at among contributors wins
(tiebreak lowest id). Non-contributors' entries are proposals. The
owner is a peer in editing — their power is rule-setting.

The experts and follows tags share one shape on both kinds: a depth
from a chosen root. On the namespace definition the root is the owner;
on an entry the root is the author. The reader picks the owner; an
author cannot pick themselves into hop 0, so their offset is added to
their own hop.

Fallback when the active kind:30891 is unreachable or deleted via
NIP-09: assume experts:0/follows:0 under the owner pubkey embedded in
the naddr. Tombstoning via a ["deleted", "<optional reason>"] tag on a
kind:30890 with the same (d, n) and empty content.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant