# NostrHub — Soapbox's Developer Hub for NIPs, Apps, and Repos

*A Nostr-native site (nostrhub.io) where developers browse and propose protocol specs (NIPs), list apps, host git repos over Nostr, and discuss all three — ranked not by a company or a vote but by a "configurable meritocracy" of experts each visitor picks themselves.*

**Verified: 2026-07-09 · Delta pass: 2026-07-10** (repo velocity, rating-scale reconfirm, contribution-program check, MCP/agent-surface addendum)

Confidence overview: High for feature inventory, NIP kind numbers, and the login flow (source-code-verified against the live GitLab repo). High for the governance model's mechanics and quotes (primary blog post, fetched directly). Medium for distribution/audience size and cross-tool integration with Shakespeare/Ditto (no hard numbers or explicit docs found — flagged in Open Questions). Low for anything about the DVM marketplace's current (2.0-era) status.

---

## What It Is

> "It's not a democracy. It's not a dictatorship. It's a meritocracy you configure yourself." [3]

NostrHub is built by Soapbox (founder Alex Gleason) and has shipped twice. **v1** launched June 10, 2025 as "the ultimate resource for Nostr developers" — NIPs, apps, repos, comments [1]. It got overrun by spam [3]. **NostrHub 2.0** — a from-scratch rewrite (the GitLab repo was recreated June 11, 2026 [4]) — was announced June 28, 2026, eleven days before this was verified [3]. Everything below describes 2.0 unless marked v1-only.

Framed against its own inspiration: *"We started by trying to escape GitHub's oligarchy over the NIPs. We ended up rebuilding the good parts of GitHub itself... on a substrate nobody owns, governed by a meritocracy you control."* [3]

## Feature Map

| Surface | What it is | Underlying Nostr mechanism | Confidence |
|---|---|---|---|
| NIPs explorer | Official `nostr-protocol/nips` + community-submitted custom NIPs, comment threads on each | Custom NIPs published as kind 30023 long-form articles [3][16]; official NIPs mirrored for browsing | High |
| Browse-by-kind | Pages like `/kind/30023/` list every NIP touching a given event kind | Derived index over NIP content | Medium (URL pattern confirmed via search index [24], not directly fetched) |
| App directory | Apps listed/discovered by event kinds they support; **4-tier ProtonDB-style quality scale** — Flawless / Incomplete / Isolated / Borked — each rating an ordinary portable Nostr event, not a NostrHub-locked score (reconfirmed 2026-07-10) | NIP-89 kind 31990 handler-info events + kind 31989 recommendations [3][13] | High |
| Git repos | Create in-browser or mirror a GitHub repo; GitHub-style issues/PRs/file browser | NIP-34: kind 30617 announce, 1617 patch, 1618/1619 PR, 1621 issue, pushed to a GRASP host [3][12][18] | High |
| Comments | Every NIP/app/repo has a decentralized comment thread | Nostr reply events | High [1] |
| Community chat | Built-in dev community + AI agent, "loosely inspired by Block's Sprout/Buzz," explicitly experimental | NIP-72 community space [1][3] | Medium |
| Plan Graph | Constellation-style map of ecosystem goals/problems/people; author calls it unsatisfying, still iterating | Custom, experimental | Medium |
| Profiles | Every dev's profile aggregates their published NIPs/apps/repos as a reputation signal | Standard Nostr profile + NostrHub-side aggregation | Medium |
| DVM marketplace (beta) | AI-powered Data Vending Machines — translation, image generation, on-demand compute | NIP-90 [1] | **Low** — was live in v1 [1]; not mentioned once in the 2.0 announcement [3] — status unconfirmed |

## Signing In With Your Nostr Credentials

Since you already hold a keypair, this is the load-bearing question. NostrHub's actual login component (`AuthDialog.tsx`, `QuickLoginDialog.tsx` — read directly from the GitLab repo [8][9]) offers four paths. Ranked by safety:

