Welcome back to Nostr Compass, your weekly guide to Nostr.

This week: Sprout rebranded to Buzz and started publishing personas, teams, and managed-agent records as Nostr relay events, with cross-device read state and per-message read markers replacing the old badge-frontier model. Napplets by sandwich.farm launches as a trust-boundary protocol for composable Nostr apps distributed over Nostr and Blossom. Conduit (a three-app marketplace monorepo on Nostr: buyer market, merchant portal, store builder, with its own in-repo NIP and spec directories) lands 17 PRs hardening the marketplace MVP, switches to its public relay by default, and adds privacy-safe analytics. BitBlik ships a P2P BLIK to Lightning exchange protocol over encrypted Nostr DMs, with a coordinator that settles atomically between fiat and Lightning hold invoices. Amethyst follows up last week’s wallets-podcasts-workouts launch with Health Connect Workouts, Road Events, collapsable replies, relay-latency health tracking with a classifier, and a macOS notarization fix. Amber implements the NIP-46 client-metadata extension proposed last week, surfacing native app icons and identity on signer request screens. Haven launches private location sharing on the Marmot encrypted-messaging protocol. CodeDeck lets you control Claude Code sessions on your laptop from your phone over encrypted Nostr relays, then collapses pairing to a single QR scan, then adds per-session model selection. Grain ships an importable Go Nostr client library that speaks the outbox model. Mostro Core, Wisp plus Dark Wisp, Citrine, FIPS, Kubo (parent-curated YouTube channels and a mandatory trust-gated kid feed), and Pollerama (a web-of-trust score, an on-device relay engine, and a “People you may know” rail) ship follow-up patches. Unreleased work covers a browser-based MLS coordinator from sandwich.farm, nostter’s UX iteration sprint, Zap Cooking’s cross-project NIP-46 fix and composer overhaul, Shopstr’s Cashu escrow lifecycle, divine.video, and Nostur. Newly tracked include the Social Agents Prototype, PRana for git-over-Nostr issue triage, and routstr-chat. On the protocol side, NIP-99 picks up an on-graph checkout-and-escrow proposal that pairs directly with Conduit, BitBlik, and Shopstr’s commerce work. Since this is the last Compass of June, the issue closes with Six Years of Nostr Junes.


Lead stories

Amethyst v1.12.1 through v1.12.6 follow up the v1.12.0 launch

Amethyst followed last week’s v1.12.0 launch with six rapid patches between Wednesday and Friday. v1.12.1 adds Health Connect Workouts and a Share-as-Image action, and makes the Tor Active flag deterministic so the bootstrap callback cannot race the gate. v1.12.2 adds Road Events and collapsable replies, v1.12.3 lands relay-latency health tracking with a classifier and a dashboard UI plus a macOS notarization fix, and v1.12.4 through v1.12.6 ship Crowdin translation passes and translator-credit automation.

Sprout rebrands to Buzz and publishes personas, teams, and managed agents as relay events

Sprout, Block’s self-hostable workspace where humans and AI agents collaborate in the same channels with every message, reaction, workflow step, review approval, and git event written as a signed Nostr event, was renamed to Buzz this week. GitHub now redirects the old block/sprout slug to block/buzz; the repository, license, and product direction are unchanged. Coverage of Sprout in past issues all refers to the same project.

The week landed substantial product work alongside the rename. Personas, teams, and managed-agent records now publish as Nostr relay events through PR #1189, letting the same agent identity appear in multiple workspaces and audit logs without duplicating state. A new desktop pane shows NIP-OA owner attestations on profiles (PR #1198), the channel-thread unread badge frontier was replaced with per-message read markers so unread counts stay accurate across devices (PR #1178), and the inbox gains author and source attribution on reminder events (PR #1176).