| Method | How it works | Where your key lives | Safety | Confirmed on NostrHub |
|---|---|---|---|---|
| **Browser extension (NIP-07)** — Alby, nos2x | Extension exposes `window.nostr`; site asks it to sign, never sees the key | In the extension's own storage | **Safest — use this** | Yes — default path. If an extension is detected, `QuickLoginDialog` shows one "Log in" button that calls `login.extension()` [9] |
| **Remote signer / bunker (NIP-46)** — nsec.app, Amber, etc. | Paste a `bunker://…` URI, or click "Open signer app" to hand off via `nostrconnect://` | On your phone or bunker service, never touches NostrHub's browser tab | **Safe** | Yes — under "Other ways to log in" in `AuthDialog` [8] |
| **Key file upload** | Upload a `.txt` file containing your `nsec` | Briefly loaded into NostrHub's JS runtime | **Risky** | Yes — explicit menu option [8] |
| **Paste `nsec` directly** | Type/paste `nsec1…` into a password-style field | Touches NostrHub's JS runtime the moment you paste it | **Risky — avoid for your real key** | Yes, no extra confirmation step shown at paste time [8] |

No confirmation dialog gates the nsec-paste path beyond a generic warning shown only during *new-key generation* ("This key is your only way to access your account. If you lose it, you lose the account.") [8] — that warning is about loss, not about the security cost of pasting an existing key into a website. Treat the paste/upload options as absent for your primary identity.

### First-login runbook

1. Confirm your existing `nsec` is already imported into a NIP-07 extension (Alby or nos2x), or have a bunker ready (nsec.app, Amber).
2. Visit nostrhub.io. If the extension is detected, you'll see a "Welcome back" dialog with a single **Log in** button.
3. Click it — the extension prompts you to approve `getPublicKey`/`signEvent`; your key never leaves the extension [9].
4. No extension active? Click **"Other ways to log in"** → paste your `bunker://…` URI, or click **"Open signer app"** to connect a mobile signer via `nostrconnect://` [8].
5. Do not use the nsec-paste or file-upload option for your primary key. If you ever need to smoke-test something disposable, use a burner key there instead.

## Publishing Workflows

All three content types share one shape — compose, sign, publish to a relay (or GRASP host for repos), NostrHub indexes the event:

```mermaid
sequenceDiagram
    participant You
    participant NostrHub as NostrHub UI
    participant Signer as Your Signer (extension/bunker)
    participant Relay as Relay / GRASP host
    You->>NostrHub: Compose (repo / app / NIP)
    NostrHub->>Signer: Request signature on event
    Signer-->>NostrHub: Signed event (key never exposed)
    NostrHub->>Relay: Publish event
    Relay-->>NostrHub: Event indexed
    NostrHub-->>You: Now visible + open to comments/labels
```

**(a) Publish/announce a git repo**
1. Choose "New repo" or "Mirror from GitHub" (paste a GitHub URL to import history) [3].
2. NostrHub composes a kind 30617 repository-announcement event (name, description, clone URL, relay list, maintainers) and asks your signer to sign it [12].
3. The signed event, plus the repo data, is pushed to a **GRASP server** — *"a relay that doubles as a git host"* [3][18].
4. You get a GitHub-style page: issues (kind 1621), PRs (1618/1619), patches (1617), file browser — *"except there's no GitHub underneath"* [3].
5. "Claiming"/updating = publish a new 30617 (it's replaceable, keyed by its `d` tag) or a 30618 state event for branch/tag updates [12].

**(b) List an app**
1. Publish a kind 31990 handler-information event: which event kinds your app supports (`k` tags), per-platform URLs [13].
2. No submission queue or approval gate — self-announced. NostrHub's directory just indexes 31990/31989 events by kind [3][13].
3. Community attaches ProtonDB-style ratings and comments; ratings are ordinary Nostr events, portable to any client that reads them, not locked to NostrHub [3].

**(c) Propose/discuss a NIP (long-form)**
1. Write the proposal in Markdown, publish as a kind 30023 long-form article (same event kind NIP-23 defines for blog posts), with `title`/`summary`/`d` tags [16][3].
2. It appears under "custom NIPs" with a comment thread [1][3].
3. Anyone in *your* configured expert set can attach a NIP-32 label event (kind 1985) approving it [3][17].
4. Enough of your experts' approvals move it toward "official" — **for you specifically**. There is no single global official flag; ranking is computed per viewer from their own expert list [3].

## Governance Model

Confidence: High — this section is built almost entirely from direct quotes in the 2.0 announcement [3].

```mermaid
flowchart LR
    U[You] -->|pick/keep default| E["Expert set\nfiatjaf, hodlbod, Vitor Pamplona,\npablof7z, jb55, Kieran, mattn + others"]
    E -->|publish NIP-32 label\nkind 1985| A[Approval on a NIP]
    A --> R["Ranking, computed\nper-viewer, not global"]
    E -->|combined follow-lists| C["Community cap\n(spam filter by network shape)"]
```

- Ships with a default expert list: *"fiatjaf, hodlbod, Vitor Pamplona, PABLOF7z, jb55, Kieran, mattn, and the rest."* [3] Users can add or remove experts from any profile; experts display a shield badge [3].
- Approvals are ordinary NIP-32 label events (kind 1985) attached to a NIP's kind-30023 article [3][17] — not a database flag, not a merge commit.
- History, in the founder's own words: *"That first NostrHub got covered in spam. Then ManiMe added web-of-trust scoring to it, which improved the quality, but it was still missing a way for a NIP to become 'official.'"* [3]
- Spam control: your combined experts' follow-lists cap the visible community (reported default ~1,000 people, configurable) — *"This is what kills the spam that drowned NostrHub 1.0."* [3]

**vs. github.com/nostr-protocol/nips:** the canonical NIPs repo runs on ordinary git-maintainer authority — a small set of people (fiatjaf among them) merge pull requests, and "official" means "merged." NostrHub inverts that: anyone can publish a NIP-shaped event, nothing is ever merged or rejected centrally, and "official" is a number that recomputes per visitor depending on whose approvals they've chosen to weight. It's a discovery/ranking layer *next to* the git repo, not a replacement governance body for the protocol itself — the canonical spec-acceptance process still runs on GitHub.

## Distribution & Discovery Value

Confidence: Medium — no traffic/audience figures were found for nostrhub.io in any source checked; treat the following as qualitative, not a growth metric.

NostrHub sits inside Soapbox's own "Toolbox" page alongside Shakespeare, MKStack, Ditto, and Nostrify [19] — its built-in audience is Soapbox's existing Nostr-developer readership, not a separate acquisition channel. Because every listing is an ordinary Nostr event, discovery is protocol-native in principle: any NIP-89-aware client can in theory surface the same kind 31990 handler event NostrHub indexes [13]. In practice, propagation is **not automatic** — Zapstore (Android APK store) and nostrapps.com run their own separate catalogs, and this research did not confirm they consume NostrHub's specific events [22]. A repo announced on NostrHub, by contrast, interoperates cleanly with other NIP-34 clients out of the box, because they all read the same kind 30617 event — confirmed by NostrHub's own repo being independently browsable on the competing client gitworkshop.dev [21].

## Stack Relations

| Tool | Confirmed relation to NostrHub | Confidence |
|---|---|---|
| **MKStack** | NostrHub 2.0's own `package.json` is literally named `"mkstack"`, and it imports `@nostrify/nostrify` + `@nostrify/react` — Soapbox scaffolded its own flagship dev-hub with its own AI app-builder template [10] | **High** (source-verified) |
| **Nostrify** | The underlying protocol/client framework NostrHub runs on [10][19] | High |
| **Nostrbook** | Sister tool: docs + MCP server for Nostr kinds/tags, aimed at AI agents rather than NostrHub's human-facing NIP explorer [19]; nostrbook.dev live-verified 2026-07-10 [25] | High for existence/purpose (live-checked); still no direct code link to NostrHub — see the MCP/agent addendum below |
| **Shakespeare** | Soapbox's AI website builder | **Not confirmed** — no evidence found that Shakespeare deploys to or reads from NostrHub specifically |
| **Ditto** | Soapbox's community-server product; "Ditto Relay" is marketed as *"the relay infrastructure powering Ditto"* [19], not stated to also power NostrHub | **Not confirmed** |
| **Toybox** | — | Not found in any source during this research |

## Operating Model & Self-Hosting

- **Repo:** [gitlab.com/soapbox-pub/nostrhub](https://gitlab.com/soapbox-pub/nostrhub) — public, re-created 2026-06-11 (the 2.0 rewrite), last activity 2026-07-07 [4]. Velocity re-checked 2026-07-10: **866 commits in the 29 days since the rebuild** — roughly 30/day sustained, hotter than even Armada's ~18/day (ch. 01) [26]. This is Soapbox's most actively poured foundation right now, not a parked launch.
- **License:** not declared in the GitLab project's own metadata at time of check (empty license field) [4], despite the README's "open source" framing [5]. Don't assume a specific OSS license without checking again.
- **Cost:** no pricing or paid tier found on the blog, product page, or repo — free to use.
- **Community program: none.** The full soapbox.pub blog index (60 posts, checked 2026-07-10) contains no bounty, contest, or call-for-contributions post [27]. Engagement with this ecosystem is artifact-first — you ship events, repos, or skills into it (see the addendum below); there is no formal program to apply to.
- **Self-hosting:** architecturally plausible — public Vite/React/TypeScript repo, `.env.example` present (currently just a Plausible-analytics domain toggle) [11] — but no explicit self-hosting guide was found. **Inferred, not documented.**
- **Relay operator:** not conclusively identified. NostrHub is a client over whatever relays are configured per-event (each repo's own `relays` tag; GRASP hosts for git specifically [18]) — no evidence ties it to Soapbox's own Ditto Relay.

## Comparison

| | **NostrHub** | **GitHub** | **npm** | **Product Hunt** | **gitworkshop.dev** |
|---|---|---|---|---|---|
| Primary unit | NIPs + apps + repos + community | Code repos | JS packages | Product launches | Git repos (NIP-34 only) |
| Hosting | Metadata layer over relays + GRASP git hosts | Centralized (Microsoft) | Centralized registry | Centralized | Same NIP-34/GRASP substrate as NostrHub |
| Discovery | Kind-indexed browse + per-viewer expert ranking | Stars, search, trending | Search, download counts | Daily upvote leaderboard | Repos feed, npub browsing |
| Governance | Configurable meritocracy, per-viewer [3] | Corporate ToS + maintainer merge rights | npm Inc. (GitHub-owned), single registry | Company-run | No formal layer — "first implementation of the NIP-34 draft" [20] |
| Distribution | **None** — metadata/discovery only, no artifact hosting | Releases, Packages, Actions | Package artifacts themselves | One-day traffic spike, not ongoing reference | None — same scope limit as NostrHub |

The gap worth flagging for any agent-tooling/package-distribution use case: **NostrHub has no package-registry equivalent.** Listing an app publishes *metadata* (a handler event), not a binary or a build artifact — you still need somewhere else (Shakespeare's own deploy target, a normal host, or Zapstore for Android) to actually distribute the thing.

## Integration Points

| Connects to | Mechanism | Enables |
|---|---|---|
| Any NIP-07 extension (Alby, nos2x) | `window.nostr` (NIP-07) [14] | Safe sign-in, key never leaves the extension |
| Any NIP-46 bunker (nsec.app, Amber) | `bunker://…`, `nostrconnect://…` (NIP-46) [15] | Remote signing, key never touches NostrHub's runtime |
| Any Nostr relay | WebSocket relay protocol | Where every NIP/app/repo/comment event actually lives — NostrHub is a lens over relays, not a silo |
| Any NIP-34 git client (gitworkshop.dev, `ngit` CLI, gittr) | Shared kind 30617/1617/1618/1621 events [12] | A repo announced on NostrHub is clonable/browsable elsewhere without republishing — verified: NostrHub's own repo shows up on gitworkshop.dev [21] |
| Any NIP-89-aware client | kind 31989/31990 handler events [13] | An app listed on NostrHub is discoverable by other NIP-89-respecting clients in principle — **not** the same catalog as Zapstore's Android store |
| GRASP git host (ngit-relay, gitnostr.com, etc.) | GRASP — "Git Relays Authorized via Signed-Nostr Proofs" [18] | Actual git object storage + signed-push authorization behind a NostrHub-created repo |
| Soapbox's MKStack scaffold | Shared codebase lineage — `package.json` name `"mkstack"`, `@nostrify/*` deps [10] | NostrHub is itself proof that an MKStack-built app is production-viable at Soapbox's own flagship-tool scale |

## Addendum (2026-07-10): The Existing MCP / Agent Surface — and the Empty Slot

Delta pass, one day after the chapter's main verification. Confidence: High — each surface below was checked live on 2026-07-10.

| Surface | What it is | Posture toward outside contributors |
|---|---|---|
| [nostrbook.dev](https://nostrbook.dev) | Docs site **plus MCP server** for NIP/kind/tag documentation — an agent queries protocol docs over MCP [25] | Read-only reference; ch. 01 inventories it, live-confirmed this pass |
| [soapbox-pub/nostr-skills](https://github.com/soapbox-pub/nostr-skills) (GitHub) | Claude/agent skill files for Nostr development, CC-BY-SA-4.0 [28] | **Explicitly invites community contributions** — the one explicit, standing invitation to outsiders found this pass |
| [soapbox-pub/openclaw-skills](https://github.com/soapbox-pub/openclaw-skills) (GitHub) | Companion skills repo for OpenClaw agents (OpenClaw itself is independent, not a Soapbox product — ch. 02) [29] | Same CC-BY-SA-4.0 skills family (ch. 01's license table already groups them) |

The split that matters: **everything above reads; nothing acts.** Nostrbook serves docs *to* agents; the skills repos teach agents conventions. No MCP server was found — from Soapbox or anyone else — that performs NostrHub's actual verbs *for* an agent: publish a kind 31990 handler announcement (NIP-89 app listing), push to a kind 30617 repo (NIP-34), or attach a kind 1985 quality rating (NIP-32). That niche came back empty across every surface checked this pass — Soapbox's repo inventory, the toolbox, the 60-post blog index, and both skills repos [25][26][27][28].

INFERRED, practical read: this is the highest-leverage contribution slot this manual has surfaced. The event kinds are fully documented (this chapter + ch. 06); MKStack already ships a `nostr` MCP server for *building* apps (ch. 10) but nothing for *publishing into the hub*; and the skills repos prove Soapbox welcomes agent-tooling contributions and even name the content-license norm (CC-BY-SA-4.0 — code licensing is murkier, ch. 10). An "acting" NostrHub MCP server would make every flow in Publishing Workflows above scriptable by any MCP-capable agent — and since no bounty or contest program exists to enter (Operating Model above), shipping exactly this kind of artifact *is* the engagement mechanism.

## Open Questions

- Is the DVM marketplace (beta, present in the June 2025 v1 [1]) still live in the June 2026 2.0 rewrite? Not mentioned once in the 2.0 announcement [3]; nostrhub.io is a client-rendered SPA that direct fetches can't confirm either way.
- Exact default "expert" count: one summarized source said "12"; the primary blog quote itself names seven and trails off with "and the rest" [3] — precise number unresolved.
- No OSS license file was confirmed despite repeated "open source" framing in Soapbox's own copy [4][5].
- No hard traffic or registered-developer figures found for nostrhub.io anywhere in this pass.
- Whether Shakespeare or Ditto integrate with NostrHub beyond sharing a Toolbox page — not found.
- NostrHub's own default/hardcoded relay set (beyond per-event relay tags) — not found in accessible config.
- Whether Zapstore's app-listing event kind is the same NIP-89 kind 31990 NostrHub indexes, or a separate proprietary kind — Zapstore's own NIP doc page 404'd during this research; unconfirmed.

## Sources

1. [soapbox.pub/blog/announcing-nostrhub/](https://soapbox.pub/blog/announcing-nostrhub/) — "NostrHub: NIPs, Apps, and Repos on Nostr," June 10, 2025. Accessed 2026-07-09. Supports: v1 feature set, DVM marketplace (beta), NIP-72 community space.
2. [soapbox.pub/tools/nostrhub/](https://soapbox.pub/tools/nostrhub/) — Product page. Accessed 2026-07-09. Supports: tagline, feature list, profile/reputation framing.
3. [soapbox.pub/blog/nostrhub-2](https://soapbox.pub/blog/nostrhub-2) — "NostrHub 2.0: A Meritocracy for Building Nostr Together," Alex Gleason, June 28, 2026. Accessed 2026-07-09. Supports: governance model (all verbatim quotes), Plan Graph, GRASP publishing flow, GitHub comparison, spam history.
4. [gitlab.com/soapbox-pub/nostrhub](https://gitlab.com/soapbox-pub/nostrhub) + GitLab API project metadata. Accessed 2026-07-09. Supports: repo creation date (2026-06-11), last activity (2026-07-07), empty license field.
5. [gitlab.com/soapbox-pub/nostrhub/-/raw/main/README.md](https://gitlab.com/soapbox-pub/nostrhub/-/raw/main/README.md) — Accessed 2026-07-09. Supports: "configurable meritocracy" framing, tech stack, "NostrHub doesn't tell you what's true..." quote.
6. GitLab API repository tree, `src/components/auth/` listing. Accessed 2026-07-09. Supports: existence of `AccountSwitcher.tsx`, `AuthDialog.tsx`, `LoginArea.tsx`, `QuickLoginDialog.tsx`.
7. GitLab API repository tree, root and `src/` listings. Accessed 2026-07-09. Supports: React/Vite/TypeScript project shape.
8. [AuthDialog.tsx source](https://gitlab.com/soapbox-pub/nostrhub/-/raw/main/src/components/auth/AuthDialog.tsx), via GitLab raw API. Accessed 2026-07-09. Supports: nsec paste, bunker URI, key-file upload, new-account generation flow, exact UI copy/warnings.
9. [QuickLoginDialog.tsx source](https://gitlab.com/soapbox-pub/nostrhub/-/raw/main/src/components/auth/QuickLoginDialog.tsx), via GitLab raw API. Accessed 2026-07-09. Supports: extension-first "Welcome back" login flow, `login.extension()`.
10. [package.json](https://gitlab.com/soapbox-pub/nostrhub/-/raw/main/package.json), via GitLab raw API. Accessed 2026-07-09. Supports: project named `"mkstack"`, `@nostrify/nostrify`, `@nostrify/react`, `nostr-tools`, `isomorphic-git` dependencies.
11. [.env.example](https://gitlab.com/soapbox-pub/nostrhub/-/raw/main/.env.example), via GitLab raw API. Accessed 2026-07-09. Supports: Plausible Analytics config, no default relay found in this file.
12. [NIP-34 — git stuff](https://nips.nostr.com/34). Accessed 2026-07-09. Supports: kind 30617/30618/1617/1618/1619/1621/1630-1633 definitions, tag structures, clone-URL format.
13. [NIP-89 — Recommended Application Handlers](https://raw.githubusercontent.com/nostr-protocol/nips/master/89.md). Accessed 2026-07-09. Supports: kind 31989/31990 definitions, `k`/`d`/`a` tags, discovery workflow.
14. [NIP-07 — window.nostr capability](https://raw.githubusercontent.com/nostr-protocol/nips/master/07.md). Accessed 2026-07-09. Supports: extension signing model, `getPublicKey`/`signEvent`.
15. [NIP-46 — Nostr Connect / remote signing](https://raw.githubusercontent.com/nostr-protocol/nips/master/46.md). Accessed 2026-07-09. Supports: bunker/client roles, `bunker://`/`nostrconnect://` URI formats, kind 24133.
16. [NIP-23 — Long-form Content](https://nips.nostr.com/23) and [nostrhub.io/kind/30023/ search index result]. Accessed 2026-07-09. Supports: kind 30023 definition; NostrHub's use of it for custom NIPs.
17. [NIP-32 — Labeling](https://nips.nostr.com/32) (via search index). Accessed 2026-07-09. Supports: kind 1985, `l`/`L` tags, distributed-moderation use case.
18. [ngit.dev/grasp/](https://ngit.dev/grasp/) — "Grasp: Git Repositories Authorized via Signed-Nostr Proofs." Accessed 2026-07-09. Supports: GRASP definition, two-service model (Smart HTTP Git + Nostr relay), implementations (ngit-relay, gitnostr.com).
19. [soapbox.pub/toolbox](https://soapbox.pub/toolbox). Accessed 2026-07-09. Supports: full Soapbox tool list, one-line descriptions, Ditto Relay/NostrHub/Nostrbook positioning.
20. [gitworkshop.dev](https://gitworkshop.dev/) and [gitworkshop.dev/about](https://gitworkshop.dev/about) (via search index). Accessed 2026-07-09. Supports: gitworkshop.dev's own description as "Decentralized Git," first NIP-34 draft implementation, pairing with `ngit`.
21. [gitworkshop.dev/alex@gleasonator.dev/nostrhub](https://gitworkshop.dev/alex@gleasonator.dev/nostrhub). Accessed 2026-07-09. Supports: NostrHub's own repo is independently browsable via a competing NIP-34 client, confirming cross-client interoperability.
22. [zapstore.dev](https://zapstore.dev/) and [github.com/zapstore/zapstore](https://github.com/zapstore/zapstore) (via search index). Accessed 2026-07-09. Supports: Zapstore's separate Android-APK-focused catalog model. Note: [zapstore.dev/docs/nips/app/](https://zapstore.dev/docs/nips/app/) returned HTTP 404 during this research — exact event-kind overlap with NIP-89 unconfirmed.
23. [nostrhub.io](https://nostrhub.io/) — direct fetch. Accessed 2026-07-09. Supports: tagline only ("Build Nostr Together") — site is a client-rendered SPA, body content not retrievable via direct fetch.
24. Search-engine index results for `site:nostrhub.io` (Google/Bing snippets covering `/apps/`, `/01/`, `/kind/30023/`, `/EE`). Accessed 2026-07-09. Supports: existence and URL patterns of the browse-by-kind and per-NIP page structure, used because the live SPA could not be fetched directly.
25. [nostrbook.dev](https://nostrbook.dev) — direct fetch. Accessed 2026-07-10. Supports: Nostrbook live as a docs site + MCP server for NIP/kind/tag documentation; a read surface only — no publish/act capability found.
26. GitLab API project metadata re-check for `soapbox-pub/nostrhub`. Accessed 2026-07-10. Supports: 866 commits in the 29 days since the 2026-06-11 recreation.
27. [soapbox.pub/blog](https://soapbox.pub/blog) — full post index, 60 posts. Accessed 2026-07-10. Supports: no bounty, contest, or call-for-contributions program anywhere in the blog's history; no announcement of a NostrHub-acting MCP server.
28. [github.com/soapbox-pub/nostr-skills](https://github.com/soapbox-pub/nostr-skills) — Accessed 2026-07-10. Supports: Claude/agent skills for Nostr development, CC-BY-SA-4.0, README explicitly inviting community contributions.
29. [github.com/soapbox-pub/openclaw-skills](https://github.com/soapbox-pub/openclaw-skills) — Accessed 2026-07-10. Supports: companion OpenClaw agent-skills repo in the same CC-BY-SA-4.0 skills family.