Temporary channels now default to a 7-day expiry (PR #1182), per-agent relay overrides honour the configured relay before falling back to the workspace default (PR #1131), and the Windows build now bundles a full Git-for-Windows toolchain for the shell tool (PR #1145).

Napplets: composable Nostr apps with a defined trust boundary

Sandwich.farm announced napplet.run this week as a protocol for composable Nostr applets, or napplets: tiny programs that do one thing, run in sandboxed environments, and are resolved over Nostr and Blossom using the same event shape as nsites. The project ships across three repositories: napplet/web, which holds the web packages and cut 51 sub-package version tags this week in a coordinated launch (@napplet/core, @napplet/sdk, @napplet/nap, @napplet/shim, @napplet/conformance); napplet/naps, the NAPs spec track with 15 merged PRs; and kehto/web, the web runtime with 41 merged PRs and a playground at kehto.github.io/web/playground. The corresponding spec PR is NIP-5D #2303, opened by dskvr (sandwich.farm).

The architectural premise is a trust boundary defined at the protocol layer. A shell brokers dangerous operations (signing, key access, relay writes), a runtime handles implementation and higher-level UX, and napplets stay portable, disposable, and harder to capture by any single host. Napplets can talk to each other across the same shell, and there is no runtime lock-in by design. The author frames napplets in conversation with NMP (by Pablof7z) and Tiles (by Soapbox), positioning them as parallel takes on the same problem, and notes that Amethyst’s v1.12.6 NIP-5A and NIP-5D support gives napplets at least one shipping client at launch. A historical thread is included: sandwich.farm’s earlier napp.run (a NIP-07 native-app prototype) and the Thorium-fork dryft browser both informed the current design before being set aside.

Conduit hardens the marketplace MVP and switches to its public relay by default

Conduit is the three-app marketplace monorepo at conduit.market (buyer Market, Merchant Portal, Store Builder) under the Conduit-BTC org, with its own in-repo nips/ and specs/ directories defining Conduit-specific Nostr commerce primitives, and the Conduit-BTC/conduit-relay Scope-2 khatru extension running underneath. Both repositories opened earlier this year; this week the project landed 17 merged PRs hardening the marketplace MVP.

The shipping PRs cluster around marketplace correctness: listing safety states (PR #110) and product pricing and shipping-zone hardening on the merchant side (PR #115). On the relay side, PR #102 corrects commerce capability detection, PR #112 ignores third-party insecure relay hints, and PR #128 sets the public Conduit relay domain as the default for fresh clients. Privacy-safe analytics land in PR #109 and PR #129, and a dompurify bump closes an OSV advisory (PR #116). The work sits inside a broader NIP-99 commerce wave this week: PR #2323 proposes an on-graph checkout layer for NIP-99 markets covering order flow, escrow, and dispute, the longstanding Gamma Markets Market Spec that extends NIP-99 for full e-commerce becomes the spec layer Conduit and others build against, and Shopstr shipped a Cashu escrow lifecycle the same week.

BitBlik launches a P2P BLIK to Lightning exchange protocol over Nostr

BitBlik opened this week as a peer-to-peer BLIK ↔ Lightning exchange protocol built on Nostr. BLIK is the Polish bank-issued instant-payment scheme; the BitBlik coordinator settles atomically between BLIK fiat (paid by takers) and Lightning hold invoices (funded by makers), with the trade lifecycle running over Nostr. The Flutter app, CLI, and coordinator share a core package, and the project ships through the GitHub monorepo at bit-blik/bitblik, the www.bitblik.app web build, and the Zapstore app app.bitblik.

The protocol uses encrypted Nostr direct messages (NIP-44) for client-coordinator RPC. Offers publish as parameterised replaceable events on kind 38383, RPC requests on kind 25195, RPC responses on kind 25196, and status updates on kind 25197. The coordinator holds a Lightning hold invoice while a taker submits a BLIK code, releases the preimage when the BLIK transfer is confirmed, and routes the invoice settlement to the maker.


Tagged releases

Amber v6.2.2 implements NIP-46 client metadata

Amber, the dominant Android NIP-46 remote signer maintained by greenart7c3, shipped v6.2.2 the same week the corresponding spec PR merged. The release surfaces native app icons and the new client-metadata fields on request screens and the app list, persists client metadata on every connect, and captures the native app icon and name at connect and accept time. The change pairs directly with NIP-46 PR #2381 by DocNR, which adds optional client metadata to the connect request so signers can display a meaningful name and icon for the requester. Amber v6.2.2 also adds support for event kind 30618 and separates default and connection relays in the Active relays screen.

The release tightens the signer’s security surface. Decrypted NIP-46 request and response bodies no longer hit logs, and encrypt and decrypt payloads are stored as ciphertext and decrypted on demand. All logcat output is gated behind BuildConfig.DEBUG, browser callers (null-package) are forced to always-ask, and copies of nsec, ncryptsec, and seed words to clipboard are flagged as sensitive and cleared after a delay. Explicit backup and data-extraction excludes are added as defense in depth. The release also fixes a crash from nested scrolling in Active relays, a LazyColumn duplicate-key crash from racy bunker request dedup, and an EOSE race in the release update check.

Haven launches private location sharing on Marmot

Haven opened this week as a private, censorship-resistant location-sharing app for Android and iOS that runs on Nostr using the Marmot protocol. The repository shipped five releases between v0.1.0 and v0.1.4 over four days, the first releases of a new project. Haven is built in Dart and Flutter and publishes through Zapstore as a developer-signed app. Marmot, the MLS-based end-to-end encrypted messaging layer for Nostr, provides the group state and ciphertext distribution; Haven extends that pattern from messaging into location sharing, with each group’s encrypted state carrying the location updates the group has consented to share.

CodeDeck remote agentic coding over Nostr

CodeDeck opened this week as a multi-session agentic-coding interface for Android and desktop, built with Tauri v2, React 19, and a Rust backend, that lets a user control Claude Code sessions running on a laptop from their phone over encrypted Nostr relays. The project shipped v2026.06.17, v2026.6.18, and v2026.6.20 in the same four-day window. The transport model uses Nostr as the encrypted control plane: a CodeDeck phone publishes commands as encrypted events the bridge running next to the laptop subscribes to, and the laptop publishes session output back over the same relays.

v2026.06.17 embeds the nostr-vpn FIPS mesh as the app’s Android VPN service so a laptop can build, install, launch, and drive dev builds of an app on a physical test phone from anywhere, with CodeDeck the only software installed on the test phone. v2026.6.18 collapses pairing and mesh-invite into a single QR scan, and v2026.6.20 adds per-session model selection so each session starts on the chosen model.

Grain v0.8.0-rc1 ships a full Nostr client engine

Grain, the Go relay maintained by 0ceanSlim, cut v0.8.0-rc1 and is now both a Nostr relay and the importable Go client library it is built on. Where v0.7.x focused on operating the relay from a browser, the v0.8 line ships client/core, a standalone outbox-model Nostr client engine in pure Go with no cgo or HTTP dependencies. The engine owns a shared relay pool, resolves each user’s relay lists, and routes every read and publish under the gossip / outbox model: you read a user’s notes from their outbox relays, and a reply you publish reaches the parent author’s inbox relays. Grain’s own web frontend is now the reference consumer of that library, so the UI is both a usable app and a worked example for downstream Go projects.

The release lands native NIP-44 encryption (v2 and v3), NIP-42 relay AUTH, NIP-65, NIP-17, NIP-51, and NIP-37 relay lists, NIP-89 client tags, and Blossom plus NIP-96 media support. Downstream Go apps that previously had to reimplement relay routing can now import the engine directly.

Mostro Core v0.13.1 follows up Protocol v2

Mostro Core shipped v0.13.1 as a follow-up to last week’s Protocol v2 rollout, introducing a PriceTooStale error variant for the protocol’s price-feed contract. On the daemon side this week, PR #752 makes invalid order IDs surface to clients as a CantDo(NotFound) error in place of a silent drop, PR #785 makes the inner protocol version follow the active transport, PR #778 lands phase 3 of the El Toque fiat-cross provider for CUP and MLC, and PR #782 renames the NIP-33 info tag protocol_versions to protocol_version for spec alignment.

Wisp v1.1.2 and the Dark Wisp variant

Wisp, barrydeen’s Kotlin and Jetpack Compose Android client, shipped v1.1.2 with self-send wallet legs kept distinct in deterministic transaction order (PR #586), lazily-created inline video players to survive media-heavy notes (PR #592), a ConcurrentModificationException fix in the event-relays set (PR #595), and an intrinsic-measurement fix for chat bubble content to avoid a SubcomposeLayout crash (PR #596). The release also lands an incremental feed filter with off-lock spam scoring. The Wisp team also published Dark Wisp v1.1.0 over Zapstore this week as a multi-currency variant adding ZEC, DASH, BCH, and LTC zap targets plus an anon mode.

Citrine v3.0.1

Citrine, greenart7c3’s Android local Nostr relay, shipped v3.0.1 with a single fix: a crash when unregistering an unregistered Pokey receiver no longer takes down the relay.

FIPS v0.4.0-rc2

FIPS, the Free Internetworking Peering System, tagged v0.4.0-rc2 as a packaging-validation release candidate on top of the v0.3.x wire format. The v0.4.0 line adds a Nym mixnet transport and opt-in mDNS LAN discovery for peer reachability, overhauls the data plane for higher single-node throughput and lower per-packet CPU, moves the operator read surface off the data-plane hot path so observability stays responsive under load, ships a reworked fipstop TUI, and hardens FMP and FSP rekey to be hitless under packet loss. This is a release candidate; the v0.4.0 stable cut is provisional for 2026-06-21.

Kubo v2026.06.12 and v2026.06.20 lock the trust-gated kid feed and add parent-curated YouTube

Kubo, JeroenOnNostr’s Nostr-native YouTube Kids alternative built on the Trust Extended Permissions Protocol (TEPP), shipped two releases this week. v2026.06.12 (calendar versioning, derived versionCode YYYYMMDD) makes the trust-gated kid feed mandatory: every post, profile, reaction, and repost the child can see or interact with now flows through TEPP, scoped to people the parent has admitted. New installs start with the trust gate enabled and the child’s circle seeded during onboarding, so the feed is safe from first launch. The release also lands managed group chat for parents, routes trust events to the family’s private relay set, and fails closed (shows nothing) rather than leaking unvetted content if trust data cannot be loaded.

v2026.06.20 adds parent-curated YouTube channels: parents can search for a channel and add it to the kid feed so children only see videos from channels the parent has approved, with an HTTP fast lane plus optimistic UI replacing the ~10-second add path. The release also removes the option to turn off Trust Extended Permissions (the project is built around mandatory trust, so the toggle is now always on), adds a dedicated Support page, fixes @mentions in group chat so tagging someone renders the clickable @name instead of a raw nostr:npub1…, adds mention autocomplete, and fixes trust publishing to gate on actual enforcement state rather than a mirror flag. Both releases are tracked through Zapstore as the developer-signed Android app com.kubo.app.

Pollerama v1.9.0 through v1.9.4 add a web-of-trust score, on-device relay engine, and a “People you may know” rail

Pollerama by abh3po, the Form*-family Nostr polls and feeds client at pollerama.fun, shipped five releases on Zapstore this week. v1.9.0 lands a new on-device relay engine: a built-in local relay now stores everything the user has seen and answers the app from local cache first, so feeds, profiles, and threads load instantly (even offline) and stay in sync with the network in the background. All relay traffic (reads and writes) flows through this engine off the main thread, and notes, profiles, reactions, and zaps already loaded come straight from local storage instead of re-fetching.

v1.9.2 fixes Home and Notes feeds (and any Following/Network view) sometimes showing nothing on launch or resume by caching the follow list independent of the sync engine, makes notes shared inside DMs load reliably by fetching the referenced note from relay hints even when the user doesn’t follow the author, and adds a Network settings panel showing relay connections, cache size, and sync state with controls to reconnect or clear the local cache. v1.9.3 fixes a crash on launch and a Home feed loading regression.

v1.9.4 introduces a web-of-trust trust score on profiles (how many of the people you follow also follow this person, surfaced as a network chip) and a “People you may know” rail (follow suggestions drawn from your web of trust, ranked by how many of your follows follow them). Network settings now show web-of-trust size and last computed time with an on-demand recompute button. Trust scores and recommendations are computed in the background by the web-of-trust worker so they don’t block the app.

Smaller tagged releases

nogringo/nostr-mail-client v0.13.1 restores NIP-55 signer-app login for Amber, Aegis, and Primal, and stops repeatedly prompting signer apps to sign contacts. Cameri/nostream v3.0.0 removes unsafe-inline from the web-app factory and implements script nonces. LaWallet NWC v1.0.0 cuts the project’s first 1.0 with shareable QR-link card activation, Remote Wallet recognition, and Lightning Address auto-provisioning. Formstr Nostr Calendar v2.0.0 through v2.0.2 add a PWA, fix offline replaceable events (PR #194), and bind signer methods so private-form submit works (PR #199). Smaller releases from Spl0itable/NYM, codeswot/ZapBook, 77elements/noornote, mattn/nostr-relay, mattn/algia, mouse484/astraea, dergigi/boris, fiatjaf/nak, Spl0itable/nosflare, and nostrord/nostrord round out the week.


Unreleased changes

Cordn Ad-hoc CVM: a browser-based MLS coordinator

Cordn Ad-hoc, sandwich.farm’s new web app, opens publicly this week as an MLS coordinator that runs in a browser tab for ad-hoc Cordn groups. The pattern is unusual: a browser tab runs the ContextVM Nostr coordinator process, publishes its coordinator pubkey, receives MCP requests over Nostr relays, and stores MLS key packages, welcomes, join requests, and group messages in browser storage, with no backend. The app prevents multiple coordinators with the same pubkey from running at once and exposes an operator debug log for raw Nostr events, decoded requests, and instance heartbeats.

SnowCait/nostter ships 19 PRs of UX iteration

nostter, SnowCait’s web Nostr client, merged 19 PRs this week without cutting a release. The replacement of nostrapp.link with app-manager.nostter.app (PR #2234) and the addition of deck.nostter.app to the frame-ancestors allowlist (PR #2233) consolidate the project’s surface under the nostter.app domain. Followees’ replaceable events get cached in IndexedDB (PR #2231), and the seen-on relay state regains reactivity with split seen-on and via options (PR #2230).

Zap Cooking fixes a cross-project NIP-46 bug and overhauls the composer

Zap Cooking, the recipe-sharing client on Nostr, merged 16 PRs this week. The change with the widest blast radius is PR #452: Primal remote signers were stamping events with the signer’s own pubkey, which broke uploads, zaps, and auth for any client routing through Primal. Zap Cooking caught and patched the path; the fix is local to the client but the bug exists across the NIP-46 space. The composer rebuilds in PR #458 with a countdown timer, a unified reply/comment UI, and Write/Preview tabs. Three SSR fixes (PR #460, PR #461, PR #462) and PR #454 stabilize the profile and recipe routes. The explore experience picks up drag-to-scroll rows, an avatar cursor with profile link, and a sticky-tab fix for communities (PR #456).

Shopstr ships a Cashu escrow lifecycle and storefront tools

Shopstr, the NIP-99 marketplace, merged a series of substantive PRs this week. PR #512 implements an end-to-end P2PK Cashu escrow lifecycle for the marketplace, which connects to the broader commerce wave moving in the same week through NIP-99 PR #2323 (the on-graph checkout layer proposal) and the Conduit launch. Read tools land in PR #543 for listing companies, getting company details, retrieving a storefront, and getting seller reputation. PR #229 lands URL-paste support for profile and shop images, and PR #359 updates marketplace stats fetch to include a timestamp.

divine.video mobile and desktop work

divine.video, rabble’s short-form looping-video client with restored Vine archives, merged PRs this week clustered around playback and editing: addressable videos get deduplicated in the feed (PR #5465), local Nostr tag filters now match exactly to avoid spurious results (PR #5463), the video editor recovers drafts with sticker layers without crashing (PR #5474), and the Messages badge counts followed-but-unreplied unread chats (PR #5473).

Nostur ships NIP-46 client-metadata support and DM refresh fixes

Nostur, the iOS client by Fabian, merged four PRs against the canonical repo following last week’s 1.29.0 release. PR #74 adds client metadata to NIP-46 bunker connect requests, the same shape DocNR proposed and Amber v6.2.2 ships this week. PR #75 and PR #76 fix DM refresh and foreground-recovery paths after an iPhone foreground transition, and PR #78 adds QR scanning to the custom NWC setup.


Newly tracked and discovered

Social Agents Prototype: Nostr-native AI-agent collaboration with a human approval gate

Social Agents Prototype is an experimental AI tool built on Nostr that explores decentralized agent-to-agent communication. Agents broadcast atomic questions across the network, only relevant agents respond, and every message sent or received passes through a human approval gate before transit. The author is Sruly Rosenblat. The project sits in the same agent-collaboration space as Buzz and NIP-100 SNIN this week, but takes a different shape: Social Agents Prototype models agents as broadcast-and-listen participants whose every message a human must approve. Multiple parallel approaches to the same problem are visible this week.

PRana: a worklist for NIP-34 issues

PRana by DocNR is a worklist of correctly-open NIP-34 issues across opt-in git-over-Nostr repos. The tool sits one layer above the git-over-Nostr stack: it consumes the NIP-34 issue events from participating repositories and presents them as a triage queue. The launch arrives the same week that NIP-34 PR #2384 proposes removing the maintainers tag to solve expiry issues, which directly affects how tools like PRana resolve issue authority across repos.

routstr-chat: local LLM access over the Routstr protocol on Nostr

routstr-chat by the Routstr team is a fully local chat interface that uses the Routstr protocol to access any LLM model over Nostr. The Routstr protocol routes inference requests through provider announcements published on Nostr (kind 38421) and settles with Cashu, as covered in Newsletter #20. The chat client is the user-facing surface on top of that protocol; the routing daemon (Routstrd) handles discovery and payment, and the chat app provides the conversation UI.


Protocol work

NIP updates

The week’s NIP activity was unusually heavy: two merges and a wave of substantive open proposals.

NIP-46 client metadata ships in Amber and Nostur

NIP-46 PR #2381, which Clave proposed last week, now has shipping implementations on both sides. Amber v6.2.2 reads the new optional optional_client_metadata field on bunker connect requests and surfaces native app icons and metadata on its request screens and app list. Nostur PR #74 adds the field on the client side. Together, the three projects close the loop on the bunker-pairing identity gap: a bunker:// pairing now carries the same name, url, and image an app could already advertise over nostrconnect://.

NIP-86 signevent and a companion relay roles event

PR #2389 by staab merged a signevent operation into NIP-86, the relay-management API, letting relay admins manage NIP-43 events on behalf of the relay. The companion open proposal PR #2390 by staab defines a relay-roles event so relays can declare role definitions and admins can assign or unassign members to those roles. The two PRs are designed to compose: NIP-86 gives admins the operations, the roles event gives them the authorization model.

NIP-99: on-graph checkout layer for marketplaces

PR #2323 by Colabonate is the strongest hub-link of the week. The proposal is framed as a design-feedback request and identifies two gaps in the NIP-99 and Gamma Market Spec stack: a checkout flow that lives on-graph (post-buy-now state, order creation, payment, delivery confirmation as public addressable Nostr events any client can read), and escrow plus dispute resolution for the subset of transactions where web-of-trust signals alone are insufficient (high-value items, first-time counterparties, anonymous marketplaces, physical delivery). The proposal closes the cross-client silos in marketplaces the way NIP-99 closed silos for listings. It lands in the same week as the Conduit launch (which ships its own nips/ and specs/ directories), Shopstr PR #512 (end-to-end Cashu escrow lifecycle), BitBlik (P2P BLIK ↔ Lightning with its own escrow primitives), and the Gamma Markets Market Spec standalone repository entering active tracking.

NIP-34: remove the maintainers tag to solve expiry issues

PR #2384 by dhalsim removes the maintainers tag from NIP-34 repository announcements, addressing issue #2382. The maintainers tag had no defined expiry semantics, which made it hard for downstream tools to know when a maintainer assignment was still authoritative. The change has wide blast radius: it affects flotilla-budabit patches (the only tracked NIP-34 repo with substantive patch activity this week), the Iris team’s eight-repo NIP-34 distribution setup, the BitBlik NIP-34 mirror, the new Amber NIP-34 mirror, and DocNR’s PRana issue-worklist tool. Cross-reviewers on the PR include DanConwayDev (ngit), vitorpamplona (Amethyst), TheAwiteb, and chebizarro.

NIP-29 groups states (work in progress)

PR #2372 by dtonon proposes a groups-states framing for NIP-29, shared as a work-in-progress for feedback. This continues the NIP-29 evolution covered in #27, now via a new framing.

NIP-79 Stories and NIP-76 Reels Feed (both by anaskmh)

Two short-form media specs from the same author landed this week. PR #2386 proposes NIP-79 Stories: ephemeral full-screen photo, video, and text slides expiring after 24 hours, with kind 19 for individual slides, kind 34237 as an addressable event holding ordered e tags to sequence multi-slide stories, and an optional privacy-preserving seen-by receipt on kind 15750. PR #2385 proposes NIP-76 for a short-form video Reels Feed. Both are parallel specs to anything existing video clients like divine.video are shipping, not implementations of it.

kind 1111 as reply to kind 1 notes

PR #2358 by zhoreeq removes the line in the NIPs corpus that previously discouraged using kind 1111 (NIP-22) comment-thread replies on kind 1 notes (issue #2250). The change is small in diff but wide in effect: any client that wants to use the threaded-comment shape from NIP-22 against ordinary kind-1 timeline notes now has explicit support to do so.


Six Years of Nostr Junes

The NIP-99 and NIP-104 deep dives that would have run this week are deferred to #29 (2026-07-01).

June 2021: protocol infancy

Nostr was about seven months old. fiatjaf’s original protocol post had gone up in November 2020 along with the fiatjaf/nostr prototype repository, and the developer circle was still small enough that a handful of people on a single IRC channel could review nearly every change. The reference implementation was a Python script. There was no dedicated nostr-protocol/nips repository yet; what would become the NIPs lived as informal proposals in the main repo and in chat. The protocol was not on most people’s radar. The Bitcoin developers who would later make it visible (Will Casarin, Pablo Fernandez, Vitor Pamplona, Mike Dilger) were either still on Twitter or not yet involved.

June 2022: the NIPs repo forms

By mid-2022 Nostr had picked up enough proposers to warrant its own specification repository: nostr-protocol/nips split off and around twenty NIPs were drafted by the time of summer 2022, covering the basic event format (NIP-01), follow lists (NIP-02), encrypted DMs (NIP-04, now deprecated), relay metadata (NIP-11), and identifiers (NIP-19). The first public web clients, including astral.ninja, anigma.io, and nostr.rocks, were live in early forms. William Casarin announced Damus for iOS and began TestFlight distribution that summer. The protocol’s user base was still tiny; the developer community was still its primary user base.

June 2023: post-Damus adoption surge

December 2022 changed Nostr’s trajectory. Twitter (under Elon Musk’s new ownership) banned Nostr links in late December 2022, which coincided with Damus’s broader public launch and triggered an adoption wave that carried into the first half of 2023. By June 2023, jack@cash.app (Jack Dorsey) was actively posting, Edward Snowden had joined, and large accounts started cross-posting from Twitter. Primal and iris.to were on visible launch trajectories. strfry by hoytech shipped as a high-performance relay implementation. Protocol-level work focused on better identity (NIP-26 delegations, deprecated later), the outbox model (NIP-65), and the NIP-57 zap economy that connected Nostr to Lightning. Wallet of Satoshi added zap support, and the zap-economy framing pulled in Bitcoin-side wallet developers who had not been on Nostr previously.

June 2024: signers, gift-wrap, and the messaging upgrade

By June 2024 the NIP-46 remote-signing space had stabilized into the bunker:// URI scheme and the nsecBunker reference implementation, and Amber by greenart7c3 had become the dominant Android signer. The messaging-layer evolution arrived through NIP-17 (private DMs over NIP-59 gift-wrap), which solved the metadata-leakage problems of NIP-04 and gradually displaced the legacy DM kind in modern clients. NIP-89 recommended-application tagging began rolling out across clients so that addressable events from one client (live streams, long-form, calendar events, polls) could be opened by another client that understood the same kind. MLS-over-Nostr discussions started during this period; the conversations would become the Marmot protocol. The first Nostr Asia conference ran in Tokyo and Taipei, marking the first regional conference outside the originally Western-developer-heavy community.

June 2025: Marmot, git-over-Nostr maturity, and the long tail of clients

By June 2025 the MLS-over-Nostr work had a formal name (the Marmot protocol, dropping the earlier provisional “NIP-EE” designation) and a flagship implementation (White Noise by erskingardner) in public alpha. NIP-34 git-over-Nostr matured to the point where the combination of ngit by DanConwayDev and GitWorkshop was a usable code-review surface for Nostr-native projects. Cashu crossed into the Nostr space through NIP-60 wallets and NIP-61 nutzaps; Wavlake and the music-on-Nostr story took hold; divine.video launched the Vine-style short-form video pattern restored from the Vine archives; and the NIP-99 marketplace work resumed under Shopstr and Plebeian Market leadership. The protocol began carrying media types and commerce types with their own dedicated event kinds.

June 2026: a launch-heavy month

June 2026 carries the launches covered in this issue’s lead stories: Buzz by Block opens the self-hosted workspace-as-relay pattern for humans and AI agents in shared rooms; Napplets by sandwich.farm formalizes a trust-boundary protocol for composable Nostr apps over Nostr and Blossom; Conduit opens a three-app marketplace monorepo with its own in-repo nips/ and specs/ directories; BitBlik ships a P2P BLIK ↔ Lightning exchange over Nostr; CodeDeck puts Claude Code sessions on encrypted Nostr relays; and Haven becomes the first Marmot consumer outside messaging. The protocol that started six years ago as a Python script and a handful of IRC participants now carries six-figure relay user counts, several layers of media and commerce, and a parallel agent-collaboration substrate that did not exist a year ago.