Nostr Compass Podcast

Nostr Compass Podcast

By Nostr CompassTechnology
Download on the App Store

Nostr Compass Podcast episodes

  • Nostr Compass Podcast #42

    Episode42 covers White Noise group polls, offline app sharing with Myco, Marmot history recovery, Nostr releases and ongoing protocol work. Synthetic narration is followed by Max’s recorded contributions.

    TL;DR: Synthetic narration and Max’s recordings cover White Noise polls, Myco app sharing, Marmot history recovery, Nostr releases and ongoing protocol work.

    Contributor: nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt

    Newsletter42

    0:00 Intro

    Welcome to Nostr Compass, the weekly podcast following what's being built on Nostr, the open network for sharing messages through apps and relays. Thanks for joining us. If you're new here, we'll explain the projects as we go.

    This is episode forty-two, based on our September thirtieth, twenty twenty-six newsletter. This week, encrypted chats get polls, phones share apps without an internet connection, and developers tackle gaps in message history. We'll explain what changed and what you can try, then look back at six years of Nostr Septembers.

    The newsletter narration is read by a synthetic voice. You'll find the sources in the show notes, and chapter markers let you jump to a topic that interests you.

    First, a quick update on Nostr Compass itself.

    The Nostr Compass Android app puts newsletters, podcast episodes, topic guides and contributor voice notes in one place. Its latest signed release notes describe full signature-verified newsletters, plus saved issues and one hundred ten topic guides you can read offline. Local search covers stories and any transcripts that exist. Contributors can record voice notes and listen back to a saved take before sending. They can also reply with recordings. Signing goes through Amber, so the app never stores their private key. Public recordings are published on Nostr and Blossom.

    The latest update keeps queued recordings and upload checkpoints when Android stops background work. It shows when Amber approval is needed and opens the right recording from a notification. Episodes and voice notes each keep their own scroll position, and playback resumes where you left off. One limit: notifications for new recordings depend on Android's scheduling and on the permissions you grant.

    2:40 Holoboard adds Nostr promotion commands and an Android app

    Holoboard is a board for finding Nostr notes through a ranking that can be boosted with Lightning payments. The original posts remain Nostr events; Holoboard serves its ranking and appearance data through its own HTTP API. That distinction matters if a reader expects the board's ordering to be a relay-native feed.

    Its September 23 changelog records direct-message promotion commands over both encrypted NIP-17 and legacy NIP-04 paths. NIP-17 wraps private messages to hide their content and sender from relays, while NIP-04 is the older direct-message encryption format. A user can request a promotion invoice in the same conversation, receive one labeled quote for the first paid promotion, and opt into expiry reminders by replying `YES`. The promotion sender retries failed relays, while the September 24 update adds an Android app and simplifies the invoice flow.

    The project's relay integration notes describe ordinary notes and comments on Nostr, encrypted inbox routing, and quote and delete handling. Its signed Zapstore Android listing supports the existence of an app release, but the listing key has not been established as Holoboard's public board identity. This is the first Compass coverage of the project.

    4:25 fips-pub-domains tests signed public names for a mesh

    fips-pub-domains is a new resolver and naming experiment that binds public domain names to nodes on FIPS, an encrypted mesh that uses Nostr messages for peer discovery. Its first release combines those claims with DNS TXT records, optional DNSSEC validation, locally pinned bindings, a Linux resolver daemon, and Android integration with fips2go, the FIPS client for phones. A signed claim by itself does not establish ownership of a public domain; clients need DNS or DNSSEC evidence, a configured witness, or a previously trusted pin.

    The 0.2.0 release adds DNSSEC proofs to claims so a client with only a mesh relay can validate an unpinned name, and lets multiple validated servers serve one domain. It also repairs stale pins and DNS failover. Version 0.2.1 fixes a systemd unit that otherwise failed to start and runs the server without root; existing installs must replace that unit to receive the fix.

    On Android, a merged fips2go change follows verified public-name bindings in its DNS proxy. A second merged change carries connections to configured Nostr relays over the mesh, so the resolver can retrieve and verify a previously unseen domain claim while the phone has no internet connection. The device results are reported by the maintainers in those pull requests; they do not establish wider deployment.

    The project's two-node and mesh-only relay tests are maintainer-reported evidence for an early implementation, not a production deployment. Its NIP-DB proposal is still open, and the event kinds in its draft remain placeholders pending registration. Last week's fips2go story covered mesh bootstrap and peer discovery; this week's work tackles public names and verification.

    6:26 Marmot MDK 0.11.0 makes account history gaps visible

    Marmot MDK, the Rust runtime and generated bindings for MLS-encrypted Nostr group messaging, follows last week's durable-send release with version 0.11.0. Account recovery now declares a history gap complete only after every required relay finishes an untruncated event comparison; an unproven gap produces a durable notice that a host can show to the user. A full delivery queue spills to the account database instead of dropping events, and live delivery advances the transport cursor so a restart does not fetch the same history again.

    The full release notes also describe optional encrypted group polls, stateless event verification in the bindings, and Android libraries aligned for 16 KB memory pages. Applications must move the generated bindings and native libraries from this source cohort together; account databases migrate through schema 98 on first open, and downgrading the database is unsupported. An existing intermittent catch-up defect can still leave messages more than five group epochs behind undecryptable without raising a notice, so this release does not claim complete history recovery in every case.

    8:12 Myco 0.8.0–0.8.1 gives nearby apps their own Nostr store

    Myco is an Android app for exchanging small Nostr programs, called napplets, with nearby phones, including when they are offline. Version 0.8.0 gives each installation a guest Nostr identity and permits login with an existing key or Amber, an Android signer that approves signatures without sharing the account key. It also replaces the Discover tab with an app store that is itself a napplet. That store reads signed app listings and recommendations, while a downloaded update can pass between phones in a user's Circle without an internet connection.

    Version 0.8.1 makes those listings easier to find by querying the relays an author advertises; earlier builds relied on public defaults. It shows cached profiles and apps immediately, saves slower relay answers for later visits, backs off from failing relays, and keeps subscriptions live while a view is open. Both updates preserve the existing phone-to-phone wire format. Updated phones can download and share napplet updates; older phones forward their announcements alone.

    9:41 White Noise Android adds group polls and account-specific disappearing-message defaults

    White Noise Android nostr:npub1whtn0s68y3cs98zysa4nxrfzss5g5snhndv35tk5m2sudsr7ltms48r3ec is a Nostr messenger for private Marmot-encrypted conversations. Following the delivery and sharing improvements covered last week, the September 30 release adds group polls with selectable answers, result bars, and deadlines through the Marmot Development Kit. It also adds device-local disappearing-message defaults for each account: new direct conversations and groups inherit the chosen duration, while existing conversations and their individual settings keep their current policy. Wave hi sends a greeting that mentions a newly added member without disturbing the current draft.

    The release lets users choose the focal crop for profile and group images and delete a chat folder without deleting its conversations. Its history notices show when recovery leaves account or group history potentially incomplete, with separate dismissal controls. Conversation paging avoids rebuilding the displayed timeline on a jump to recent messages, and pending-message edits retain their text while the original send obtains its confirmed event ID. That edit handoff covers conversation changes within the running app; it does not establish persistence across process death.

    Dictation now chooses Paste or Send for each recording, with automatic finishing placing the transcript in the draft. Offline-provider setup explains on-device processing, keeps its consent separate from other speech providers, and restores interrupted media after capture ends. General-file handling accepts bounded, nonempty documents with accurate filenames, MIME metadata, and failure messages; explicit attachment downloads use Android's user-initiated transfer jobs with a foreground fallback. Paste controls now use Android’s system action so GrapheneOS Secure Paste can grant clipboard access. Android also renders iOS GIPHY shares as animated media while respecting download policy.

    Notification fixes refresh sender nicknames and clean up alerts when a conversation opens. The notification recovery changes preserve pending push work through unavailable foreground ownership and use bounded retries. Amber signing (maintainer: nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5) coordinates same-account approval bursts to prevent rate limits from cancelling sends. The new audit configuration asks for a fresh log-sharing choice before uploading to the new receiver. The source also adopts AGPL-3.0-only licensing.

    12:57 nostream 3.1.0 adjusts relay proof of work to load

    nostream is a TypeScript Nostr relay backed by PostgreSQL. Version 3.1.0 can raise or lower the event proof-of-work threshold between operator-set limits as its observed event rate changes. The setting is off by default, uses each worker's measured rate, and leaves the existing static public-key threshold independent, so operators must opt in before senders see a different admission requirement.

    The same release adds an admin dashboard for relay, WebSocket, and event metrics, network-health probe results, and configurable operator notifications. Its admin API is disabled by default. These controls help operators distinguish relay pressure and reachability problems while keeping the new policy under explicit configuration.

    After its load-sensitive proof-of-work release, nostream merged actions for trusted-moderator reports. NIP-56 defines content-report events; the new `nip56.hideActionableReports` option excludes reported events from REQ and COUNT results when reporting is also enabled. An event report hides that event, while a public-key report hides every event by that author. The new option defaults to false, so enabling report collection alone preserves the existing query results.

    14:45 Nostr double ratchet 0.0.171–0.0.172 closes a removed-member gap

    Nostr double ratchet is a TypeScript library for encrypted private chats carried by Nostr. Version 0.0.171 rotates a group's sender key after membership changes so someone removed with the old keys cannot decrypt later messages from an updated sender, even after that sender restarts. It also refuses sends or key rotation by a removed local owner and aborts a send if membership changes during key distribution.

    Version 0.0.172 carries the existing account-signed device approval in an optional encrypted invite response. A recipient using the update can verify the sender's device before a separate registration event arrives, while linked devices retain their approval across restarts. The invite field is optional and leaves the original handshake and ratchet message format intact.

    Versions 0.0.173–0.0.175 extend that removal work with durable group-key handoffs and queued delivery state saved before publication, so interrupted handoffs recover after restart. Publication callbacks carry local group context that lets applications cancel durable retries after removal while keeping membership controls deliverable; queued sends preserve their original inner event IDs. Duplicate invitation responses preserve established sessions, subscriptions remain stable as contacts change, and app-key snapshots retain device names without sharing mutable copies. The signed wire format stays unchanged; the 0.0.173 notes also report Rust 0.0.168 with receive-session fallback and local group-echo filtering.

    16:52 Scramble 0.7.4–0.7.5 fetches the messages a new group member should see

    Scramble is a cross-platform Marmot group messenger with a native Android interface. In version 0.7.5, each group gets its own relay history cutoff: previously the most active conversation's cutoff was applied to every group, so a newly joined one could remain empty because its post-join messages were never requested. The reconnect path receives the same fix, and a group with no local activity now requests all available messages; MLS still prevents a new member from decrypting messages sent before joining.

    The preceding 0.7.4 release fixes repeated invite acceptance caused by recycled Android rows accumulating click handlers, and makes a custom Blossom media server setting persist in the native app. Version 0.7.5 ships only the native Android APK, so users tracking the older Avalonia filename must change their update target. Accounts and history move between those two Android builds, but groups created under the older 0.6.x MLS engine do not migrate to 0.7.x.

    Scramble 0.7.6 adds a manual Fetch missing messages control that queries every routing address a group has used, removes the time restriction, repairs a stale stored address, and reports what it recovered. It still cannot decrypt epochs from before the user joined. Native administrators can promote or demote other members, with current roster state and visible failure outcomes; two-person conversations still hide these controls. The group-info Copy action now responds, though invited conversations can still copy an internal chat identifier instead of the protocol group ID. Version 0.7.7 also drains held messages when another member’s commit arrives; 0.7.8 adds a regression test for that passive-member path.

    18:58 Amber 6.6.6 repairs remote-signer connection secrets

    Amber is an Android signer that approves Nostr event signatures without handing an application's account key to it. After last week's backup-encryption change, version 6.6.6 fixes its `nostrconnect` parser: a connection parameter containing `=`, such as a padded secret, had been altered before Amber answered. That made NDK-based clients fail their secret check even when the signer connection otherwise looked valid.

    The release also sends feedback issues to the relays advertised by Amber's repository announcement, with a fallback to the prior relay if the announcement cannot be fetched. Longer Tor timeouts give slow relays more time to acknowledge that publication. The remaining changes improve icon and text visibility in Amber's themes.

    20:25 FIPS 0.5.2 stops a Nostr discovery privacy leak

    FIPS is an encrypted mesh that uses Nostr identities and relay messages to discover peers. Its 0.5.2 maintenance release stops signing NAT-traversal deletion requests with the node's routing key, which had linked that key to traversal traffic on relays. It also updates the TLS library used for relay connections to a version that fixes a published security advisory and repairs several lost-message cases in link and session rekeying.

    The release notes call for operators on every platform to upgrade, while detailing separate Windows key-file permission, gateway, and package-service fixes. Ephemeral nodes no longer write a private `fips.key` that a later restart might overwrite; operators who intended a stable identity should set persistent mode before upgrading. The release does not change the mesh wire format, so mixed-version nodes can be upgraded individually.

    21:47 napplet soyLI 0.23.1–0.23.4 repairs backend publishing and signer approval

    napplet.soy's soyLI (maintainer: nostr:npub1uac67zc9er54ln0kl6e4qp2y6ta3enfcg7ywnayshvlw9r5w6ehsqq99rx) is the creator and publishing toolkit for small sandboxed Nostr programs. After last week's shared-creations release, version 0.23.1 makes backend manifests, handlers, and schemas part of creator checks and multiplayer previews. It keeps portable provider configuration in the project manifest while leaving private identity bindings and development databases outside the published source snapshot.

    Version 0.23.2 lets projects that once committed a generated public backend context publish again after strict validation, while still rejecting private bindings, journals, databases, and credentials from reachable history. The later 0.23.4 release fixes a persistent-backend session failure that could reject a valid extension or remote-signer approval when a person took several seconds to sign. Public hosts need the shared-host fix as well; updating a creator's CLI alone has not repaired a deployed host.

    23:28 Dart NDK 0.10.0 scopes Blossom auth and remote signing

    Dart NDK (maintainer: nostr:npub1xpuz4qerklyck9evtg40wgrthq5rce2mumwuuygnxcg6q02lz9ms275ams) is a Flutter and Dart library for Nostr relay access, signing, wallet requests, and media operations. Following last week's prerelease, 0.10.0-dev.7 changes Blossom media requests to stay anonymous until a server refuses them, then authorizes through an explicit policy that says which identity an operation may reveal. It carries that authorization through the request path and replaces the older `useAuth` and `customSigner` options, a breaking integration change for apps using the prerelease API.

    Dev.9 stops holding a remote-signer response until the slowest relay acknowledges it. Dev.8 reduces background relay polling and cache work; its other fixes concern wallet seed persistence and settlement deadlines. The stable 0.10.0 release now packages this development series together with the connection-metadata and private subscription-ID changes below. The comparison with dev.9 includes those merged changes. Applications upgrading should review both the media-auth API change and the remote-signer response path.

    The stable release includes NIP-46 connection metadata and requested permissions, replacing separate connection fields with a `Nip46ClientMetadata` value. This is a source API change that lets login widgets pass application identity and requested permissions to the bunker. Another request-ID change uses 32 random hexadecimal characters in production, keeping use-case names and pagination phases out of relay-visible subscription IDs. Explicit IDs remain bounded to NIP-01's 64-character limit, while debug mode retains a short diagnostic name.

    25:33 Mostro Core 0.16.0 removes the old gift-wrap transport

    Mostro Core nostr:npub1m0str0d7z2ww8rdh20t2n9lx520xjwhaq24p68umqp06wwrwtsnqen40un supplies the message protocol used by Mostro's Nostr-based peer-to-peer trading clients and coordinator. Version 0.16.0 removes its protocol-v1 gift-wrap transport and its old wrap and unwrap functions, leaving the newer transport as the library path. That is a breaking change for applications still constructing or reading v1 messages through this library.

    The library release precedes the coordinator's now-published 0.19.0 release. Operators serving older clients need to update both sides of the transport migration. The preceding 0.15.1 tag adds a cooperative-cancellation dispute state, but the transport removal is the compatibility milestone.

    26:48 Cambium 0.6.0–0.7.1 enrolls an unlock phone through relay messages

    Cambium nostr:npub1mgvlrnf5hm9yf0n5mf9nqmvarhvxkc6remu5ec3vf8r0txqkuk7su0e7q2 is an Android signing companion for a Heartwood hardware key that can also unlock the board after a restart. Version 0.6.0 lets a phone enroll for unlock through the board's Nostr relays without a USB cable; the user compares five request words on the phone, the board, and Sapwood, the board's enrollment interface, before pressing the board's button. Newly announced relays receive a randomized connection delay so the phone's first contact does not reveal exactly when it saw the board's update.

    Version 0.7.0 reverses the invitation flow: a phone scans Sapwood's short-lived QR code and returns one encrypted, one-time event from a throwaway key. Retry republishes that same event if no relay accepts it, while the old code-display path remains for older Sapwood builds. The 0.7.1 patch keeps the final check code visible and improves F-Droid build reproducibility; the QR flow still requires the specified recent Sapwood and Heartwood versions.

    28:29 Bray 3.5.0–3.5.2 limits agent-initiated Nostr wallet spending

    Bray is a Nostr tool server that lets an AI assistant request relay, identity, and wallet actions through a scoped interface. Its 3.5.0 release adds a cap on each Nostr Wallet Connect payment and a persisted daily budget, with human confirmation where the assistant host supports it. Serving separate spending connections now requires an explicit wallet-service setting, rechecks each grant before use, and confines invoice lookups to hashes within that grant.

    The release also tells users to keep a wallet connection URI in a private file instead of pasting it into chat, and refuses to retry an uncertain payment as though failure were proven. Version 3.5.2 matches marketplace payment rails locally after relays rejected the requested payment-method filter. These checks limit what a delegated assistant can spend and prevent a relay-filter assumption from hiding matching offers.

    29:50 Mafrend 1.3.0-alpha moves private map groups to current Marmot

    Mafrend nostr:npub19jvs7ry26263w3l6h4hst46t0fsukcmyhhmmshh8rsavfqd95xnsa5guks is a map-based Nostr social app that lets people explore places and chat around destinations. Its 1.3.0-alpha release upgrades private groups to a newer Marmot encrypted-group specification and adds profile views from chats and reviews. The group format is incompatible with older alpha chats; users should treat this as an alpha migration with a compatibility break.

    The same release adds screenshot sharing and chat changes alongside map and marker improvements. Profile features are still marked in progress by the project. The meaningful Nostr change is the private-group interoperability shift; users with older test groups should check the compatibility note before upgrading.

    31:07 Sonar alpha.15–alpha.15.1 repairs encrypted-group publishing

    Sonar nostr:npub1wg2m9ku823y5l5699dlj6294dc3cvwu4g34ldrtelxq20t27clxsd7dzaw is a private messenger that can carry conversations over Bluetooth mesh and Nostr. Alpha.15 adds emoji reactions to messages and private local-time sharing inside encrypted chats, with a setting to revoke that sharing. Its wallet switches to Cashu, but that payment change is separate from the messaging update.

    Alpha.15.1 repairs a launch failure that could leave the conversation index empty after an older branch build wrote a foreign schema version. Without the index, the app re-encrypted and republished local-time shares to every group on each reopen, sometimes sending hundreds of events before relay rate limits intervened. The hotfix rebuilds that local state and stops the repeated group publishes.

    32:31 Elisym's commerce packages introduce private Nostr orders

    Elisym is a Nostr-based agent toolkit now building a signed-event commerce flow. Its merged `commerce` package defines store products, owner authorization, privately wrapped orders and receipts, and offer verification for the checkout and merchant components. A later commerce 0.2.0 tag derives an order's payment reference from that order, tying the payment lookup to the signed purchase flow.

    The package series also introduces separate payment-core and browser-checkout work, but its release tags do not establish that a complete merchant checkout is deployed. The store-authorization event kind is explicitly provisional in the project's primary source. The eleven SDK, MCP, CLI, and payment-core tags mark one developing commerce feature.

    Elisym's new package releases package the self-hosted merchant node, while MCP 0.31.0 adds `buy_product` and `get_order` for commerce products. Subsequent commerce and merchant-node releases add Tempo payment support inside that same checkout. These packages advance the existing signed-product and private-order integration; the tag list does not make the provisional event schema a standard or establish a complete hosted-service launch.

    34:02 Flotilla 1.11.2 unsticks signers and incomplete relay feeds

    Flotilla (maintainer: nostr:npub1jlrs53pkdfjnts29kveljul2sm0actt6n8dxrrzqcersttvcuv3qdjynqn) is a Nostr client for conversations, rooms, and shared spaces. Version 1.11.2 gives a user a way out when startup stalls waiting for a remote signer, and signs out a session whose local application data has been cleared. A room can now display its messages before its wider space finishes synchronizing, while feeds no longer omit posts simply because one relay answered later than another.

    The same release also publishes an F-Droid build signed with the app's existing key and keeps GitHub releases current for Obtainium. That distribution work matters to users changing update channels, but the relay and signer fixes are the immediate reason to upgrade.

    35:05 Ditto 2.42.3 shows relay delivery and tightens account boundaries

    Ditto nostr:npub10qdp2fc9ta6vraczxrcs8prqnv69fru2k6s2dj48gqjcylulmtjsg9arpj is a Nostr social client that lets users choose and authenticate to their relays. In version 2.42.3, a post's Event Details shows which user and author relays hold it; Broadcast targets only the missing ones. The release also points out unresponsive read relays and gives them a retry control, making a missing post easier to diagnose without sending it everywhere again.

    The release notes say that switching accounts no longer sends posts to the previous account's relays, muted users cannot trigger generic phone alerts, and links or images in posts cannot reach devices on the reader's local network. Slow-relay posts stop disappearing from Follows and Loved feeds, while live stream chat and webxdc games update without repeatedly downloading the whole view. Torrent and audio browsing are also new, but the relay routing and account isolation are the changes with the widest Nostr impact.

    36:36 Iris Chat 2026.9.24.4 brings calls into encrypted conversations

    Iris Chat is an end-to-end encrypted Nostr messenger using the double-ratchet family of chat protocols. Its September 24 release adds voice and video calls with compatible contacts, including over an existing local connection when the internet is unavailable. A user can lower video quality, answer video as voice, and handle an incoming call through Android's call interface; answering or declining also stops the other linked devices from ringing.

    The release also lets a person sign in through a separate signing app and see which linked devices are connected. Later September 24 patches keep delayed messages' original timestamps and improve nearby delivery after a lost reconnection packet. These are early cross-device and call behaviors, so the update is most useful to contacts who can run compatible Iris builds.

    The later developer-signed September 30 update retains a removed member's local group history while disabling sends, improves delivery between linked devices and large groups, and repairs read indicators and unread counts. Calls gain audio-device selection and restored outgoing tones; stale microphone status no longer silences incoming audio. Timed muting, image copying, dropped-file attachments, notification routing, and push registration receive fixes, while sign-out clears local caches and device removal ends its session. A second update improves access to files cached by other Iris apps on the same device and keeps local file sharing available with Nearby disabled.

    38:29 LibreNostr 0.6.0–0.7.0 routes relays through built-in Tor

    LibreNostr is an Android Nostr client with configurable relay and privacy settings. Version 0.6.0 bundles an Arti-based Tor engine on ARM64 and applies the chosen Direct, Tor-for-everything, or `.onion`-only mode to relay WebSockets, HTTP requests, media, uploads, and web pages. Strict Tor mode fails closed when Tor is unavailable and never silently sends a request directly; changing modes reconnects relay sockets through the new route.

    Version 0.6.2 adds an on-device web-of-trust filter built from public follow lists and chooses supplemental relays by the additional followed people they reach. Version 0.7.0 then shows notes and notifications before profile and count lookups finish, caps slow relay queries, and stops decrypting an entire DM inbox on every conversation open. Together these releases change both where the client may connect and how long a slow relay can hold up its interface.

    Its developer-signed first stable release, 1.0.0, adds saved, per-profile tablet decks with movable columns for feeds, hashtags, profiles, long-form reading, notifications, and messages. Landscape tablets get this layout; phones keep their existing interface. Search gains OR, exclusions, media filters, and working date ranges, returns cached profiles before relay refinements, and moves past refused full-text requests immediately. Hashtags sort chronologically, paging waits for sufficient relay answers, and unused feeds release their subscriptions.

    The same release preserves existing public and encrypted mute-list and bookmark entries during edits instead of replacing them with one change. It isolates bookmarks and notifications between accounts and restricts auxiliary author relays to public reads, keeping private requests and relay authentication off them. It also prevents stale profile answers from replacing newer metadata, repairs notification paging and badges, retains older feed items when new ones arrive, and fixes reply undo countdowns, duplicate publication, media URLs with query strings, and unread counts after marking a chat read. Version 1.0.1 fixes a tablet-deck startup crash in the new layout.

    41:01 Newlay 0.3.45 streams large relay queries instead of closing them

    Newlay is an Android-hosted Nostr relay and related local services. Its signed 0.3.45 release announcement says that large query results now stream with backpressure instead of closing the client's connection. The embedded Git host prunes superseded packs after pushes, while its Cordn encrypted-messaging coordinator accepts oversized client requests and sends an abort frame when a probe times out.

    The release also gives the Android operator a live status card for events, storage, address, and administration, and aligns the native cryptography library for devices with 16 KB memory pages. The relay and coordinator changes span several releases since the prior store version, 0.3.39; 0.3.45 is their packaged checkpoint.

    41:52 ngit-grasp 3.0.5 keeps Git pushes and relay sync moving

    ngit-grasp nostr:npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr is a self-hosted Nostr relay and Git server for signed repository collaboration. Its signed 3.0.5 release announcement moves slow history reconciliation out of the shared live-sync actor, allowing relay subscriptions to start while earlier events are checked. It backs off separately for rate limits, incomplete history queries, mailbox reads, and identity lookups, so a sick relay no longer monopolizes retry capacity.

    The same release reconciles against the local event inventory to avoid refetching stored history and closes incomplete subscriptions before treating their coverage as verified. On the Git side, it accepts pushes that background state promotion already applied, retains conflict protection for changed refs, and drains Git progress output during uploads to prevent a stalled push. Those details matter because a repository can appear live on relays while its Git transfer is still waiting for an authoritative result.

    42:42 Armada 0.63.0 carries push alerts across signer types

    Armada is a Nostr client for encrypted communities, channels, and direct messages. Following last week's media-privacy release, its signed 0.63.0 announcement describes a new browser push path that works while the app is closed for extension and remote-signer logins as well as other account types. Tenna, a host app that embeds Armada, also gains background notifications for its users.

    The release loads older messages in long community channels faster and avoids rereading the whole history for new messages. Direct-message typing indicators use fewer relay connections. Desktop updates gain a restart prompt, while direct upgrades from versions older than 0.50.0 are no longer supported.

    The signed 0.63.1 follow-up adds editable emoji packs with folder import and reordering, retrieves quoted messages beyond loaded history, and makes relay-hosted replies interoperable. It reduces Android reconnect traffic, catches up after long disconnects without repeating old alerts, excludes pre-join mentions, and preserves unedited group fields and private server-list entries. Deletions in relay-hosted groups now require the message author or an administrator. Server dragging, malformed relay-information handling, and repository subscriptions also receive fixes.

    Version 0.63.2 expands message Markdown to nested quotes and lists, horizontal rules, code fences, underlined headings, and formatting across links or mentions. Tenor and Giphy page links play as GIFs. Read-state synchronization transfers less data, reconnection avoids redundant downloads and logins, and Android background notifications pause relay synchronization when large settings updates flood it.

    43:39 deed 0.3.0–0.3.2 makes Zig Nostr publishing steadier

    deed is a Zig command-line tool for reading and publishing Nostr events. Its September 24 version 0.3.2 adds an agent skill and fixes relay ping deadlines; the preceding 0.3.1 and 0.3.0 releases improve performance and publication reliability. The three tags describe one early tool series. The visible Nostr benefit is a steadier relay connection and event-publishing path for scripts that use the CLI.

    44:15 Cordn 0.5.1 keeps other groups moving when a coordinator fails

    Cordn (maintainer: nostr:npub1atv4akyv986nswm4f87zdspfgehzgsva82l5jsd2k3dzgrtzpagssl84q8) is an MLS-encrypted group messenger that uses Nostr identities and relays to locate conversation coordinators. Its signed 0.5.1 client release follows last week's offline-queue work by separating coordinator and outbox scheduling: an unavailable coordinator no longer delays sends for unrelated groups. Resolved relay hints persist after discovery, group documents carry them between devices, and a durable pending-publication record recovers stranded sends. Multi-device recovery overlaps history-chain and gap queries while reading current configuration.

    The release also adds dropped-file attachments, pinned groups, profile names in previews and notifications, and coordinator labels. It repairs first-unread positioning, unread counters, duplicate alerts, media and system-message previews, replies attached to captioned media, and image zoom controls. Native downloads use a Save-as picker. A signer that appears late no longer causes a false unsupported-encryption warning, and account switching no longer races background seeding.

    45:03 Nymbot 1.0.7 adds local document handling and encrypted chat sharing

    Nymbot nostr:npub16jdfqgazrkapk0yrqm9rdxlnys7ck39c7zmdzxtxqlmmpxg04r0sd733sv is an assistant reached through encrypted, gift-wrapped Nostr messages. Its developer-signed 1.0.7 release reads documents on the device, selects relevant passages when a file is too large to send whole, and identifies the pages used. Conversations can be shared through an end-to-end encrypted link whose access can later be withdrawn. Python and JavaScript replies can run locally, with their output returned to the conversation.

    The same release adds sourced research with a price shown before submission, image editing, per-message model selection, and spending caps per chat and bot. External tools connected through MCP ask for confirmation before changing data. Repository runs can pause changes for review, display CI results, and resume after a busy gateway. Suggested replies, pinned notices, folded source lists, and a searchable model picker complete the update; these claims come from the developer release notes; Compass has not independently audited the privacy of the app.

    45:55 0xchat 1.5.6 ships its signing and message-authentication fixes

    0xchat nostr:npub1tm99pgz2lth724jeld6gzz6zv48zy6xp4n9xu5uqrwvx9km54qaqkkxn72 is a Nostr messenger with private chats, external signing, and wallet features. Version 1.5.6 ships the security fixes covered as source merges last week, including gift-wrap authentication, trusted infrastructure configuration, and consent for embedded-page signing. It also closes Tor proxy bypass paths, validates TLS certificates for non-onion hosts, and stops release builds from writing potentially sensitive credentials and wallet material to the device console. Opt-in developer logs continue to record errors.

    The release backs relay reconnects off from three seconds to five minutes, repairs subscriptions after reconnection, and delivers requests queued while a relay is connecting. Account switches stop accumulating duplicate relay listeners, a failed login preserves the already active account, and external-signer connections persist across starts. Failed sends now show errors and retain unsent text or recoverable token-sharing state. Startup key decryption and upload hashing move off the UI thread; chat and video caches avoid repeated rendering and downloads. The release supplies Android and desktop assets with SHA-256 checksums, including the Play-signed Android APK and a Windows installer built from source.

    46:58 Nostr Mail Client 0.17.0 hides mailbox actions from relays

    Nostr Mail Client (maintainer nogringo: nostr:npub1kg4sdvz3l4fr99n2jdz2vdxe2mpacva87hkdetv76ywacsfq5leqquw5te) exchanges email through Nostr while supporting conventional email delivery. Following last week's per-recipient transport and media-privacy release, version 0.17.0 hides read, archive, folder, and label state and their timing from relays, and lets users delete mail without notifying its sender. The release requires updating every device together because older clients do not see the new state or deletions. It also protects Bcc recipients in mail larger than 32 KB, keeps local contact aliases out of outgoing messages, repairs Amber QR login, and publishes public mail to the recipients' read relays.

    The release adds colored folders and labels with sender, subject, and attachment rules; reply and forward quotes; inline pasted images; attachment previews and renaming; and range selection in mail lists. Forwarding retains original images and attachments, reply quotes start collapsed, and the web editor gains a context menu. HTML tables and inline images render more accurately, plain-text links work, and scheduling supports dates up to five years ahead. Address-book names and pictures appear throughout the interface, and theme colors offer system, suggested, or custom palettes.

    The same release keeps file-selected backgrounds local and caches linked backgrounds, with an explicit migration cost: older file backgrounds on native platforms must be added again. It changes the default relay/media recommendations, adds Nostr-app discovery during onboarding and update notices, preserves unfamiliar settings written by other clients, and repairs interrupted mail-store creation and Linux packaging. Startup failures now show details and a prefilled report instead of a blank screen.

    47:53 Nostr WoT 0.8.7 binds authentication to the destination

    Nostr WoT (maintainer Leon: nostr:npub1gxdhmu9swqduwhr6zptjy4ya693zp3ql28nemy4hd97kuufyrqdqwe5zfk) is a browser extension that combines Nostr signing with trust tools. Version 0.8.7 requires consent for NIP-98 signed HTTP authentication against the exact URL, query, method, account, and requesting origin. Older broad approvals require fresh consent. NIP-42 relay authentication has a separate account-bound permission system, with site-specific denials taking precedence over shared relay allows. Authentication requests must come from a verified top-level browser origin, and approval or unlock waits trigger another account/access check.

    The release verifies remote NIP-46 signatures and the complete approved event so a returned signature cannot silently substitute content or a destination. Wallet provisioning and address changes use body-bound authentication, one-use backend challenges, and separate transaction tokens; generic website signing cannot mint those internal wallet tokens. The compatible backend must deploy first, and the client refuses to downgrade to retired endpoints. Nostr Wallet Connect payments also verify a returned payment preimage against the requested invoice hash and treat a mismatch as an unknown outcome.

    In the request interface, users can inspect full raw events, choose specific requests in a site group, and view private messages locally without approving their return to a website. Local previews conceal themselves after 30 seconds; incoming requests remain unchecked, and ordinary bulk approval excludes authentication. The extension separates per-site and all-sites relay grants, bounds verified profile caching, resolves equal-timestamp replaceable events by lower event ID, and keeps home-popup publication reads local. Chrome and Firefox receive separately verified packages and serialized stable-release submission workflows; those workflows do not prove current store availability.

    49:20 Iris's shared runtime keeps relay and peer history consistent

    nostr-pubsub supplies a shared Nostr event runtime with persistent event storage and an outgoing publication queue. Versions 0.5.7–0.5.13 batch exact subscriptions, replay them after reconnect, keep local, relay, and peer evidence distinct, and report incomplete history when durable storage fails. Completed queries wait for every received event to finish admission. The default relay batch now contains at most 20 OR filters for compatibility with common servers, while peer batches retain independent matching and cancellation.

    Hashtree's runtime updates replace worker-specific networking with that shared runtime, persistent event indexes, and an outgoing queue, allowing events and cached files to share one FIPS node. FIPS TypeScript 0.0.44–0.0.45 selects routes with enough capacity for complete signaling records, recovers dropped session setup within the handshake deadline, and retries WebRTC answers only after explicit routing rejection. Larger framed WebSocket routes require compatible native peers; the 0.0.44 notes require deploying native FIPS 0.4.85 first.

    Iris Kit 0.2.5 adds a persistent plain-event application client and transport-neutral NIP-46 signing while preserving account keys and offline reads. Version 0.2.6 returns an already verified complete event ID from the worker or native backend immediately; prefix and replaceable-event queries still wait for history before choosing the latest value. These are library releases, and the notes do not establish deployment to every Iris application.

    Iris Meet's September 30 source update replaces its NDK integration with persistent publish/subscribe infrastructure and shared identity signers. The patch adds coverage for offline identity restoration, NIP-07 signing and meeting-room isolation. The existing meeting app uses Nostr for encrypted signaling and WebRTC for audio and video. This is default-branch implementation progress; the repository has no tagged release proving that this specific update has reached the live site.

    50:32 Chama propagates listing cancellation and background alerts

    Chama nostr:npub1m7nypkfk259h5h0dqwj9px0pqq7nz0cs7gjdhr7g793wspskeavqrljsln uses signed events for community trading and private conversations. Versions 6.4.14–6.4.16 publish a signed cancellation before deleting a listing locally, so other clients can retire the same cached offer. Recipient wake tags now accompany events independently of the sender's notification setting, and the alert server deduplicates by signed event so a chat immediately after a join can still trigger a wake. Background jobs replay affected trades from saved cursors, isolate failed chains, and decrypt notification text locally; the release requires redeploying the companion watcher.

    The grouped releases also apply participant renewals at their signed event times, quarantine funding locks made after a seat expired, and expose recovery for the saved bearer note. Claim publication waits for confirmed import or payment. Listing filters preserve the viewer's currency across community scopes, and trade headers use the finalized joined amount. These changes align what two Nostr-connected clients infer from the same event history.

    51:16 Earthly 0.1.12 adds reusable map configurations

    Earthly nostr:npub1dmmh0futyszl4445mv4xrygkgsgj8vpu79yx3qyy9qxmz4pemtzqlqmc87 is a Nostr collaborative map editor with signed publication and encrypted sharing. Version 0.1.12 adds reusable GMapper configurations for public Google My Maps, developer-created Maplet discovery, private configuration storage or public publication, and attributed geometry copying. The same release adds encrypted connection sharing, entity drops, and mobile chat navigation. Google export availability and browser CORS limit importing, executable downloaded Maplets remain unavailable in Tauri, and physical Android upgrade checks remain pending.

    The configuration work migrated existing publication addresses and preferences and added review or withdrawal of configuration updates. Its initial Android workflow failed before compilation; a tooling fix prepared the subsequently tagged release.

    51:56 Mostro 0.19.0 retires its first-generation transport

    Mostro coordinates peer-to-peer trades over Nostr. Version 0.19.0 now ships the removal of its first-generation gift-wrap transport, so clients must use the newer protocol. The existing order-creation and dispute-opening timestamp tags are renamed `published_at` without changing their stored values; the enclosing event's `created_at` remains its signing time. Restore responses return the counterparty's trade key, accepted create/take operations recognize trade keys, and relay publication completes on the first positive relay acknowledgement. The same release updates bond deadlines and cancellation, closes disputes when a trade resolves, notifies the solver, and bounds relayed price staleness.

    Mostro's trade-key admission fix recognizes a key as soon as an introducing order or dispute is committed. Nodes with stricter first-contact proof of work previously could drop a legitimate follow-up message until the periodic known-key refresh; default-equal thresholds were unaffected. A dispute transaction commits the order transition and dispute row atomically, closing inconsistent-state failures. Closure notifications send the assigned solver a best-effort private message when the users resolve a dispute, with the existing replaceable event remaining the offline fallback.

    52:51 SCRUTINY Lens brings security research onto Nostr

    SCRUTINY Lens v0.1.0, its first public release on September 29, is a browser client for security metadata published through Nostr. Analysts can search by CVE, package or certificate identifiers, inspect event histories and retractions, and explore relationships in a subject graph. The browser verifies event signatures and identifiers. Optional AI search and explanations use an endpoint chosen by the user; the app checks quoted citations against the underlying events. The release notes describe relay limitations explicitly and identify local build dependencies that still require sibling repositories.

    53:32 Mangatsu and Noteds reach Android

    Mangatsu v0.1.11 (maintainer lostcause (imattau): nostr:npub1khf5amw8mrupe649a5mhkk3d2d8wjj06urz6kwawpftk4f68tjlstdmd3q) is part of the comic reader and publisher's first Android release series this week. Its source adds Amber login through NIP-55, the Android interface for asking an external signer to approve Nostr operations. Comics and chapters are Nostr events, while their pages live on Blossom servers; the reader also supports an encrypted saved library and offline reading. Subsequent commits address signer invocation and relay-list refreshes.

    Noteds v0.1.2 brings a Nostr classifieds marketplace to Android through Tauri. Its Android signer integration uses Android NIP-55 signing. The app publishes listings and messages over Nostr and builds a local search graph with categories, geographic areas and optional browser embeddings. The latest source fixes native location access for nearby search. Both projects are early releases; their GitHub release pages have no detailed notes, so these capabilities come from the tagged READMEs and implementation commits.

    54:23 Statim combines Nostr DMs with other networks

    Statim v0.4.0 follows its initial September 23 release. The tagged source describes a messenger with NIP-17 Nostr DMs alongside XMTP, Status, Telegram and Matrix. Accounts start from a locally held recovery phrase; each conversation identifies its protocol because those networks provide different privacy properties. Android currently lacks its Telegram integration. These are the project's documented capabilities, not independently tested guarantees or confirmation of app-store availability.

    55:04 Amethyst repairs encrypted-group interoperability

    Amethyst is an Android Nostr client with Marmot encrypted-group support. White Noise is another Marmot messenger; an interoperability batch tested with its clients addresses group administration, deletion wording, and other behavior exposed when the two clients share a conversation. More pointed fixes send reactions and deletions inside the Marmot group instead of as separate NIP-17 gift-wrapped private messages and apply edits from another client after restart. Those are source merges; the testing described in the PRs is narrower than a published cross-client release.

    A separate Cordn group runtime and interface merge adds another encrypted-group path through coordinator servers. Cordn is distinct from Marmot, so the two changes should not be read as one transport migration.

    Amethyst also merged HTTP relay commands in its Geode relay and Quartz client under its NIP-FE proposal, and a backup-conflict review interface for replaceable profile and list events. NIP-FE is project proposal terminology; the backup flow lets a person compare versions before accepting a replacement and prevents silent overwrites of local state.

    Amethyst also develops Concord, a separate encrypted-community protocol used by Armada and Accordion. A conformance batch adds fragmented community lists, pin proofs, key rotation and dissolution records, followed by disappearing messages and direct invitations. An invitation stays in a private inbox until accepted; receiving it does not contact the community's relays. The same change corrects an author comparison that could let another author's deletion remove a message. Cross-client fixes repair unsigned rumor serialization, missing invitation fields, relay-confirmed community creation and joining without restarting; their reported emulator tests involved live Armada and Accordion peers.

    A later private-channel implementation rotates channel keys after relevant access revocations and adds create, privatize, publicize and rekey controls. It also adds rank-checked cooperative kicks and expires message attachments with their parent messages. WebXDC updates can enter a separate channel buffer, but Amethyst still has no WebXDC application host. That later batch reports wire-format and unit tests, with no device or live-relay exercise, so the earlier interoperability result does not certify every newly added control.

    Quartz's MLS engine now preserves skipped message-generation secrets across restart, enabling out-of-order messages to remain decryptable after restoring saved state. Four retained former epochs let callers authenticate late application messages, retain their authenticated data and prevent a consumed generation opening again. A secret-tree update loads unexpanded node secrets from ts-mls-style state; sender-specific stale-generation errors distinguish a client's own ratchet collision from another member's replay. The PR explicitly says Marmot's existing retained-epoch fallback remains separate, so this is an engine capability, not proof that every Amethyst message path uses it.

    A Quartz tag-reader audit fixes private geohash entries that could be published in clear text and a parser that treated the private key from an `nsec` as a public key. It also repairs repost addresses, channel-hide targets, live-room root tags and addressable mint events. The obsolete `ForkTag` reader is removed, creating a source API change for Quartz consumers; preexisting SQLite mint rows still need a separate migration. Additional event models cover Buzz's project-container, artifact-revision and team proposals, while video-view and encrypted push-control models follow Divine's schemas; these additions establish parsing and construction support, not complete client interfaces or adopted numbered NIPs.

    The client also renders Ultra HDR photographs in the feed and fullscreen viewer on Android 14 or newer. Android 15 and newer cap the feed's brightness boost at twice the ordinary range, while fullscreen can use the display's full range; the reported test devices ran newer Android APIs, leaving Android 14 and 15 untested. A shared UI and upload-port merge brings 140 screens onto common Android/desktop code and moves Android media work off the UI thread. Its audit also restores metadata-removal error reporting, making the refactor more than a file move.

    56:59 Divine adds encrypted video to direct messages

    Divine is a Nostr video client. NIP-17 carries private messages in encrypted gift wraps that hide their sender from relays. Divine's merged video-message work encrypts an attached video on the device, uploads ciphertext, and sends the decryption key inside that private message. A recipient can verify and decrypt the file for playback or save it. A separate history-restore fix keeps an ambiguous relay refusal from prematurely ending recovery when other relays can still answer.

    Divine's retired-moderation-key fix refuses retired keys in moderation-label resolution and selects the current report recipient when a report is filed. Pending reports addressed to a retired key are redirected to the build's pinned key, and unresolved conversations remain unwritable. The change also distinguishes retired-key custody when deciding which historical threads a minor may read; custody updates still require an application release. Deleted-comment cache handling prevents a successfully deleted recent comment from reappearing when a thread reloads.

    For creators, a live color-mask recording mode previews the replacement backdrop before a take is recorded, and white-wall masking adds brightness-sensitive masking through the video plugin. Word-by-word captions preserve recognized word timings and use approximate timing when the server supplies whole cues only. Stop-motion continuation appends new stills at the existing composition's pace, while returning detached clips, grouped font selection and speed presets add editing controls without changing the Nostr event format.

    Square-export alignment and its smaller-clip follow-up keep text and stickers in place across mixed-resolution clips. Third-party HLS playback avoids an Android heap crash by seeking back at loop boundaries instead of prebuffering repeated imported playlists; those loops can pause briefly at each restart. An account-preference reload keeps account-bound filters at their defaults across a switch while fixing part of a debug sign-in assertion. A separate moderation-label refresh issue remains open, so the PR does not claim every sign-in error is fixed.

    57:51 Buzz extends its relay's channel and identity controls

    Buzz nostr:npub16l0ck0s5zened29dsaqtqm6z0t4fmk2mwtszw64fz7fppcnls8mss3yj9s is a Nostr-based workspace with its own relay and clients. Its merged channel-artifact implementation gives an editable record one channel home and a revision chain; conflicting edits cannot both become the head. The project's NIP-AR label refers to its own proposal and implementation, not an established Nostr standard.

    For protected HTTP ingress, another merged change pairs a federated-identity assertion with the same key proven by NIP-98 authorization. NIP-98 defines signed HTTP authentication events; Buzz's NIP-FI assertion is a project specification. It also merged HPKE encryption for secret-key backup envelopes. That PR establishes source-level security work; distribution to every client remains unverified.

    Buzz desktop 0.5.26 includes the channel-artifact work, native HPKE secret-key backup encryption, and a desktop relay administration console. Its shared changes repair unlisted project-channel requests, synchronize sidebar sections, sorting, stars, and mutes across devices, bound long-thread reads, and tighten Blossom identity assertions. The repository-wide notes separately list relay identity pairing, companion mention delivery, configurable push URLs, atomic administrative deletion, and mobile contextual names. A desktop release establishes the desktop/shared distribution; it does not prove those mobile changes shipped in a mobile build.

    Buzz's WebSocket NIP-FI enforcement checks a federated-identity assertion before accepting frames, then requires its Nostr key to match the key authenticated through NIP-42, which proves a client's identity to a relay. A session expires at the earliest of the token expiry, maximum assertion age and configured connection lifetime; after expiry it admits no new effect. This project-specific NIP-FI mode is off by default. Already admitted audio commits and subscription setup can still wait on a stalled dependency, so the change does not establish a universal bounded disconnect time.

    Owner-deletion preparation moves operator-attested requests through an inventory-bound automatic approval into the existing deletion executor. A relay follow-up makes retrying the same request return its current state and reserves the owner's active quota until deletion completes; permanently retained host tombstones count toward a 20-community lifetime cap. These are source-level administrative changes, and the follow-up instructs operators to keep deletion disabled until its relay and drain executor are live. Separately, a partition-catalog audit detects catch-all partitions and uncovered months before creating new event and delivery-log partitions, exposing serving-safety and audit freshness to operators.

    Buzz mobile now disambiguates people and agents that share a display name. Its identity-name resolver qualifies agents by their owner and adds a short key suffix only when necessary; conversation integration uses those names for authors, mentions and membership notices. Lists, search and Pulse complete the same behavior outside a conversation. The visible qualification changes the local label while a selected mention keeps the identity's original wire name.

    59:01 Conduit advances checkout after relay acceptance

    Conduit nostr:npub1nkfqwlz7xkhhdaa3ekz88qqqk7a0ks7jpv9zdsv0u206swxjw9rq0g2svu is a Nostr marketplace that sends private order messages to merchants. Progressive relay publishing distinguishes the first positive relay acknowledgement from completion of all relay attempts, and a checkout follow-up persists that first acknowledgement before proceeding. A relay's acceptance means the signed order reached a relay; it does not prove a merchant read or fulfilled it.

    Conduit also merged recoverable remote-signer sessions and transactional signer-relay negotiation. NIP-46 lets an application request signatures from a key held by a separate signer; these changes keep a user's account workspace while its transport is being repaired, then verify the exact account before resuming. The PRs establish source behavior, not a shipped checkout build.

    Conduit's ranked product-search merge sends one ordinary NIP-50 full-text-search query for kind 30402 products and preserves the relay's relevance order through signature checks, revision reconciliation and local eligibility filtering. Cards can appear before exact-product background reads finish, while newer signed deletions remain authoritative. Refresh and Retry stay within search and exact-product reads instead of starting broad catalog discovery. A 100-result cap followed by local filtering can miss eligible matches, so a partial empty response offers recovery and does not prove there are no products.

    59:50 Elisym builds a Nostr commerce checkout

    Elisym is developing a commerce toolkit that signs products and carries private order and receipt messages over Nostr. Its merged commerce package defines offer verification and gift-wrapped order events; a checkout interface handles offer review, wallet payment, and delivery status, while a self-hosted merchant node packages the store side. The project calls kind `30490` provisional and describes an October minimum slice. These source merges establish an emerging integration; an accepted Nostr commerce standard or complete public launch has not been demonstrated.

    Elisym's agent checkout tools add `buy_product` and `get_order` for its Nostr-advertised products. The first call returns a quote without ordering, and a second call accepts the single-use quote and warnings for the same agent and network; order state is kept durably in the agent's local file backend. Tempo checkout support adds a browser-wallet payment path with merchant verification and delivery. A sent transaction hash keeps the attempt live until its outcome is established, avoiding an unpaid result while a broadcast could still settle.

    A later checkout fix lets the signed-product checkout initialize when a browser wallet announces itself immediately during discovery. The source change moves session declaration before that callback can run; the merge alone does not verify a hosted deployment.

    60:34 nostter improves signer checks and event retrieval

    nostter is a Nostr social client. Its merged signer-capability change asks whether a usable signer is present before offering follow and reaction actions. New pin tags carry the author's key and a known relay hint without guessing one, and replaceable-event cache ordering follows NIP-01's timestamp and event-ID tie-break. NIP-01 defines the core Nostr event rules, including how clients choose between replaceable events.

    61:00 Pensieve prepares isolated archive reconciliation

    Pensieve (maintainer: nostr:npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) is a Nostr archive and recovery tool. Its merged isolated negentropy runtime gives synchronization a bounded worker and durable completion behavior. The feature is opt-in and the PR explicitly says no production service or configuration was activated; this is groundwork for a safer recovery path, not evidence of a running deployment.

    61:25 ContextVM avoids duplicate calls across relays

    ContextVM's TypeScript SDK nostr:npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm carries tool and resource requests as Nostr events. Its merged inbound deduplication fix recognizes one plaintext request by event ID even when multiple relays or a reconnect deliver it again, matching the existing wrapped-message path. The PR reports one non-idempotent tool running three times for a single call before the fix. A companion resource-notification change sends updates only to subscribed clients; initialized sessions without a subscription no longer receive them.

    61:56 Cyberspace revises the DECK-0003 object rules

    Cyberspace develops the DECK-0003 format for structured Nostr objects and encrypted region bags, which Amethyst began implementing in last week's issue. New parts and hidden-object rules and bag references let a bag refer to a separately published object instead of embedding every part. A later correction says that an event-ID reference cannot reliably pin an old version of an addressable event, because a relay may discard it after replacement. Readers should use the corrected coordinate reference rule; the earlier merge's wording has been superseded.

    62:29 Wisp fixes replies to Nostr comments

    Wisp (maintainer: nostr:npub1utx00neqgqln72j22kej3ux7803c2k986henvvha4thuwfkper4s7r50e8) is a Nostr client with relay-routing and wallet features. After last week's released NIP-22 comment support, a merged follow-up makes a reply to a NIP-22 comment a comment event too, with the proper parent and root references; the previous path always published an ordinary note. NIP-22 lets comments attach to many Nostr content types. The fix merged after Wisp's 1.2.5 tag, whose notes only bump the version, so this is source-level progress whose release is still unverified.

    63:00 Cordn sends coordinator locations to a second device

    Cordn coordinates encrypted group messaging over Nostr. Its merged multi-device specification change carries a group's coordinator relay hints in the replicated group document. A newly seeded device can then find a coordinator that is absent from default relays, instead of appearing to join a group whose backlog and live messages it cannot fetch. This is protocol-document work following last week's Cordn offline-queue release, not a new client release.

    63:30 Nostr Atlas opens a directory for checkable identities

    Nostr Atlas is a new directory that presents Nostr profiles alongside claims to external accounts. Its merged site publication separates the directory from the project's component demo, and the site responds publicly. A claim-flow merge lets an X account owner publish a signed NIP-39 proof with a browser signer, while profile enrichment reads kind-0 Nostr metadata only after the proof verifies. NIP-39 defines the proof pattern for associating a Nostr key with another online identity; a relay acknowledgement alone does not mark a claim verified.

    64:01 nostr-java adds media hosting tools and preserves tag positions

    nostr-java is a Java library and MCP tool set for Nostr applications. Its merged Blossom tools let a caller upload, find, list, and delete hash-addressed media and manage the user's server list. A separate publishing fix keeps empty tag values in place: Nostr tags are positional, so dropping an empty relay hint could shift a marker into the wrong field and make the published event differ from the approved preview.

    64:33 Zap Cooking changes how account history can be recovered

    Zap Cooking nostr:npub1xxdd8eusvdxmaph3fkuu9x2mymhrcc3ghe2l38zv0l4f4nqp659qskkt7a is a recipe-sharing Nostr client. Its merged Lazarus recovery work replaces a backup built on NIP-78 application-specific data events with an approach that scans relay-retained versions of replaceable events to detect overwritten follows, mutes, or profiles. Lazarus remains a draft protocol; recovery depends on relays that retained the older versions, and a merged web-client PR is not a guarantee that every lost event can be recovered.

    The client also merged optional NIP-13 proof-of-work controls for notes and replies and an attachment model that keeps media order and NIP-92 descriptions consistent between preview and publication. NIP-13 lets a sender spend local computation on an event before posting; NIP-92 carries media metadata as event tags.

    Zap Cooking's NIP-05 claim fix requires NIP-98 authorization over the exact request body and rejects a signer different from the public key claiming the name. Previously, that public endpoint accepted unauthenticated claims that could replace another member's name. Membership tier now comes from the existing membership record, and remote-signer users receive a signing prompt when claiming. The separate trusted server-side registration path remains unchanged.

    A mute-list repair stops profile mute actions from replacing the whole kind 10000 list with public-key tags alone. The previous path erased word, hashtag and thread entries plus encrypted content, and one surface could republish decrypted private mute keys publicly. The new path reads the relay copy, preserves unrelated tags and ciphertext, and refuses to publish when that read is unavailable. Removing a private mute requires decryption and re-encryption through the signer.

    65:30 Opal brings remote signing to Omarchy

    Opal (maintainer: nostr:npub18ams6ewn5aj2n3wt2qawzglx9mr4nzksxhvrdc4gzrecw7n5tvjqctp424) is a desktop Nostr signer built for the Omarchy Linux environment. Its September 28 version 0.3.3 follows the first public series with NIP-46 remote-signing support, a local keyring, and a permission interface for requests from connected apps. NIP-46 keeps the account key with the signer while a separate client asks it to approve operations. This is an early release of a platform-specific signer, not a claim of wider desktop support.

    66:00 WatchTower opens a NIP-86 relay control panel

    WatchTower (maintainer takuya (iqbqioza): nostr:npub1takuya0nl8u82tgppggscgnpfz5m5vueckmr5r6xnm5nkyu555lq2uqwf4) is a newly published panel for relay administration through NIP-86, the protocol for authenticated relay management requests. A public instance responds, giving operators a place to inspect the interface. The repository was created September 22; a reachable site does not establish that its authorization flows have been independently audited or that it works with every relay implementation.

    66:29 Hubstr Blossom opens a personal media origin

    The newly published Hubstr Blossom server lets a Nostr client upload images, video, and files to a self-hosted Blossom endpoint, then put those URLs in events. Its README documents local content-hash storage, a SQLite index, signed kind-24242 authorization for changes, and a range of Blossom operations for upload, mirroring, listings, and deletion. Public reads let other clients render posted media without receiving upload rights.

    The server's documented options also extract file metadata for NIP-94 events, which describe shared media. The server can re-encode images without EXIF metadata and guards mirror requests against private-network targets by default. This is a newly published implementation with deployment instructions, not evidence of a broad production rollout.

    Hubstr Relay published its initial source on September 24. It combines a personal SQLite event cache with a public relay: unauthenticated readers see permitted public events, while NIP-42 authenticated tenants can read their cache. NIP-17 gift wraps remain unavailable to guest readers. Its September 25 update corrects records returned by NIP-86 pubkey-list methods.

    67:18 Meshstr experiments with a permissionless relay mesh

    Meshstr is an alpha design for Nostr relays to negotiate peer budgets and exchange signed usage receipts. Its first implementation includes a write-policy bridge for strfry, a Nostr relay, added September 27, with a socket fix the next day. The repository describes DIDComm negotiation and NIP-77 reconciliation, which lets peers compare event sets without exchanging their full inventories, alongside verifiable reports of peers exceeding agreed budgets.

    Those project rules are a proposal, not an adopted NIP or a demonstrated public relay network. The concrete progress this week is the published code path connecting a relay's write policy to the proposed mesh accounting.

    67:54 Dossier shows what a public Nostr history can reveal

    Dossier is a new browser-side self-audit tool for a person's Nostr and Lightning footprint, with a public demo. It gathers visible profile links, zap trails, posting times, metadata from old NIP-04 encrypted direct messages, and media metadata such as photo EXIF; it can also show where a relay still serves an event someone tried to delete. NIP-07 signer support lets a user authorize cleanup actions without pasting a private key into the page.

    The project's documented limits matter: a scan sees only the relays it reaches, and a delete request cannot erase copies held elsewhere. The repository appeared September 27 and has no tagged release; the demo and source establish an early tool, not a complete inventory of anyone's past activity.

    68:32 Marmot MDK extends polls, custom emoji, and account metadata

    Marmot MDK supplies the runtime and bindings for encrypted Nostr group messaging. Later MDK source merges expose paginated per-voter poll selections using the same effective-response rules as aggregate tallies. Optional application-owned group components give hosts admin-controlled settings that survive message retention and reach newcomers in their Welcome. Tagged sends and media reactions carry custom-emoji metadata through the runtime and bindings, retain decryption material for attached reaction images after an epoch change, and reject forged attachment tags. That change expands the C upload-request structure, so C consumers must rebuild against the header.

    A convergence correction keeps messages pending when no canonical branch was selected instead of invalidating them without trying the live state. An accompanying unreachable-path cleanup routes unresolved staged commits into retained retry behavior. Encrypted-media reads align the HTTP read timeout with resumable-body idle handling, addressing stalled large transfers without claiming the pending incoming-APK device acceptance test passed. Startup-stage markers show which account-opening step timed out, adding diagnostic evidence without claiming the underlying startup stall is solved.

    The local agent connector also merges existing profile metadata when publishing a kind 0 update, preserving fields the request omitted. Group-profile updates expose changes to a group's name and description through the existing current-admin-authorized path. Its socket authentication still grants the whole local API; this merge does not add per-principal capability grants. These source changes follow the tagged 0.11.0 release.

    69:23 rust-nostr correlates relay count replies

    rust-nostr (maintainer: nostr:npub1drvpzev3syqt0kjrls50050uzf25gehpz9vgdw08hvex7e0vgfeq0eseet), a Rust library and SDK for Nostr applications, merged correlated COUNT responses and clearer waiter errors. The SDK subscribes before sending COUNT and accepts only the matching reply, preventing a lost or closed receiver from appearing as a legitimate zero. It also preserves receiver errors for publication acknowledgements and relay authentication, so callers can distinguish a missing confirmation from an explicit rejection. Public method signatures stay unchanged.

    69:55 ZapTracker adds Nostr network and quote metrics

    ZapTracker (maintainer Pratik (pratik227): nostr:npub1s56kqwj9ewz89dn5ns8elfwc4y7vygl0v4etglamw2gkc84cp8ts893h9f) is a creator dashboard for Nostr engagement and wallet activity. A network-dashboard merge replaces Lightning network statistics with online Nostr relay data from nostr.watch and capability information from NIP-11 documents. A quote-metrics change counts kind 1 events carrying `q` tags alongside likes, reposts, bookmarks and zaps. This lets creators see quotes in content rankings and engagement charts; it remains merged source evidence.

    70:26 LaWallet NWC routes card top-ups to the card wallet

    LaWallet NWC nostr:npub1ek4262k6nv3l9axh403w2e66pzl2pqhhnjrhgv2wpzx2akak285scxv4pd connects Lightning wallets to applications over Nostr Wallet Connect. Its BoltCard top-up merge advertises a LUD-19 pay link that creates an invoice through the card wallet's NWC `make_invoice` method. Blocked, disabled or unpaired cards do not advertise a pay link, and the path does not redirect top-ups to the owner's separate Lightning address. A follow-up exposes the same link in the emulator and carries recipient-accepted payer notes on LNURL sends.

    70:58 A new khatru relay exposes owner moderation controls

    nostr-relay-khatru published its initial source on September 29 as a general relay derived from the discontinued HiveScope-specific implementation. The public instance serves a NIP-11 document naming this repository and advertising authentication, event expiry, protected events, counting, reconciliation and relay administration. A September 30 implementation adds moderation controls to its owner panel. The public metadata verifies a deployed endpoint, not successful testing of every advertised method.

    71:36 A local web-of-trust builder tracks unfollows

    etemiz/wot published a Nostr web-of-trust crawler on September 30. It reads follow lists and NIP-65 relay lists, computes trust from configurable roots, and writes scores to LMDB for relay policies, feeds and spam filters. The project documentation explains the trade-off: live updates increase trust, while scheduled full crawls apply decreases and unfollows. Scores depend on the chosen roots. This is newly published source, with no tagged release or claim of production deployment.

    72:09 Moyu opens a Marmot workspace client

    Moyu has published the source for a Rust workspace chat client built on Marmot, with command-line, terminal, and desktop interfaces. Its September 30 changes use locally recorded membership changes to stop old join requests readmitting removed members, make invitation codes expire after seven days, and let administrators revoke them. Terminal output filters control characters and text-direction overrides supplied by other members. A pinned MDK fork routes Blossom attachment transfers through the configured SOCKS5 proxy, with hostname resolution performed by that proxy. The 0.3.0 changes are in the public source; no public release tag or release entry is available yet.

    72:42 NIP-39 extends identity proofs to Bluesky and Discord

    NIP-39 lets a Nostr account point to proof that it controls an identity on another platform. A change merged September 27 gives new proofs one recommended sentence and tells verifiers to accept older proofs that contain the account's npub, even when their wording differs. It also documents Bluesky posts and Discord messages as proof locations. A Discord claim can only be checked by someone who can read the server where its message was posted.

    73:30 NIP-86 adds invite-code management for relay administrators

    Compass described in the July 8 issue the NIP-86 invitation proposal while it was open; it has now merged. NIP-86 defines a standard relay-management API, and NIP-43 defines how restricted relays announce membership and process admission requests. The September 24 merge adds `listclaims`, `createclaim`, and `deleteclaim` so an administrator can list, issue, and revoke invite codes accepted by a relay. That gives operators a management path for invitations that may grant a member a role after they join; it does not require every relay to support the methods.

    A correction to last week's NIP-86 coverage: the merged specification added `unallowevent`, `unbanevent`, `listallowedevents`, and `listdisallowedkinds`. The earlier item listed names from an outdated proposal description. The first two methods reverse an event-level allow or ban decision; the others inspect allowed events and disallowed kinds.

    74:17 NIP-51 moves favorite follow sets to an unused event kind

    NIP-51 defines public and private lists, including a list of a user's favorite follow sets. Compass described the kind-collision proposal in the July 22 issue; it has now merged. The September 27 correction assigns that favorites list kind `10021` because the earlier number was already in use. Its `a` tags still point to kind `30000` follow sets. The change resolves a number collision in the specification; it does not create a new way to follow people.

    74:50 NIP-51 proposes hidden replies for each thread

    An open NIP-51 proposal would let a thread's author publish a public hidden-replies set that cooperating clients display behind a toggle. It uses one addressable kind-30027 event per thread, with the root ID as its `d` tag and `e` tags naming replies; only a set signed by the root's author applies. Listing the root asks clients to hide other authors' replies and stop offering a reply composer, while replies can still be published on relays. The per-thread format limits editing collisions to the same conversation. The author reports an implementation in Nostrich, but public-source inspection did not establish it; the proposal remains unmerged, with its set format still under discussion.

    75:32 NIP-DB proposes verified domain names for key-addressed services

    The open NIP-DB proposal, submitted September 28, describes Nostr events that bind an ordinary Internet domain to the key serving it over a key-addressed network such as FIPS, an encrypted mesh that addresses nodes by Nostr public key. A domain owner can establish the binding with a DNS TXT record or a DNSSEC proof carried with the claim; clients would pin a verified result for later offline use. The proposal explicitly bars resolution through an unverified claim, since anyone can claim someone else's domain in a Nostr event. fips-pub-domains is the author's reference implementation, but the event-kind numbers and some overlay-specific wording are still under review. Its reported end-to-end tests are the author's evidence, not a claim that the proposal is an accepted NIP.

    76:18 A private-feed draft explores encrypted groups of recipients

    A new multi-recipient envelope proposal, opened September 29, sketches private notes, replies, and connections whose intended recipients can find an event without exposing their ordinary public keys in its visible tags. It proposes opaque pairwise alias tags derived from shared secrets and provisional event kinds, including a way to wrap another Nostr event for hundreds of readers. That could give small private feeds a more direct retrieval path than sending a separate message to every member.

    The proposal's author explicitly calls this a work in progress. The draft has no demonstrated implementation or security review, and its kind assignments and byte-level signing rules remain open.

    76:57 A Blossom proposal lets other people announce mirrored media

    An open NIP proposal describes a way for someone who mirrors another author's Blossom blob to announce that copy through Nostr. A client could then look for the copy if the original server loses the blob. Discussion has also raised checking the mirror's current BUD-03 server list when an announced server hint has gone stale. This is a proposed discovery path, not a guarantee that clients or archival relays already provide fallback storage.

    77:28 Road-event reports seek a shared Nostr format

    The open Road Event Reports proposal describes reports and confirmations for potholes, closures, cameras, and other road conditions. It uses location tags and NIP-40's expiration timestamp, which tells relays when to stop serving an event, so a report need not remain current indefinitely. The author based revisions on a sample of events recovered from public relays and on the existing Roadstr clients for reporting road conditions, but the draft still leaves a compact-encoding question open, and the proposed NIP number has not been adopted.

    78:01 Marmot revisits multi-device coordination

    Marmot's multi-device redesign replaces an unimplemented External Commit draft with a non-normative walkthrough for early feedback. The new direction explores an existing device approving a new one, bringing it into conversations and later removing devices, while keeping open questions visible. IDs reserved by the removed draft are freed because no implementation adopted them. The ideas document allocates no new IDs or wire formats and is not an implemented multi-device feature.

    78:36 Six Years of Nostr Septembers

    The last September issue is a chance to trace how Nostr moved from sketches to a larger set of interoperable tools. A 2021 ride-matching prototype used signed events to coordinate a service; five years later, identity proof wording and list-kind collisions are the sort of details maintainers are resolving. In between, clients learned to present conversations, media and recovery in ways ordinary people can use. The dated sources below show stages in that progression. They do not establish that every experiment launched or that each old design remains recommended.

    79:04 September 2021: early experiments with useful shapes

    A September 4 BUber commit explored a taxi-matching concept using Nostr events. It showed how a signed, relay-carried request could coordinate people without assigning the whole service to one server. The source is a concept, and it does not establish a launched ride service.

    Later that month, Loquaz's September 23 source offered a desktop chat prototype. That was another early attempt to make relay messages feel like an ordinary application. The source does not establish finished end-to-end encryption or a production messenger; the lasting thread is the search for a usable conversation interface on top of simple events. BUber tested ride matching, and Loquaz tested chat; both used signed events before common client patterns had settled. Those trials laid out two recurring problems for later clients: coordinating through relays and presenting events as a usable conversation.

    79:46 September 2022: chat and delegated actions enter the specifications

    The September 10 NIP-28 change described public chat channels with messages and metadata that clients could interpret together. NIP-28 made a shared room an explicit protocol subject and gave clients a common channel convention.

    On September 23, NIP-26's delegated-signing text documented a way for one key to authorize another to sign limited events. It captured an important 2022 design question: how to use a Nostr identity without handing the primary key to every application. NIP-26 is now marked unrecommended, so this is a record of an experiment, not advice for new integrations. Its later status shows how the signing model has moved: a specification can preserve a useful problem statement even when the proposed answer is retired.

    80:27 September 2023: clients grow up around relay discovery and metadata

    Damus is a Nostr social client. Its September 21 changelog recorded work on its local Nostr database, search, and hashtag navigation. Those changes made a busy social feed easier to browse and recover on a phone; the dated changelog is evidence for that client release, not for every later Damus capability.

    The protocol details were moving too. A September 26 change to NIP-24 clarified optional profile metadata fields, while NIP-65's September 29 change addressed relay URI normalization and deduplication. NIP-65 tells clients how to publish the relays they use for reading and writing; consistent URI treatment helps those lists point to the same relay even when strings differ in harmless ways. That small convention moved client design toward reliable discovery: finding a person's events depends on knowing where they are published.

    81:19 September 2024: posts acquire richer context

    Damus's September 22 release notes described support for NIP-84 highlights and comments. NIP-84 gives readers a way to quote and discuss a passage of long-form material. The client work shows how a protocol idea became something people could use while reading.

    Meanwhile, NIP-34 received a September 20 change refining issue subjects and labels for git collaboration over Nostr, and NIP-73 received a change that day refining external content identifiers. These are separate specification changes: one helps a repository's issues retain structure, while the other lets an event refer to material outside Nostr. Both extend the meaning a client can preserve when content travels between communities, repositories and other media.

    81:57 September 2025: access controls and payment context become more precise

    A September 6 NIP-42 revision addressed multi-user relay authentication. NIP-42 lets a relay challenge a client to prove which Nostr key is making a request; the update mattered for services that serve more than one authenticated account through the same connection.

    A September 15 NIP-47 update added optional payment metadata to Nostr Wallet Connect requests. NIP-47 lets an app ask a wallet to perform actions over Nostr. More context can make a wallet interaction understandable, but the metadata may expose payer details, so clients and wallets still need to treat it as sensitive. The change illustrates how interoperability work now included what a recipient can learn, not just whether a request can be delivered.

    82:42 September 2026: interoperability details meet public identity

    This September, a merged NIP-51 change moved the follow-set event kind away from a collision. NIP-51 defines lists that a person can maintain and share; unique event kinds let clients distinguish one list type from another. An earlier Compass issue discussed the proposal, while the September merge is the status change.

    A second merged change to NIP-39 clarified proof text and added more ways to associate an external account with a Nostr identity. NIP-39 is about checkable identity claims, not a central identity registry. Together, the two merges show current protocol work concentrating on the small details that determine whether independent clients interpret the same identity and list events correctly. They also show a shift from inventing new event categories toward reducing ambiguity in existing ones.

    Across these six Septembers, the pattern is a progression from proving that a signed event can describe an application request to asking how a client verifies a claim about a person. The old prototypes matter because they expose the questions that later specifications and clients had to answer: who signs, where an event is found, what it means, and how someone knows whether to trust it. That is also why a small, precise protocol correction can matter as much as a new interface.

    1 hr 25 min
  • Nostr Compass Podcast #40

    Max, Form* and Infinity x2 discuss encrypted messaging, mesh networking, Nostr application releases, signer improvements, long-form articles, and media attachment metadata.

    Guests: nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt · nostr:npub1qu7dsd44275lms4x9snnwvnnmgx926nsppmr7lcw9dlj36n4fltqgs7p98 · nostr:npub15gkmu50rcuv6mzevmslyllppwmeqxulnqfak0gwud3hfwmau6mvqqnpfvg

    Newsletter 40 · Nostr Compass Android source

    0:00 Episode intro

    Max introduces episode40 of the asynchronous Nostr Compass podcast and invites listeners to contribute recordings through Logbook.

    0:24 Marmot Protocol and MDK reach v0.10.0

    Marmot Protocol’s MDK v0.10.0 adds bounded chat-list and conversation windows, independent account-attention summaries, revision-safe drafts, and viewer reaction state for applications building MLS-based encrypted groups over Nostr. It also restores account-scoped user blocking and counts pending invitations without counting them again as unread messages.

    2:08 Myco 0.7.0 runs napplets and file sharing over a multi-path FIPS mesh

    Myco v0.7.0 turns the Android mesh application into a host for napplets, single-file Nostr programs described by the open NIP-5D proposal. Each napplet runs in a sandbox without direct network or storage access and requests identity, relay, outbox, mesh, picture, or file capabilities through Myco. The install sheet shows those permissions before approval, users can change them later, and updates that request broader access return to the permission gate.

    3:33 Dart NDK changes relay, cache, and account behavior

    Dart NDK v0.10.0-dev.3 is a development release of the Dart client library, with breaking changes across relay handling, caching, authentication, and account streams. Client maintainers should expect code and behavioral migration work, especially where an application assumes that cached events, hidden events, or account updates follow the previous release line’s semantics.

    4:18 Keycast publishes its rebuilt signer release candidate

    Keycast v2.0.0-rc.1 is the first numbered release of the rebuilt self-hosted NIP-46 remote signer. The release candidate adds multiplexed NIP-46 support, shared and per-key relay routing, durable request handling, encrypted key storage, invitations, sessions, and team workspaces.

    5:08 Nail 0.2.0 restores Nostr-to-email subscriptions

    Nail v0.2.0, a service that delivers Nostr messages through email workflows, adds self-healing gift-wrap subscriptions. The change is aimed at restoring Nostr-to-email delivery after subscription failures instead of leaving the bridge silently stalled. Infinity x2 and Max also discuss PGP end-to-end email encryption in Mailstr and compatibility with providers such as Proton Mail.

    6:15 Nostr Mail Client 0.15.0 broadens account and relay control

    Nostr Mail Client v0.15.0 adds one-tap account switching, per-account notifications, web push, and recovery of a missing relay list from a relay, Nostr address, or nprofile. It also republishes profiles and relay lists to indexing relays, reconnects when network access returns, and distinguishes a device outage from unreachable mail relays. Those changes tighten account recovery and delivery across desktop, web, and Android clients.

    7:04 Linky 26.9.17 keeps recovery seeds off its server

    Linky v26.9.17, a contacts, private Nostr messaging, and Lightning/Cashu payments application, fixes a path that sent recovery seeds to Linky's server when users saved them through a password manager. The release also hardens payment-file URL handling and disables Android application backups, reducing the places where wallet and identity recovery material can escape the device.

    8:00 Calendar by Form* 2.4.0 adds Mailstr guest invitations

    Calendar by Form* v2.4.0, a Nostr calendar client, adds Mailstr guest invitations and mobile calendar fixes. The invitation path lets organizers include participants through mail-oriented coordination without requiring an existing calendar account.

    9:32 Hessible 0.1.2 speeds encrypted contact and photo sync

    Hessible 0.1.2, a privacy-focused Android contacts application that stores encrypted contact data on Nostr relays, reduces synchronization overhead and mirrors encrypted contact photos across Blossom servers. The release also makes the application package smaller, while its own release guidance continues to caution users to back up keys and account for varying relay retention.

    10:07 Boris 0.12.5 bounds extraction and strengthens offline reading

    Boris v0.12.5, a reading-list client built around Nostr bookmarks, follows v0.12.4 with bounded content extraction, offline caching, relay-query changes, unsafe-HTML handling, and a fix for nearly invisible text under the Paper White theme. These changes affect both content safety and the reliability of reading saved material without a live network path.

    10:40 Amethyst 1.15.2 refines media and root-scope replies

    Amethyst v1.15.2 nostr:npub142gywvjkq0dv6nupggyn2euhx4nduwc7yz5f24ah9rpmunr2s39se3xrj0, an Android Nostr client, closes a three-release sequence with media fixes, clearer Health Connect permission handling, source-name caching, and dedicated engagement filters for NIP-22 root-scope replies. The release also includes translation and package-metadata updates.

    11:11 LibreNostr 0.5.17 routes feeds through author write relays

    LibreNostr 0.5.17, a relay-first Android client, now directs feed queries to the NIP-65 write relays of followed authors and defers interaction-count queries until notes enter view. Earlier work in the same release sequence limits concurrent relay queries and closes each relay subscription as soon as that relay answers, reducing self-inflicted request rejection during refreshes.

    12:07 Voca 1.2.0 improves speech cancellation and recovery

    Voca 1.2.0 nostr:npub17h9fn2ny0lycg7kmvxmw6gqdnv2epya9h9excnjw9wvml87nyw8sqy3hpu, an offline-oriented Android text-to-speech reader that can fetch and verify Nostr content, adds distinct cancellation and rendering behavior plus recovery for slow or unreliable speech engines after the 1.0 launch covered in issue #38. It also adds opt-in diagnostics sent with a fresh one-time Nostr key through a NIP-17 private message, with large reports encrypted locally before upload.

    13:01 Postr 1.1.1 adds dictation and publication recovery

    Postr 1.1.1 nostr:npub1qwkd5wzftcxquuhtkcg0xn9ed7evksluuppf7qdmdh34ywe9uncs5uqfvl, a focused Android kind 1 composer, adds dictation and caret-aware mention handling after the launch covered in issue #37. The preceding 1.1.0 release also improves publication recovery by retrying the same signed event after ambiguous outcomes, preventing recovery from creating a duplicate note.

    13:47 earthly 0.1.10 repairs map sanitization and authoring

    earthly v0.1.10 nostr:npub1dmmh0futyszl4445mv4xrygkgsgj8vpu79yx3qyy9qxmz4pemtzqlqmc87, a collaborative Nostr map editor, materially changes map and story authoring while fixing a critical MapLibre attribution-sanitizer flaw through a MapLibre GL JS upgrade. The release also improves WebGL 2 compatibility messaging, mobile controls, geometry editing, selection, and map-presentation controls.

    14:20 Routstrd 0.4.10 tightens Nostr request routing

    Routstrd v0.4.10 nostr:npub130mznv74rxs032peqym6g3wqavh472623mt3z5w73xq9r6qqdufs7ql29s replaces a stale stored provider list with the list returned by live discovery. The preceding v0.4.9 release added manual and scheduled client refresh controls, named npubs in the CLI, and graceful daemon restarts that wait for active requests. Together, the releases make provider selection and refresh behavior more explicit for operators of the Nostr-routed service.

    14:53 Whistle 1.9.1 instruments background recovery

    Whistle 1.9.1, an encrypted group location-sharing application built on Nostr, MLS, and Marmot Protocol, adds device-lifecycle instrumentation for iOS background recovery. Version 1.9.0 also introduces per-group sharing pauses and per-group last-event diagnostics, making a stalled group easier to distinguish from a healthy application-wide connection.

    15:28 nostr-wot-extension 0.7.0 encrypts wallet cache data

    nostr-wot-extension v0.7.0 (maintainer Leon Acosta: nostr:npub1gxdhmu9swqduwhr6zptjy4ya693zp3ql28nemy4hd97kuufyrqdqwe5zfk), a browser extension that manages Nostr identities, signs events, and initiates Lightning payments, encrypts wallet and payment cache data and strengthens vault and account isolation. It also addresses NWC and wallet behavior, payment compatibility, request approvals, account management, backup imports, relay handling, accessibility, and local event decryption.

    16:01 Lightning.Pub 0.0.41 improves publication recovery

    Lightning.Pub v0.0.41 adds relay URL, timing, socket-state, and DNS details to Nostr publication failures. It also retries liquidity-provider startup calls, removes abandoned callbacks, and withholds invoice routing until a successful balance response proves the provider is ready. Operators now get a clearer split between relay-connectivity failures and backend-readiness failures.

    16:38 Gittr 1.0.0 advances NIP-34 collaboration

    Gittr v1.0.0, a client for Nostr-based Git collaboration, advances NIP-34 clone-source handling, issue and discussion state, mobile usability, and interoperability. The v1.0.0 tag follows v0.3.0 and v0.3.1 from earlier this week, giving integrators a stable version marker for the release sequence.

    17:10 GitWorkshop 4.1.0 makes NIP-34 drafts recoverable

    GitWorkshop 4.1.0 (maintainer: nostr:npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr), a Nostr-native client for NIP-34 issues, pull requests, code review, and repository browsing, adds account-scoped local drafts that survive refreshes and browser restarts. It also adds bounded recovery and explicit retry controls across Git reads, relay discovery, repository state, pull-request history, uploads, and release metadata while keeping signing and payment retries manual.

    17:48 ngit-ci 0.1.1 publishes signed CI coordination

    ngit-ci 0.1.1, a self-hosted coordinator for the proposed NIP-C1 Nostr CI protocol, is its first release published through Nostr. It covers signed workflow coordination, container or microVM execution, logs and artifacts, encrypted repository secrets, NIP-34 maintainer authorization, and signed publication of build results.

    18:22 pakstr 0.21.1 advances Nostr application packaging

    pakstr v0.21.1 continues a five-release sequence for Nostr application packaging and app-shell behavior. NostrAppShell references point to this same pakstr release series, so the package and alias describe one shipped change.

    18:46 @elisym/cli 0.30.0 coordinates agent and delegation packages

    @elisym/cli 0.30.0 concludes a coordinated CLI, SDK, and MCP release for Nostr-oriented agent delegation. Delegated jobs now wait for completion instead of sleeping for a fixed interval, and the application avoids paying the same delegation capability once per job. Teams using more than one package should keep CLI 0.30.0, SDK 0.36.0, and MCP 0.26.0 on the matched release line.

    19:15 Hashtree 0.2.150 advances hash-tree synchronization

    Hashtree v0.2.150 (organization Sirius Business Ltd: nostr:npub1xdhnr9mrv47kkrn95k6cwecearydeh8e895990n3acntwvmgk2dsdeeycm) closes a six-release sequence with Android-safe locking for the embedded social graph. Earlier releases in the sequence keep Nostr subscriptions open briefly after an empty EOSE so delayed signed roots can arrive, select the newest valid root for the exact author and tree, and recover retained FIPS routes after transit outages. The result is more predictable mutable-root discovery and synchronization across relays, embedded clients, and intermittent network paths.

    19:56 nostr-relay 0.0.266 improves shared-database operation

    nostr-relay v0.0.266 (maintainer Yasuhiro Matsumoto (mattn): nostr:npub1937vv2nf06360qn9y8el6d8sevnndy7tuh5nzre4gj05xc32tnwqauhaj6), a Nostr relay built on the relayer framework, advances shared-database and Redis behavior across six releases. This work is especially relevant to operators running more than one relay process against common persistence or notification infrastructure.

    20:21 fips-tcp 0.2.2 implements FIPS over TCP

    fips-tcp v0.2.2 repairs missing segments after a timed-out flight as acknowledgments advance. Small writes lost during a transit outage recover together instead of waiting through a growing timeout for every segment, while the Rust and TypeScript implementations preserve identical wire bytes, retry bounds, receive-window checks, sequence wrapping, and RTT sampling.

    20:57 Nenya marketplace library

    Nenya is a new library for a non-custodial Nostr marketplace focused on commissioned digital media with Bitcoin settlement. The repository is pre-release, so its event and settlement interfaces may still change.

    21:18 GitHub-to-Nostr CI bridging

    gh-ngit-ci-bridge is an early bridge that watches GitHub commits associated with configured identities and turns them into signed Nostr build evidence for NIP-34 workflows. The repository is pre-release, and its integration contract may still change.

    21:45 noscall encrypts voice attachments

    noscall’s encrypted voice-attachment commit adds a concrete privacy feature for voice communication. The source-verified change supports encrypted voice attachments, reducing the need to expose recorded media as plaintext when attaching it to a call or messaging flow.

    22:03 relayer restores notifier fan-out across processes

    relayer pull request #167 has merged a notifier fix for deployments where several relay processes share one database. The patch restores live fan-out across those processes, addressing the case where an event persisted successfully but connected clients on another process did not receive the corresponding live notification.

    22:20 Trackstr maps media through dedicated event kinds

    Trackstr is an unreleased, open-source Nostr media database for discovering and tracking movies, music, television, and other media. Its current design uses event kinds 35400 through 35402, providing a reviewable schema and implementation surface. The kinds remain project-defined and may change before a release.

    22:55 NIP-A3 clarifies payment-type ambiguity

    NIP-A3 (Payment Targets) standardizes typed payment targets in ["payto", "", "

    "] tags on kind 10133 events. The merged payment-type clarification adds bitcoincash and tron to the documented type list and clarifies rendering: clients use a type-specific URI scheme when one exists, otherwise they fall back to payto:///.

    23:19 NIP-CD proposes addressable slash commands

    The open NIP-CD slash-command proposal defines addressable kind 31992 events whose command, title, description, arg, scope, and ignore tags advertise executable commands. Invocations begin at the first byte of an event's plaintext content, can target one executor by npub, and deliberately require no special client support. The draft also defines positional argument types and scope filters by event kind, relay, author, or tag; none of this is merged protocol behavior yet.

    23:58 NIP-90 proposes expiring DVM heartbeat events

    NIP-90 (Data Vending Machines) defines job requests, results, and feedback for services that perform work over Nostr. An open DVM heartbeat proposal adds optional kind 11998 events that should carry an expiration tag so clients can distinguish a live machine from a stale NIP-89 announcement. The heartbeat sits outside the NIP-90 job-kind range, lets relays discard expired or superseded heartbeats, and leaves existing DVM flows unchanged when a service does not emit it.

    24:26 NIP-73 proposes podcast-medium filters

    NIP-73 (External Content IDs) standardizes i tags for external identifiers and k tags for their categories. The open draft podcast-medium proposal adds optional podcast:medium:music and podcast:medium:podcast category tags so clients can filter notes by the medium declared in a podcast RSS feed. An absent category continues to imply a podcast feed, though clients should resolve the RSS source when they need to confirm its medium.

    24:58 NIP-F5 proposes permissioned FIPS transport for web apps

    The open NIP-F5 browser-transport proposal defines an optional window.fipsTransport API through which a Nostr web application can request user-approved HTTP or WebSocket access to a FIPS-addressed relay, Blossom server, Git service, or other private endpoint. The host binds each grant to the requesting web origin and target while keeping transport separate from Nostr signing, identity, and service authorization. The proposal also requires explicit consent and scoped permissions, but its address forms and browser contract remain draft behavior.

    25:38 Marmot clarifies KeyPackage relay discovery

    Marmot carries MLS group state over Nostr events. The open KeyPackage relay-discovery clarification documents the current sequence: publish kind 10002 relay metadata, fetch the recipient's kind 30443 KeyPackage from write-capable or unmarked destinations, then use kind 10050 separately to find the recipient's Welcome inbox. It also states that read-only NIP-65 entries are not KeyPackage destinations and that the removed kind 10051 list is no longer a discovery step.

    26:44 Marmot proposes encrypted group reports and shared moderation

    The open Marmot moderation specification proposes unsigned inner events carried by the protocol's existing encrypted group transport. Kind 1984 would report a specific message revision, kind 1985 would let administrators dismiss referenced reports without removing the content, and kind 4891 would let an authenticated administrator remove a message and its revisions. The proposal also defines deduplication, shared review visibility, ordering, retention, and authority rules, while keeping author deletion on kind 5 and host-application interfaces outside the wire contract.

    27:49 NWC adds payment lookup and BOLT12 records

    Nostr Wallet Connect lets applications control a wallet through encrypted requests and responses over Nostr. Covered previously as an open proposal, its payment-lookup work has now merged into the repository. The merged lookup_payment and BOLT12 specification defines payment lookup by transaction ID, invoice, payment hash, or payment-type-specific selectors, and adds draft, optional BOLT12 payment records and states.

    28:30 NWC adds client-initiated connections

    The merged client-initiated connection flow lets a client generate the connection secret, direct the user through HTTP confirmation or Nostr authorization, negotiate required and optional permissions, and receive the approved connection details. The change gives NWC clients and wallets a repository-hosted draft definition for creating a connection from the client side.

    29:02 NIP-23: Long-form Content

    NIP-23 (Long-form Content) standardizes long-form content on Nostr using addressable kind 30023 events, as defined in the canonical specification. Publishers gain an editable article identity while kind 1 remains the short-note format.

    32:39 NIP-92: Media Attachments Metadata

    NIP-92 (Media Attachments Metadata) standardizes metadata for media attachments through imeta tags in the canonical specification. It gives clients a common place to carry structured information about media associated with an event, allowing renderers and upload flows to exchange more than an unadorned media URL.

    37 min
  • Nostr Compass Podcast #39

    Max covers signed Git workflows, browser publishing, Nostr client updates, protocol implementation, and how URI links and event references work.

    Guests: nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt

    Newsletter 39 · Nostr Compass Android source

    0:00 Signed git workflows move CI, private repositories, and releases onto Nostr

    Max opens this edition’s nine recordings with the ngit v3 launch and its signed Git workflow over Nostr. ngit-grasp v3 adds private repositories through GRASP-08, while ngit-ci 0.1 carries CI instructions and results as signed Nostr events. Max discusses working privately before a public release and considers sharing spare CI capacity.

    3:13 nsite-clay makes browser publishing recoverable

    An August 31 signer-prompt fix, publication recovery, and September 2 editing controls make nsite-clay a browser publishing tool for a single-page site. A user edits the document object model in place, serializes the result, uploads it as a content-addressed Blossom blob, and republishes the site's NIP-5A manifest. No local build or server is required.

    4:53 NIP-A3 payment targets reach three clients

    From September 1–3, Amethyst, Grimoire, and Pollerama implemented NIP-A3 kind 10133 payment targets. Amethyst offers an opt-in handoff only when a compatible target exists and does not turn it into a zap; Grimoire uses a fixed registry before building wallet URIs; Pollerama validates Monero addresses and fetches the author's relay list before querying targets. Each client still needs an allowed payment method, a relay route, and an accurate display.

    5:16 Ditto expands Blossom fallback and mirroring

    Max explains how Ditto tries fallback Blossom servers when the preferred server is unavailable. He also discusses mirroring uploaded blobs so media can remain available through other servers.

    5:46 Nostr Implementation Possibilities

    NIP-01 clarifies limit: 0 as a live-only subscription: no stored events, an EOSE message, and continued delivery of matching new events. NIP-78 recommends NIP-42 authentication and author-only access for app data kinds 78 and 30078; this is not a confidentiality guarantee. The open NIP-AC proposal uses ephemeral WebRTC signaling events and kind 30600 discovery.

    8:08 NIP Deep Dive: URI Links and References in Event Text

    A Nostr identifier needs a transportable meaning before another application can open it. NIP-21 puts a NIP-19 identifier after the nostr: URI scheme, giving browsers, operating systems, and applications one dispatchable form. NIP-27 defines what that same URI means inside readable event content.

    8:28 URI dispatch and NIP-19 semantics

    NIP-21's grammar is nostr: followed by one NIP-19 bech32 entity. nsec is excluded because it encodes a private key. There is no authority, path, or query component, so a conforming link is nostr:npub1..., not nostr://npub1.... A platform or client may register as the handler; the specification does not choose the installed application or define a web fallback.

    10:35 NIP-27 rendering and optional tags

    NIP-27 uses nostr: URIs in readable event content so clients can render profile or event references. Max explains how a mention picker writes those URIs into signed content and how other clients display them. Optional p, e and q tags support indexing and relationships alongside the reference; displaying a mention alone does not require a notification.

    12:19 Trust, failure behavior, and client implementations

    note and nevent refer to immutable event ids, while naddr resolves an address whose event contents can change. Max discusses client choices for previews, profile metadata and URI handlers. He closes by thanking builders and inviting listeners to contribute through the Nostr Compass Logbook.

    15 min
  • Nostr Compass Podcast #41

    Max and Sam discuss FIPS mesh tools, private messaging, Nostr application releases, relay operations, custom emoji, and video events this week.

    Guests: nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt nostr:npub1yzfm42rzr3dj2h50flpvdl0uzrv22kv2y4ghve804w5xqu6lzqcqkyfxu5

    Newsletter 41 · Nostr Compass Android source

    0:00 Welcome and Nostr Compass Android app

    Max opens the asynchronous podcast and introduces the Nostr Compass Android app, which brings the newsletter, podcasts and voice-note contributions together.

    0:47 fips2go 0.7.0 keeps the mesh connected through bootstrap failures

    fips2go is an Android client that lets selected applications reach peers and services over the FIPS encrypted mesh. The new 0.7.0 release connects to three regional bootstrap peers by default instead of relying on one. It can also retry a configured peer at Nostr-advertised endpoints when its static address changes.

    1:43 fips-initramfs opens encrypted roots over FIPS before boot

    fips-initramfs is a Linux initramfs package that starts a FIPS mesh node before normal boot so an operator can remotely open a LUKS-encrypted root through its npub-addressed node. The user-submitted 0.1.0 release, published September 6, packages the mesh client, SSH access, and passphrase-entry scripts for systems that need unattended or remote encrypted-root startup.

    2:53 Grain 0.8.0-rc4 turns relay health into an operator dashboard

    Grain is a self-hosted Nostr relay with an integrated reference client and administration interface. Version 0.8.0-rc4 adds a live vitals panel for event volume, connections, uptime, storage, memory, and writer health, plus per-kind storage charts and reorganized access, policy, and retention controls.

    3:18 Marmot Protocol 0.10.4 makes local sends durable

    Marmot Protocol's MDK is an SDK for MLS-encrypted group messaging whose transport and discovery run over Nostr. Version 0.10.4 persists local sends before network completion, lowers draft and pending-message latency, prevents repeated automatic attachment downloads, and exposes retention state in chat-list previews.

    4:19 MintRadar makes Cashu mints easier to compare

    MintRadar is a privacy-focused Cashu dashboard that uses Nostr to discover mints and bind community reviews to signed identities. Its current source adds persistent NIP-87 mint announcements, same-operator detection from NUT-06 pubkeys, shareable comparison URLs, and Nostr naddr deep links.

    4:52 Nostr WoT Oracle 0.3.1 makes trust queries restart-safe

    Nostr WoT Oracle (maintainer Leon Acosta: nostr:npub1gxdhmu9swqduwhr6zptjy4ya693zp3ql28nemy4hd97kuufyrqdqwe5zfk) is a server that ingests public follow and mute events and answers bounded web-of-trust path queries. Versions 0.3.0 and 0.3.1 add independently persisted public mute evidence, readiness and ingestion status, revision-bound caches, deterministic replaceable-event selection, and rollback behavior that prevents unpersisted graph changes from becoming queryable.

    5:43 Nostr WoT SDK 1.0.2 compresses browser graph storage

    Nostr WoT SDK is a JavaScript toolkit for crawling, storing, and querying Nostr follow graphs in applications. Version 1.0.2 adopts a graph engine that batches up to 100 authors per relay request, stores edges with compact delta encoding, reuses compatible traversals, and exposes batch distance queries.

    6:19 napplet.soy publishes small sandboxed Nostr programs

    napplet.soy is a web playground and creator toolkit for building, publishing, playing, inspecting, and remixing small sandboxed Nostr programs called napplets. NIP-34 defines signed Nostr events for Git repository discovery and collaboration. The soyLI 0.18.2 release follows the project's September launch with signed listings, Blossom-hosted assets, Git and NIP-34 source references, and relay-discovered manifests.

    7:10 RelayKit installs a self-hosted Nostr stack

    RelayKit is a one-command installer for a self-hosted Nostr stack that can include relays, Blossom media, nsites, Git services, and notifications. RelayKit now packages a broader stack than the browser relay-discovery client covered in April; its current source repository documents the new operator-focused deployment surface.

    10:15 Threshold Sessions turns coding transcripts into private training data

    Threshold Sessions is a command-line tool that converts AI coding sessions into normalized, redacted, and encrypted training-data epochs. Its repository supports Codex, Claude Code, Cursor, OpenCode, and pi transcripts, stores encrypted artifacts on Blossom, and publishes signed references through Nostr.

    10:55 White Noise Android 2026.9.21 improves encrypted-chat reliability and sharing

    White Noise Android is a Nostr-based messenger for private Marmot-encrypted group conversations. Its September 21 release improves message delivery, voice dictation, text-to-speech, conversation navigation, account switching, and AMOLED appearance. It also adds shareable profile and invite QR cards and group actions from profiles.

    12:40 Nostr Mail Client 0.16.0 adds per-recipient delivery choices

    Nostr Mail Client (maintainer nogringo: nostr:npub1kg4sdvz3l4fr99n2jdz2vdxe2mpacva87hkdetv76ywacsfq5leqquw5te) is a web, desktop, and Android mail client that exchanges messages through Nostr relays while supporting conventional email delivery. Version 0.16.0 lets a sender choose SMTP or Nostr delivery for each recipient and strips location, capture time, and device metadata from photos and videos before upload.

    13:29 Amber 6.6.5 separates backup encryption from app permissions

    Amber (maintainer: nostr:npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5) is an Android signer that keeps Nostr private keys outside the applications requesting signatures or encryption. NIP-44 standardizes encrypted payloads between Nostr keys, while NIP-46 lets an application request signing and encryption from a remote signer over relays. Version 6.6.5 encrypts application backups with a dedicated key derived from the account key, preventing an application with remembered NIP-44 decryption permission from reading backup payloads that contain local keys or per-app NIP-46 secrets.

    14:00 Amethyst 1.16.0 hardens Blossom signing and adds BOLT12 offers

    Amethyst nostr:npub142gywvjkq0dv6nupggyn2euhx4nduwc7yz5f24ah9rpmunr2s39se3xrj0 is an Android Nostr client with media, wallet, and signer integrations. Version 1.16.0 fixes fast Blossom read authorization so concurrent media requests share one in-flight signer operation and recheck the token cache before asking for another signature. The tagged release also restores standard padded Base64 for Blossom auth tokens.

    14:46 Alby Extension 3.15.0 hardens website-initiated requests

    Alby Extension nostr:npub1getal6ykt05fsz5nqu4uld09nfj3y3qxmv8crys4aeut53unfvlqr80nfm is a browser wallet and Nostr signer that grants websites scoped Lightning and signing capabilities. Version 3.15.0 blocks website-supplied LNURLs from local or private network addresses, requires cross-host LNURL-auth confirmation, and removes remembered approval for raw Schnorr-signing methods.

    15:28 LaWallet NWC 2.7.1 unifies zap receipts across wallets

    LaWallet NWC nostr:npub1ek4262k6nv3l9axh403w2e66pzl2pqhhnjrhgv2wpzx2akak285scxv4pd is an open-source Lightning wallet service that exposes accounts to applications through Nostr Wallet Connect. NIP-57 standardizes signed Lightning zap requests and settlement receipts for Nostr profiles and events. Version 2.7.0 decouples that receipt publication from wallet-specific settlement paths so every supported NWC wallet can emit zap receipts, then 2.7.1 brings receive and activity screens onto the same receipt flow as sends.

    15:55 NoorNote 1.6.0–1.7.0 adds calendars and booking

    NoorNote (maintainer: nostr:npub175nul9cvufswwsnpy99lvyhg7ad9nkccxhkhusznxfkr7e0zxthql9g6w0) is a Nostr notes application with optional productivity modules and local reminders. Version 1.6.0 adds public and encrypted calendar events, month, week, and list views, Android reminders, and interactive timeline cards for shared events.

    16:22 Citrine 3.2.0 bounds relay-aggregator memory

    Citrine is an Android Nostr relay that gives other applications a local event store and relay interface. Version 3.2.0 streams matching events in batches, caps aggregator fan-out at 200 relays, and bounds caches to prevent large queries from exhausting memory.

    16:44 Wisp 1.2.4 routes threads through inbox relays

    Wisp (maintainer: nostr:npub1utx00neqgqln72j22kej3ux7803c2k986henvvha4thuwfkper4s7r50e8) is a privacy-oriented Nostr client with built-in Cashu and Lightning wallet support. NIP-22 defines generic kind 1111 comments that can reply to many kinds of Nostr content. Version 1.2.4 sends thread and notification reads only to inbox relays, treats those comments as replies, and lets users withdraw their full wallet balance on chain.

    17:14 nostr-wot-extension 0.8.3 adds scoped NWC connections

    nostr-wot-extension is a browser signer and identity extension with wallet payments and local web-of-trust analysis. Version 0.8.0 restores its experimental web-of-trust API as a menu-only opt-in with local, remote, and hybrid query modes, scalable graph synchronization, mute-aware scoring, and per-account storage controls.

    18:32 pakstr 0.22.0–0.24.0 adds Android signer handoff

    pakstr packages web applications with native Nostr capabilities. Last week's issue covered its 0.21.x packaging sequence. The new 0.22.0 release adds NIP-55 signing through the NIP-46 bunker, letting an Android application hand signing requests to an external signer.

    19:18 Nail 0.2.2 makes mail attachments fail soft

    Nail nostr:npub1qu7dsd44275lms4x9snnwvnnmgx926nsppmr7lcw9dlj36n4fltqgs7p98 is a bridge and application that carries Nostr messages into email workflows. Version 0.2.2 retries a message without attachments when a relay refuses the attachment payload, adds a size ceiling to prevent bridge restarts, and changes the default bridge relay.

    19:45 Mostro CLI 0.16.2 removes its legacy chat transport

    Mostro CLI nostr:npub1m0str0d7z2ww8rdh20t2n9lx520xjwhaq24p68umqp06wwrwtsnqen40un is a terminal client for coordinating peer-to-peer Bitcoin trades through Mostro's Nostr protocol. Version 0.16.2 removes the version-one gift-wrap dual-read and dual-write path, migrates peer chat to the current envelope, and lets a trader reach the solver through dispute chat.

    20:17 Dart NDK dev.4–dev.5 adds signed app updates and hardens relay delivery

    Dart NDK (maintainer: nostr:npub1xpuz4qerklyck9evtg40wgrthq5rce2mumwuuygnxcg6q02lz9ms275ams) is a Dart client library for relay connections, signing, caching, wallet operations, and Nostr application state. NIP-82 standardizes signed application-release metadata and downloadable artifacts. Version 0.10.0-dev.4 adds NIP-82 application-update support; dev.5 makes Cashu quote recovery resumable and lets a broadcast declare the identity to which it may be attributed.

    20:49 BitBlik 0.11.0 brings disputes into the app

    BitBlik nostr:npub1k3g092rlzvn7nftz3jte9pkx63zp705nh78r6hjpjm55fjg7r2cqx8stj3 is a mobile peer-to-peer Bitcoin trading client that coordinates orders and chat over Nostr. Version 0.11.0 adds coordinator dispute chat, BOLT12 payouts where supported, Android self-updates sourced from NIP-82 release events, and wallet backup and recovery fixes.

    21:11 Scramble 0.7.2 changes MLS engines and offers two Android views

    Scramble is a Nostr-based encrypted group-chat application. Its 0.7.0 release replaces the former MLS engine with Dark Matter, restores encryption at rest for group state, and prevents Android cloud backup of the profile database. The migration has an important limit: groups created in 0.6.x do **not** appear after upgrading, although the account key, contacts, relays, and signer pairing remain.

    22:19 Morganite 0.0.5 makes onion Blossom media seekable

    Morganite is an Android Blossom media cache for Nostr clients. Version 0.0.5 fetches blobs from Tor .onion Blossom servers with Tor-aware retries and honors HTTP Range requests on a cache miss. A player can seek into an uncached video while Morganite fills the full cache in the background instead of storing only disjoint requested slices.

    22:43 Bitcredit 0.5.16 recovers stalled Nostr bill events

    Bitcredit E-Bills nostr:npub1eajvs8x67vmzsnwaf9ltfgt59e6acmeztx9shduewvfgwftx8ahsagcd93 carries bill, company, and identity chains through Nostr events. Version 0.5.16 repairs event-signature serialization compatibility after its Nostr 0.45 dependency upgrade, exposes failed resend-queue entries for inspection and requeue, and resynchronizes missing chain metadata before retrying a block publication. Those changes target both upgraded-data compatibility and messages that would otherwise remain stuck.

    23:24 fips-ts 0.0.43 protects concurrent FIPS sessions

    fips-ts (maintainer: nostr:npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk) supplies the shared TypeScript FIPS mesh runtime used by compatible clients. Its runtime 0.0.43 release preserves an authenticated identity when concurrent setup or an aliased WebRTC transport hands a session over, while rejecting a different identity. It also prevents canceled negotiations and late callbacks from replacing a working connection.

    23:59 Bookshelf 0.1.25 makes signed book reviews editable

    Bookshelf (organization Decent Newsroom: nostr:npub1ez09adke4vy8udk3y2skwst8q5chjgqzym9lpq4u58zf96zcl7kqyry2lz) is a Nostr-connected Android reader with community book ratings and private highlights. Version 0.1.25 lets readers revise their signed rating and written review through a durable outbox. The app displays cached ratings immediately, refreshes them online, and replaces older revisions by the newest event for the same book and author.

    24:34 Cordn 0.5.0 queues encrypted messages offline

    Cordn (maintainer: nostr:npub1atv4akyv986nswm4f87zdspfgehzgsva82l5jsd2k3dzgrtzpagssl84q8) is an encrypted Nostr group-chat client. Version 0.5.0 queues text sends in a durable offline outbox, makes failed entries terminal until a successful confirmation sweep, and resumes coordinator chats in order. It also checks a signer's NIP-44 capability before offering an encrypted action, surfacing unsupported signers instead of failing silently.

    25:00 21Meetup 1.6.6 restores multi-hop trust paths

    21Meetup nostr:npub1rl4wlgapxcapk0p3242kqcw7az584sjxgssuwh38u2gatk0cwewsudjz85 issues Nostr-backed attendance badges for in-person events. Version 1.6.6 restores second- and third-degree trust paths by fetching contacts' meetup records in bounded stages. Failed badge publications can be retried, and a send counts as successful only after a relay acknowledges it.

    25:29 TWENTY ONE Companion 1.13.0 explains public Nostr RSVPs

    TWENTY ONE Companion nostr:npub1pt0kw36ue3w2g4haxq3wgm6a2fhtptmzsjlc2j2vphtcgle72qesgpjyc6 combines Nostr rooms and articles with meetup listings. Version 1.13.0 saves pinned rooms and articles to relays, showing a pin as local until a relay confirms it. Eligible meetup RSVPs are signed public Nostr events; the app warns that third-party relays may retain them even after a user declines.

    25:56 Armada 0.61.0 adds media privacy and member controls

    Armada is a Nostr-based encrypted community client. Version 0.61.0 adds an opt-in image proxy list so a sender's media host need not learn a reader's address. Staff can kick, ban, or unban a member from a profile card, and a private-channel key granted with a role now applies without a separate invite.

    26:30 Ditto 2.40.0 brings Top 8 rankings to Nostr profiles

    Ditto nostr:npub10qdp2fc9ta6vraczxrcs8prqnv69fru2k6s2dj48gqjcylulmtjsg9arpj is a social client on Nostr. Version 2.40.0 lets a user rank eight favorite people on their profile. Reordering stays local until Save, then the ranked list appears on the profile and its update can appear as a card in followers' feeds.

    26:53 XM Arcade 1.1.3 binds mini-app approval to one run

    XM Arcade runs small games and mini-apps within a Nostr group context. Version 1.1.3 binds a post approval to an opaque run token, the request, app, account, group, and channel. Expired or replayed approvals no longer authorize another mini-app run.

    27:34 Zzub 0.0.15–0.0.16 expands mobile project boards

    Zzub is a Nostr-based project and code-review client. Its 0.0.15 release adds status columns, sorting and filtering, threaded comments, named assignees, and approve or request-changes actions to its phone boards. A built-in Git client opens source and files-changed diffs from a pull-request card, bringing the existing desktop review flow onto the phone.

    28:15 Table Mesh 0.1.0 brings Nostr game discovery to offline board games

    Table Mesh 0.1.0 is a first Android release for playing board games across nearby phones over Bluetooth and local Wi-Fi. It includes *Mensch ärgere Dich nicht* and solo bots. A Nostr kind-7529 catalog distributes additional sandboxed game modules through Blossom, with downloaded bytes checked against their announced hashes.

    28:57 0xchat merges fixes for signing, message-authentication, and redirect flaws

    0xchat's merged security PR addresses four audit findings in its Nostr and Cashu application code. It limits Cashu P2PK witness signing to keys actually authorized by a lock, rejects unsealed gift-wrap contents except MLS Welcome events, accepts infrastructure host-map configuration only from the trusted server key, and requires consent before an embedded web page can call NIP-07 signing or read relay settings.

    29:17 nos2x-fox closes a PIN exposure path

    nos2x-fox is a Firefox extension that offers Nostr signing to websites. A merged access-control fix stops a website from asking the extension background for the cached PIN that derives its private-key encryption key. The page bridge now forwards only allowed request types, and the background rejects privileged requests unless they originate from an extension page.

    29:54 nostream publishes relay health events

    nostream is a Nostr relay implementation that also runs a relay monitor. Its merged NIP-66 work publishes signed relay-discovery and monitor-announcement events after a probe, giving other clients a way to find the monitor's measurements through Nostr. NIP-66 defines relay-discovery and monitor events so relay status can be shared in a common format.

    30:24 nostter ties remote signing to the active session

    nostter is a web Nostr client for reading and publishing through relays. Its NIP-46 connection lifecycle now belongs to the authenticated session's signer, so a failed login or session reset can dispose of the remote connection instead of leaving a module-global signer behind. NIP-46 lets a client ask a separate signer to approve cryptographic operations over Nostr.

    30:43 Zap Cooking publishes image descriptions and blocks secret-key searches

    Zap Cooking is a Nostr recipe and long-form publishing site. Its NIP-92 image-description work lets authors write alternative text for images in notes, replies, recipes, articles, and products, then carries that text in imeta tags that other clients can render. NIP-92 standardizes media metadata attached to Nostr events, including image descriptions.

    31:05 Divine Mobile reconnects idle relay subscriptions

    Divine Mobile (maintainer rabble: nostr:npub1wmr34t36fy03m8hvgl96zl3znndyzyaqhwmwdtshwmtkg03fetaqhjg240) is a short-video client that publishes and reads Nostr events. A merged relay fix reconnects after an idle timeout or remote closure, including subscriptions that only receive data and never send another request to trigger recovery. That restores a path used by direct-message inboxes and moderation labels after a connection drops.

    31:30 Conduit uploads product images through Blossom

    Conduit is a Nostr-based marketplace with merchant publishing tools. Its merged image-upload work lets merchants add product images from desktop or mobile through a configured Blossom server while keeping product publication separately signed. Blossom is a media-storage protocol that uses Nostr identities to authorize uploads and let applications retrieve files.

    31:52 Buzz adds authenticated relay moderation controls

    Buzz nostr:npub16l0ck0s5zened29dsaqtqm6z0t4fmk2mwtszw64fz7fppcnls8mss3yj9s includes a Nostr relay and community administration tools. Its merged relay-admin routes let authorized operators list active bans and timeouts and lift them through a signed HTTP request. NIP-98 defines Nostr-event authorization for HTTP calls, allowing the relay to verify who made the administrative request.

    32:12 ContextVM SDK shortens publish waits and repairs streams

    ContextVM SDK nostr:npub1dvmcpmefwtnn6dctsj3728n64xhrf06p9yude77echmrkgs5zmyqw33jdm is a TypeScript toolkit for applications that exchange signed requests and streams over Nostr relays. Its relay-pool change sends an event to every connected relay but, by default, finishes the caller's wait after the first positive acknowledgement; applications that need all acknowledgements can still request that mode. One slow relay no longer determines the normal publish wait.

    32:44 Mostro preserves an order's original creation time

    Mostro is a peer-to-peer Bitcoin exchange coordinator that publishes orders over Nostr. Its merged kind 38383 change adds a stable created_at tag from the order record, allowing clients to sort or age an order by when it was opened instead of by its latest status revision. NIP-69 defines the Nostr order format used by interoperable trading clients.

    33:11 Amethyst implements DECK-0003 objects and encrypted bag search

    Amethyst's merged DECK-0003 work reads and renders Simple Nostr Objects, a JSON 3D-mesh format carried in Nostr events. It supports kind 11333 avatars, kind 3330 shards, and opening encrypted kind 33330 region bags from a location hint. CLI commands parse and verify objects or calculate the bounded search needed to open a bag.

    33:59 Amethyst broadens MLS interoperability and repairs desktop group rendering

    Amethyst's Quartz library now lets callers choose an MLS group ID and omit Marmot-only required capabilities when interoperating with other MLS stacks. Separate merged changes allow extensions supported by every group member, carry authenticated application-message data, and set an optional key-package lifetime. The Marmot defaults remain unchanged; these are shared-library capabilities, not a claim that every client UI exposes them.

    34:44 nostter gates signing and private reads on real capabilities

    Continuing the session-owned NIP-46 work above, nostter's merged signer migration checks for an actual signer before offering write actions instead of treating every logged-in session as writable. Private bookmarks now require NIP-04 or NIP-44 decryption capability, and remote-signer settings require NIP-44 support. A read-only or anonymous account can still use non-writing profile actions.

    35:07 Pensieve makes archive reconciliation bounded and durable

    Pensieve's archive receipt work (maintainer: nostr:npub1zuuajd7u3sx8xu92yav9jwxpr839cs0kc3q6t56vd5u9q033xmhsk6c2uc) waits for actual durable event markers before declaring a reconciliation attempt complete, retaining unresolved IDs across recovery. The sealing change separates periodic archive durability from optional Parquet publication, and the bounded inventory scans sealed segments with explicit limits and a persisted cursor.

    35:28 MDK reduces repeated replay work for parked encrypted messages

    MDK's merged replay fix addresses work repeated after a publish confirmation, publish failure, or group join when messages remain parked because they cannot yet be decrypted. The previous path classified each row's lineage again and rewound group state for each row and retained anchor. The new deferred-sweep ingest path skips redundant classification and shares a group-scoped cache of historical contexts, invalidating it when canonical state changes.

    35:46 NIP-02 clarifies petnames in follow lists

    NIP-02 (Follow List) standardizes the kind 3 event that records whom an account follows and can attach a local petname to each followed key. The merged petname clarification allows display-safe characters while preserving the field as a user's local label, not a globally verified name.

    36:04 NIP-86 adds clear and list methods for relay management

    NIP-86 (Relay Management API) standardizes authenticated administrative calls for banning, allowing, inspecting, and configuring a relay. PR #2477, merged September 23, adds methods for clearing pubkeys or events from both allow and ban lists and for listing roles, allowed events, and disallowed kinds, including behavior already present in the khatru relay framework and the go-nostr library.

    36:21 NIP-69 proposes a stable creation time for trading orders

    NIP-69 (Peer-to-Peer Trading) standardizes addressable order events that let multiple trading applications share buy and sell liquidity. PR #2476 proposes an optional creation-time tag that stays fixed across status updates, so a returned or republished order retains its original age even when a newer event records a status change.

    36:45 NIP-A3 proposes proof of payment-address ownership

    NIP-A3 (Payment Targets) lets an account publish portable payment addresses for multiple networks in one replaceable event. PR #2475 proposes an optional signature made by the payment address's own key, giving compatible address types a proof that binds the destination to the Nostr author while treating missing proofs as neutral.

    37:13 BUD-16 proposes deterministic directory manifests

    BUD-16 is an open Blossom proposal for grouping content-addressed blobs into named directory trees with reproducible manifest hashes. The draft defines deterministic MessagePack encoding, named links, metadata, optional encryption keys, and .bdir path resolution while leaving servers to store ordinary blobs.

    37:49 Marmot adds encrypted group polls

    Marmot Protocol defines interoperable application events inside MLS-encrypted groups carried over Nostr. NIP-88 defines poll questions and signed response events. Merged MIP work recognizes those polls inside a group while keeping relay selection bound to authenticated group routing and explicitly stating that they are not anonymous or election-grade.

    38:28 Marmot merges group reports and admin deletion

    Marmot group moderation defines encrypted report, dismissal, and administrator-deletion events that converge under the group's authenticated state. The proposal covered last week has now merged, fixing a status transition that lets implementations align report review and message removal against the accepted specification.

    38:59 NWC-13 proposes connection budget queries

    Nostr Wallet Connect lets an application request narrowly scoped wallet operations through encrypted Nostr events. NWC-13 proposes a separate get_budget permission and response so an application can inspect used, total, and renewal allowance without receiving permission to read the wallet's balance.

    39:31 NIP-30: Custom Emoji

    NIP-30 (Custom Emoji) standardizes how a signed event maps readable :shortcodes: to image URLs, with an optional address that points to a reusable emoji set. The specification permits letters, numbers, hyphens, and underscore (_) characters in a shortcode and applies the mapping to profiles, short text notes, comments, reactions, and live activities. NIP-51 defines public and private list formats, including the kind 30030 parameterized replaceable events that hold named emoji sets.

    41:54 NIP-71: Video Events

    NIP-71 (Video Events) standardizes Nostr events for horizontal and short-form video, including playback metadata, alternate files, captions, chapters, participants, and imported-source provenance. The canonical specification assigns kinds 21 and 22 to immutable horizontal and portrait video posts, while kinds 34235 and 34236 use a d tag to create addressable videos whose metadata can be updated under a stable coordinate. Each imeta tag describes one playable variant with a URL and media type plus optional dimensions, hash, preview image, fallback, service, bitrate, and duration.

    43:39 Closing and Nostr Compass app

    Max thanks the builders and contributors, and invites listeners to join the asynchronous podcast through the Nostr Compass Android app.

    45 min
  • Logbook Episode 38
    A weekly briefing on the people, software, and protocol work shaping Nostr.
    ### Chapters
    - **0:00 — Episode intro**
    - **1:17 — Voca 1.0 reads verified Nostr notes and subscriptions aloud on Android**
    - **3:06 — nostream expands relay-side DVM routing and authenticated operation**
    - **3:32 — NDK for Dart fixes negentropy, multi-relay request lifetimes, and signature verification**
    - **4:11 — Divine Mobile makes wrapped direct-message deletion and signing deterministic**
    - **5:01 — Conduit Relay hardens its NIP-42 protected inbox**
    - **5:40 — Amethyst ships NIP-84 highlights and fixes two relay-facing failure paths**
    - **7:19 — Mostro validates signed orders before expensive work and preserves order audit events**
    - **8:23 — Napstr publishes audio catalogues on Nostr and transfers files over Tor**
    - **10:38 — MDK v0.9.17: newest KeyPackages, membership activity, and durable sends**
    - **11:36 — pakstr v0.16.0: kind-32267 identifiers on publish**
    - **11:54 — Zap Cooking scopes bunker relays and signs paid endpoints**
    - **12:53 — nostrord repairs wrapped DMs and shared event links**
    - **13:42 — Nostr Implementation Possibilities**
    - **15:09 — Nostr Wallet Connect**
    - **15:35 — NIP Deep Dive: Reposts and Reactions**
    - **15:46 — Reposts (NIP-18)**
    - **17:56 — Reactions (NIP-25)**
    - **20:51 — Current client implementations**
    - **21:30 — How They Work Together**
    23 min
  • Nostr Compass Podcast #37
    ### News
    - **00:00 Intro**
    Welcome to Nostr Compass Podcast #37 covering Postr, Nail's key-free mail notifier, Chama's escrow timer defect, Snort and Ditto NIP-22 reply rollout, and Six Years of Nostr Augusts.
    - **00:12 Postr launches as a small Android composer**
    Postr 1.0.0 is a deliberately small Android composer for kind 1 notes with NIP-55 Amber custody, a durable outbox, account-specific private drafts, and Blossom attachments with verified hashes. Publication uses NIP-65 write relays plus encrypted bootstrap relays, with a NIP-34 repository announcement on relay.ngit.dev.
    - **01:25 Infans encrypts family tracking and co-parent sync over Nostr**
    Infans is an Android baby tracker publishing encrypted kind 30078 NIP-78 events for partner sync under d-tag baby-tracker-sync and self-backups under baby-tracker-backup, with co-parent async notes inside the partner payload.
    - **02:03 walls.rip Ghost Chat brings PGP-encrypted chat to public Nostr relays**
    walls.rip Ghost Chat creates OpenPGP identities in the browser, encrypts messages to recipient public keys, and publishes armored ciphertext as kind 1 events to five default relays with room tags derived from PGP fingerprints.
    - **02:34 pakstr 0.13.0 through 0.15.0 makes Zapstore publication explicit**
    pakstr 0.13.0 through 0.15.0 repairs Blossom authorization with base64url and Content-Digest, validates the Zapstore publisher in 0.14.0, and writes listing metadata onto kind 32267 application events with release notes in kind 30063 content.
    - **03:28 Heterodyne specifies portable personas and encrypted social communication**
    Heterodyne composes Nostr signed events, Radicle storage, Marmot MLS group messaging, and KERI key-event logs into draft specifications for portable personas, encrypted comms, and social interaction layers.
    - **21:06 Six Years of Nostr Augusts**
    Nostr Compass #37 closes with an August retrospective from empty August 2021 through 2022 NIP-25 reaction generalization, 2023 NIP-19 naddr coordinates, 2024 addressable-event terminology, 2025 external-content reactions, and 2026 NIP-22 comment rollout in Snort and Ditto.
    ### Releases
    - **04:25 Nostr Java v2.0.8: subscription isolation and portable NIP-44**
    Nostr Java v2.0.8 routes EVENT, EOSE, and CLOSED to the named subscription instead of every listener, and makes NIP-44 use BouncyCastle's lightweight ChaCha20 engine without requiring process-wide JCE provider registration.
    - **05:32 NoorNote v1.3.6: profile statuses and classified listings**
    NoorNote v1.3.6 shows NIP-38 kind 30315 user statuses under profile NIP-05 names and renders NIP-99 kind 30402 classified listings throughout the app.
    - **06:21 nostrord v2.9.0: relay-scoped group state and media**
    nostrord v2.9.0 scopes NIP-29 leave and delete markers per relay, treats rejected duplicate joins as success, renders markdown image embeds, and adds NIP-17 kind 15 file rumors in direct messages.
    - **07:23 Nail v0.1.0: an Android client and a key-free arrival watcher**
    Nail v0.1.0 adds a Capacitor Android app for mailstr.app and a UniFFI notifier crate that subscribes for kind 1059 NIP-59 gift wraps tagged #p without holding key material, fetching the last two days by wall clock because NIP-59 backdates created_at up to two days.
    - **08:40 MDK v0.9.14 and v0.9.15: KeyPackage selection, epoch-gap recovery, and split relay roles**
    MDK v0.9.14 batches and prewarms KeyPackages for invites; v0.9.15 selects the newest valid KeyPackage, arms epoch-gap recovery before publish gates, separates directory discovery from operational relays, and classifies empty admin policy as admin depletion.
    - **10:40 Zeus v13.2.0: wallet-connect budgets, races, and secret rotation**
    Zeus v13.2.0 counts pending NIP-47 payments against connection budgets including routing and melt fees, serializes pay_invoice handling, rotates client secrets on relay change, and repairs lookup and transaction-list reconciliation.
    - **11:20 NYM: post-quantum private messages and threads in channels**
    NYM v3.74.533 adds post-quantum encryption to private and group messages, v3.75.543 adds message threads across channels and DMs, and v3.73.530 adds Bluetooth mesh in supporting browsers.
    - **12:03 diVine 1.0.22: relay and signer lifecycles that end when the session does**
    diVine 1.0.22 closes relay and NIP-46 signer connections on sign-out, releases subscription slots after bounded reads, stops retrying terminal NIP-04 DM duplicates, and lets recipients remove unwanted badges.
    - **12:32 Chama v6.0.1: a 32-bit timer that emptied every browser escrow**
    Chama v6.0.1 fixes a Fedimint browser 32-bit timer wrap that made 90-day ecash escrow deadlines read as immediate, returning funded sats to funders while Nostr trade state still displayed as locked.
    ### Project Updates
    - **14:46 Shopstr keeps remote-signer and wallet secrets out of browser storage**
    Shopstr stops writing NIP-46 bunker secrets and full NIP-47 wallet-connect strings to localStorage, keeping them in runtime memory and deleting legacy stored copies on read.
    - **15:14 Routstr verifies relay-sourced provider discovery**
    Routstr SDK now verifies relay-delivered provider announcements, model lists, and reviews before ranking, drops events more than fifteen minutes ahead of local clock, and fails closed when trusted reviews are unavailable.
    - **15:47 nostr-tools binds gift-wrap rumors to their seals**
    nostr-tools requires kind 1059 wraps, kind 13 seals with valid signatures, and matching rumor and seal pubkeys when unwrapping NIP-59 events, skipping hostile wraps in batch unwrap instead of aborting the query.
    - **16:19 Haven adds signed relay administration and a local notes browser**
    Haven exposes NIP-86 management calls authenticated with NIP-98 owner events, adds a read-only notes browser that keeps encrypted kinds opaque, and fixes a default-LMDB event-count loop.
    - **16:59 Amethyst moves Blossom authorization off image-loading threads**
    Amethyst starts Blossom read authorization signing off OkHttp dispatcher threads, awaits one shared signature per host for gated images, and aligns token encoding with BUD-11 Base64url without padding.
    ### NIP Updates
    - **17:31 NIP-22 comment-thread rollout for ordinary text replies — Open**
    Snort now writes every reply as kind 1111 NIP-22 comments with uppercase root tags, and Ditto publishes text replies as kind 1111 and voice as kind 1244, while NIP-30 now lists kind 1111 among events that may carry emoji tags.
    - **17:46 NIP-47 pay_invoice fee-ceiling proposal — Open**
    An open NIP-47 amendment adds optional max_fee millisatoshi ceiling to pay_invoice with FEE_LIMIT_EXCEEDED when routing cost exceeds amount + max_fee and required fees_paid in responses.
    - **18:07 NIP-32 language-label proposal — Open**
    An open NIP-32 proposal standardizes `["l", " ", "lang"]` author-declared language labels so relays can filter with #l without post-download detection, migrating examples in NIP-66, NIP-68, and NIP-71.
    - **18:27 NWC-09 lookup_payment and NWC-12 BOLT12 details — Open**
    Open NWC-09 defines optional lookup_payment beside NIP-47 core with wallet-scoped selectors and common result envelopes, and NWC-12 adds BOLT12 offer and payment details reusing that envelope.
    - **18:59 NAP-DISPLAY draft — Open**
    NAP-DISPLAY proposes display.list and display.push so napplets request pixel displays the host policy allows, with runtime validation before any batch changes hardware state.
    - **19:43 Marmot same-account enrollment experiment — Open**
    An open Marmot experiment replaces the withdrawn External Commit draft with bounded same-account Add and Remove Commits, QR pairing via marmot-pairing-v1:, local kind 453 proofs, and kind 452 Welcome acknowledgements for KeyPackage recovery.
    30 min
  • Nostr Compass Podcast #36
    ### News
    - **00:00 Intro**
    Welcome to Nostr Compass Podcast #36 covering Amber relay-auth hardening, Citrine phone relay hosting, Nail email bridge, six open NIPs proposals, and deep dives on NIP-58 badges and NIP-22 comments.
    - **00:17 Amber 6.5.0 closes a relay-auth confused deputy and encrypts stored secrets**
    Amber 6.5.0 closes a NIP-42 confused deputy that let callers obtain kind 22242 auth events for unapproved relays, fixes NIP-46 replay, envelope-encrypts stored secrets, and adds caller authorization, fail-closed permission parsing, and secure QR screens. 6.5.1 re-encrypts on Keystore rotation; 6.5.2 debounces relay status and warms the account cache.
    - **01:35 Cambium 0.4.0 signs for websites and sheds relay-auth bursts**
    Cambium 0.4.0 adds website signing through validated nostrsigner: callbacks without inheriting native app permissions, fixes minimal-event signing, and moves rust-nostr from 0.44.2 to 0.44.8 for spec-following NIP-46 connect responses. 0.4.1 through 0.4.3 reserve queue slots ahead of relay auth, deduplicate kind 22242 signatures, and add per-identity authentication cooldowns.
    - **03:00 Citrine 3.1.0 turns a phone relay into a group host and a site host**
    Citrine 3.1.0 adds NIP-29 group hosting, NIP-86 relay management with a settings screen, and NIP-5A static websites with a modernized browse list defaulting to nsite.run, nos.lol, and nostr.land. The release adds author purge on ban, configurable REJECTED_KINDS, rebroadcast to external relays, and database-backed logs.
    - **07:36 Vector 0.4.2 makes community moderation survive a spam wave**
    Vector 0.4.2 queues rapid bans into one key rotation, explains dissolved-community invitations, and stops catch-up messages from ringing as new notifications. Cross-client review with Armada fixes sharded community list tie resolution, and mutes now apply across channels and DMs while syncing blocks, mutes, and nicknames between devices.
    - **09:31 Sonar brings threaded replies to a mesh messenger with NIP-C7**
    Sonar 0.1-alpha.13.1 adds Signal-style replies on NIP-C7 kind 9 chat with mentions, bounded Bluetooth reassembly, mesh-path signature verification, and FCM push fallback. 13.2 and 13.3 fix chat-open crashes and iOS keyboard overlap.
    - **10:17 Nostria starts publishing podcasts and asks relays to count**
    Nostria 4.1.70 and 4.1.71 add podcast publishing for premium subscribers as signed Nostr events. 4.1.69 uses NIP-45 COUNT for reaction, reply, and zap totals in feeds.
    - **21:22 Nail brings email onto Nostr as gift-wrapped events**
    Nail from the Formstr team launched at mailstr.app with kind 1301 mail rumors inside kind 1059 NIP-59 gift wraps, NIP-17 inbox delivery, NIP-32 folder labels, and Blossom attachments over 60,000 bytes. Its Node LMTP bridge grades incoming mail into four provenance states and authenticates API calls with NIP-98.
    - **31:45 Glow stores wallet labels on relays under a passkey-derived identity**
    Glow derives a Nostr identity from passkey login and lists or saves wallet labels to relays under that identity, collapsing byte-identical duplicates across partial relay coverage.
    ### Releases
    - **11:13 MDK 0.9.14: fail-closed group history through faster group creation**
    MDK 0.9.12 makes missing fork anchors a hard error in PR #1329, persists leave proposals atomically in PR #1360, and refuses to guess manifest-less incident replay in PR #1140. 0.9.13 adds storage format v2 in PR #1421, and 0.9.14 adds pre-uploaded founding images in PR #1498 with KeyPackage batching in PR #1494.
    - **13:58 Divine Mobile 1.0.20: minting a badge without leaving the app**
    Divine Mobile 1.0.20 lets users mint and award NIP-58 badges in-app and explains earning requirements when a reader taps a profile badge, alongside light theme, stop-motion editor tools, and screen-reader support.
    - **15:05 ClipRelay 0.2.0: pairing a signer with a camera**
    ClipRelay Android 0.2.0 adds nostrconnect:// QR login and camera scanning of bunker URLs, with a sixty-second bunker timeout and restored Amber retry. Desktop 0.2.0 carries the same timeout and login-tab fixes.
    - **16:20 Bark 1.3.9: a browser signer that runs on Android**
    Bark 1.3.9 declares Android support for Firefox with tab-based approval when popups are unavailable, verified on GrapheneOS with Firefox 153.0.4. 1.3.8 limits Heartwood dialect probes to Heartwood-identified signers so standard sign_event calls reach rust-nostr bunkers.
    - **17:20 Bray 3.0.0 and Toll Booth 6.0.0 move to a shared wallet-connect library**
    Bray 3.0.0 and Toll Booth 6.0.0 adopt nwc-kit for NIP-47 payments with reproducible byte-identical builds across two independent runners. Toll Booth 6.0.1 through 6.1.2 pin deploy host keys and restore image builds.
    - **17:53 NoorNote 1.3.4: joining encrypted communities from an invite link**
    NoorNote 1.3.4 adds encrypted Armada and Concord community joins through invite links with activity notifications, plus controls for hiding external quote posts globally or per author.
    - **18:27 Mostro moves dispute chat off gift wrap**
    Mostro Mobile 1.3.2 migrates dispute chat from NIP-59 gift wrap to kind 14 chat envelopes with durable per-conversation cursors. mostro-core 0.14.5 serializes the rumor identifier inside the gift wrap in PR #164.
    - **19:28 NYM 3.73.522: encrypted group chats and an encrypted local store**
    NYM 3.73.522 encrypts the local SQLite store after 3.73.521 refines encrypted group chat and 3.73.520 fixes content-security-policy and duplicate-message presentation.
    - **19:55 Morganite 0.0.4: verifying a blob before it is cached**
    Morganite 0.0.4 verifies Blossom blob hashes in a single pass before caching, tracks cache size incrementally, moves blocking network calls off the main thread, and persists logs to a local database.
    ### Project Updates
    - **32:43 Amethyst rebuilds its relay authentication decision flow**
    Amethyst merged PR #3899 redesigning NIP-42 permissions and decision flow, PR #3905 waiting for challenge resolution, PR #3931 defaulting new accounts to always authenticate, and PR #3906 recognizing NIP-29 groups and Concord communities as joined venues.
    - **34:05 nostrord implements an unmerged encryption-key proposal**
    nostrord merged NIP-4e encryption-key support in PR #261 with kind 10044 keys held locally, device pairing over kinds 4454 and 4455 in PR #247, and relay-scoped group identifiers in PR #269 and PR #272.
    - **36:08 nostream adds a relay monitor and mints invite codes**
    nostream merged NIP-66 relay monitoring in PR #724, NIP-43 invite-code minting in PR #732, and NIP-13 proof-of-work advertisement in PR #680, plus NIP-90 job persistence in PR #727.
    - **37:05 rust-nostr fixes a gift-wrap identifier and rejects protected reposts**
    rust-nostr PR #1444 computes the rumor identifier before gift-wrap encryption, PR #1445 rejects reposts of NIP-70 protected events, and PR #1450 tolerates missing NIP-47 response amounts.
    - **37:44 NDK adds post-quantum direct messages and drops a GPL dependency**
    NDK PR #713 adds hybrid post-quantum direct-message encryption with ML-KEM-1024 alongside classical key agreement, and PR #712 replaces a GPL-3.0 Dilithium implementation with fips204.
    - **38:25 Nostter adds bookmark lists, profile badges, and Blossom uploads**
    Nostter merged NIP-51 bookmark list shapes in PR #2311, NIP-58 profile badge handling in PR #2281, Blossom uploads in PR #2298, and NIP-05 mention autocomplete in PR #2303.
    - **38:50 Zap Cooking binds admin routes to signed requests and encrypts stored wallet connections**
    Zap Cooking PR #622 encrypts stored NIP-47 connection strings with NIP-44, PR #626 replaces spoofable admin pubkey checks with NIP-98 authentication, and PR #627 clears account data on logout.
    ### NIP Updates
    - **39:20 NIPs PR #2438 proposes NIP-9A, comment-based patching — Open**
    PR #2438 proposes NIP-9A where kind 1111 comments beginning with PATCH edit target content or tags on kinds 1, 11, 1111, 24, and 1621 with size and age limits.
    - **40:44 NIPs PR #2437 proposes file encryption for NIP-94 — Open**
    PR #2437 adds optional encryption-algorithm, decryption-key, and decryption-nonce tags to NIP-94 kind 1063 file metadata so Blossom hosts cannot read encrypted bytes.
    - **41:56 NIPs PR #2436 amends NIP-7D — Open**
    PR #2436 amends NIP-7D forum threads to allow kind 1-style formatting or Djot markup on kind 11 thread posts.
    - **42:27 NIPs PR #2439 adds assign and unassign methods to NIP-86 — Open**
    PR #2439 adds assign and unassign methods to NIP-86 so relay administrators can grant admin permissions without sharing the master key.
    - **42:43 NIPs PR #2442 succeeds the audio-track proposal — Open**
    PR #2442 ships kind 31337 track events and kind 31339 release objects in production at lightning.fm with optional NIP-57 zap splits.
    - **43:20 Marmot PR #416 merged on 13 August and adds a durability and restart contract to the protocol core — Merged**
    Marmot PR #416 merged 13 August and defines recoverable logical facts, restart equivalence, publish and convergence interruption boundaries, and crash conformance scenarios without wire encoding changes.
    - **44:52 Concord PR #18, covered previously in last week's issue as an open proposal, has now merged on 15 August — Merged**
    Concord PR #18 merged 15 August, sharding the encrypted community list across kind 33302 events, removing the fifty-membership limit, and pruning retired entries to stay within relay size limits.
    - **45:18 Concord PR #22 proposes community-owned audio and video brokers — Open**
    Concord PR #22 proposes optional av_brokers on CORD-02 metadata with CORD-07 rendezvous drawing from community brokers or member-owned fallbacks.
    - **45:38 Concord PR #23 makes an existing implementation behavior normative in CORD-05 — Open**
    Concord PR #23 makes CORD-05 require that the owner genesis metadata edition opens under delivered keys before persisting a join, codifying behavior Vector and Armada already enforce.
    ### NIP Deep Dives
    - **46:16 NIP Deep Dive: NIP-58 Badges**
    NIP-58 splits badge issuance across a kind 30009 definition, a kind 8 award from the issuer, and a kind 30008 recipient display list with ordered a and e tag pairs. There is no revocation, transfer, or trusted issuer registry, so trust rests entirely on the issuer pubkey. Divine Mobile 1.0.20 mints and awards badges in-app, Nostter PR #2281 updates profile badge handling, and Amethyst publishes award events with its client tag.
    - **50:57 NIP Deep Dive: NIP-22 Comments**
    NIP-22 defines kind 1111 comments with uppercase root tags (E, A, I, K, P) and lowercase parent tags (e, a, i, k, p) so clients can fetch entire discussions without walking reply chains. Comments must not reply to kind 1 notes, leaving NIP-10 threading in place. Divine Mobile, Amethyst, and nostrord read and write kind 1111, and proposed NIP-9A patches in PR #2438 build on the same kind.
    56 min
  • Nostr Compass Podcast #35
    ### News
    - **00:00 Intro**
    Welcome to Nostr Compass Podcast #35 covering post-quantum identity keys, MDK Marmot convergence hardening, Amber grouped signing, and deep dives on NIP-09 deletion and NIP-56 reporting.
    - **00:16 nostr-wot-extension 0.4.0 adds post-quantum keys beside a Nostr identity**
    nostr-wot-extension 0.4.0 derives ML-KEM-1024 encryption and ML-DSA-87 signing keys from 24-word seeds, publishes kind 10203 attestations binding post-quantum public keys with ML-DSA proof of possession, and adds opt-in post-quantum DMs combining ML-KEM with NIP-44 through HKDF inside NIP-59 gift wraps.
    - **02:49 Divine Mobile 1.0.19 tightens accounts, private messages, and publishing**
    Divine Mobile 1.0.19 builds account-scoped identity containers, waits for explicit relay OK before confirming publish, rejects unauthenticated DM rumor fields and unsigned seals, routes followed-participant group chats into the inbox, and consumes observed deletion requests for removed videos.
    - **03:52 MDK 0.9.11 hardens Marmot group convergence and recovery**
    MDK 0.9.11 reopens stale convergence at the current group tip, commits inbound capability projections atomically, queues non-stable sends across restarts, securely deletes pruned SQLite projections, and zeroizes imported keys and OpenMLS buffers.
    - **06:51 Nostria 4.1.67 expands encrypted-community administration**
    Nostria 4.1.67 adds community dissolution, icon and banner administration, encrypted photo uploads, a full reaction picker, dual-pane community layout, threaded messaging, and a combined hub for public, group, and private chats over NIP-29 and Concord communities.
    - **07:41 Amber 6.4.0 makes every grouped signing decision explicit**
    Amber 6.4.0 redesigns multi-request signing with per-request Approve and Deny controls, returns proper errors for denied NIP-46 bunker requests, and adds localized labels for 113 more event kinds including Concord and NIP-51 Git bookmarks.
    - **09:05 Safebox Acorn separates a portable recovery component from the web app**
    Safebox Acorn extracts a standalone Python CLI for key, Nostr profile, relay, Cashu, and Lightning helpers with 256-bit record-protection keys encoded as checksummed 24-word phrases, framing Acorn as the replaceable protocol component for household Safebox recovery without one appliance dependency.
    - **16:43 Pact brings mutually consented agent bonds to Nostr**
    Pact is an early-stage agent relationship layer on MATE.md and draft NIP-BD with signed mutually consented bonds published over Nostr or NIP-59 gift-wrapped for private bonds, plus MCP server, TypeScript SDK, CLI, daemon, and web interface.
    ### Releases
    - **10:11 Mostro Core 0.14.2 changes the encrypted chat envelope**
    Mostro Core 0.14.2 replaces gift-wrapped chat with kind 14 envelopes using separate conversation-encryption and signing keys derived from peers' shared secrets, while legacy gift-wrap helpers remain for migration.
    - **11:06 Mostro 0.18.1 starts a Cashu escrow path and hardens the daemon**
    Mostro 0.18.1 lays Cashu escrow foundation with mint integration and first lock action, uses trusted-node price announcements, advertises NIP-13 proof-of-work for first contact, and hardens LNURL fetches and hold-invoice subscriptions after restart.
    - **12:12 LaWallet NWC 2.3.0 adds Nostr notifications and zap receipts**
    LaWallet NWC 2.3.0 sends received and forwarded notifications as configurable Nostr events with optional NIP-44 encryption and publishes signed NIP-57 kind 9735 receipts after zap settlement.
    - **13:00 nostr-double-ratchet TypeScript 0.0.166 binds public invites to session keys**
    nostr-double-ratchet TypeScript 0.0.166 requires invite responses to prove session-key ownership, preventing reusable public invites from binding one Nostr identity to another party's session.
    - **13:55 cln-nip47 0.2.0 expands and isolates NWC requests**
    cln-nip47 0.2.0 adds hold-invoice create, cancel, and settle NIP-47 methods, caps transaction lists at 500 entries, deduplicates requests by event ID, and isolates failed notifications per client.
    - **14:45 ClipRelay 0.1.3 restores relay and signer connections after idle periods**
    ClipRelay desktop and Android 0.1.3 add typed clipboard send, test liveness with real relay round trips after idle periods, escalate from resubscription to socket replacement, and timeout stalled NIP-46 signer calls.
    - **15:42 NoorNote 1.3.2 moves article discovery into the social graph**
    NoorNote 1.3.2 replaces its flat global article feed with first-, second-, and third-degree contact discovery and collapses replayed DMs from unknown senders into one rolling notification.
    - **16:19 Bray 2.4.0 adds a compact remote-signing dialect**
    Bray 2.4.0 accepts object-form NIP-46 signing requests and adds sign_event_compact returning only event ID, signature, pubkey, and timestamp for constrained hardware signers.
    ### Project Updates
    - **17:42 nostrord keeps group muting synchronized between devices**
    nostrord PR #250 stores per-group mute choices in self-encrypted NIP-78 kind 30078 events so settings follow the account across devices without revealing the group list to relays.
    - **18:07 Amethyst completes Concord's invite lifecycle**
    Amethyst PR #3888 lets invite links survive community refounding, implements encrypted CORD-05 invite lists with per-link revocation tombstones, and adds amy CLI paths for control-key delivery, rekeying, and stranded-member recovery.
    - **19:03 Buzz carries each community's appearance across desktop and mobile**
    Buzz desktop PR #3653 and mobile PR #3767 store each community's theme, accent, and system mode as encrypted NIP-78 records on the community relay, with Buzz Desktop 0.5.10 accelerating channel loading and bounding initial timeline retention.
    ### NIP Updates
    - **28:42 NIPs PR #2435 adds an optional b tag to a pull-request event — Open**
    PR #2435 adds an optional b tag to NIP-34 pull-request events so authors can name a target branch other than the repository default.
    - **29:00 NIPs PR #2434 proposes post-quantum identity keys — Open**
    PR #2434 proposes deriving ML-KEM and ML-DSA keys beside secp256k1 from a NIP-06 seed and binding them with kind 10203 attestations without replacing event signatures.
    - **32:15 NIPs PR #2431 proposes an expected public key for NIP-07 requests — Open**
    PR #2431 lets browser clients attach the expected pubkey to NIP-07 signing requests so signers must use that account or reject the call.
    - **32:46 NIPs PR #1813 remains an open double-ratchet proposal — Open**
    PR #1813 specifies forward-secret encrypted conversations with keys advancing per message, implemented in nostr-double-ratchet and Iris but not yet merged.
    - **33:14 NIPs PR #2433 closed without merging — Closed**
    PR #2433 proposed distinguishing NIP-42 auth-required from restricted relay errors but closed without merging.
    - **33:38 NIPs PR #2378 closed without merging — Closed**
    PR #2378 proposed agent passports, discovery, task, and marketplace events but closed without merging.
    - **33:53 NIPs commit 656cecc corrects the NIP-29 metadata example — Merged**
    NIPs commit 656cecc adds a previous tag to the NIP-29 group metadata example showing how replacement events identify superseded events.
    - **34:08 CORD PR #18 proposes sharded encrypted Community Lists — Open**
    CORD PR #18 proposes sharding encrypted community lists across kind 33302 events, removing the fifty-membership limit, and pruning retired entries to stay within relay size limits.
    - **34:54 CORD-02 PR #15 restricts writes to a community's control plane — Merged**
    CORD-02 PR #15 merged 6 August and restricts Concord control-plane writes to owners and staff holding a control_root signing secret while all members retain read and verify keys.
    - **35:16 CORD PR #12 closed without merging — Closed**
    CORD PR #12 closed without merging after its control-plane portion was superseded by merged CORD-02 PR #15.
    ### NIP Deep Dives
    - **35:31 NIP Deep Dive: NIP-09 Event Deletion Requests**
    NIP-09 defines kind 5 deletion requests carrying e or a tags plus k tags naming referenced kinds, with addressable a references removing every version at that coordinate no later than the request timestamp. Relays should stop publishing only when the deletion request pubkey matches the target event author, and clients cannot treat relay acceptance as proof of authorization. Deletion is cooperative policy, not cryptographic revocation, unlike NIP-40 expiration chosen at publish time. Divine PR #6623, strfry PR #251, and Amethyst currently apply deletion at client or relay layers.
    - **41:38 NIP Deep Dive: NIP-56 Reporting**
    NIP-56 standardizes kind 1984 signed reports with p tags for accounts, e tags for notes, and categories including spam, impersonation, and illegal, optionally extended with NIP-32 labels. Reports prove one key made an allegation without making content removable by default, and the specification advises against automatic relay moderation while allowing trusted-moderator action. Unlike NIP-09, reports can target others' content but confer no deletion authority. Divine PR #6591, Conduit PR #250, nostrord, and Amethyst currently publish or process kind 1984 events.
    48 min
  • Nostr Compass Podcast #34
    ### News
    - **00:00 Intro**
    Welcome to Nostr Compass Podcast #34 covering Sandstr client simulations, nostr-mill browser signing, nostrord relay groups, six merged protocol changes, and deep dives on NIP-50 search and NIP-84 highlights.
    - **00:20 nostr-mill 1.6.0 puts signing consent and account recovery in the browser**
    nostr-mill 1.6.0 asks consent by event kind with decoded content preview, time-limited grants, optional Google Drive NIP-49 key import, and experimental scrypt-HKDF relay backup with quorum verification before recovery.
    - **01:57 nostrord 2.5.0 gives relay groups stable, relay-specific identities**
    nostrord 2.5.0 derives NIP-29 identity from group ID plus host relay, adds NIP-56 moderation inbox, NIP-84 highlight rendering, Blossom or NIP-96 uploads, and NIP-55 Amber login.
    - **03:08 Primal Android 3.5.25 updates remote signing and follow-list filtering**
    Primal Android 3.5.25 updates remote signing, adds follow mute lists, auto-repairs stalled relay connections, rejects invalid follow-list entries, and caps cache at 100 MB with feed prefetching improvements.
    - **03:47 Nostur 1.30.2 expands private replies and media in direct messages**
    Nostur 1.30.2 always exposes private-reply actions, adds per-conversation DM media caches with clearing controls, shows referenced messages in live chat, and fixes feed pagination and nested-reply rendering.
    - **04:26 Chama 5.7.0 adds arbiter records and cached trade recovery**
    Chama 5.7.0 displays arbiter locked amounts and bond tenure, records backup-arbiter replacements, defines dormant kind 38136 fault attestations, and retries incomplete relay histories against durable device cache.
    - **05:25 Auditable Voting 0.1.165 restores delegated ballot delivery**
    Auditable Voting 0.1.165 restores delegated blind-ballot issuance through authenticated delegation delivery and control-DM backfill, keeping blind-credential DMs on configured private relays.
    - **07:13 Sandstr lets newcomers test-drive Nostr clients with mock data**
    Sandstr launched August 3 with reference-verified simulations of Damus, Amethyst, Primal, Snort, YakiHonne, Coracle, and Wisp plus previews of Gossip, Keychat, and Olas, all running locally against mock data without keys or relay connections.
    - **09:07 mineracks signer pairs a browser extension with a desktop bunker**
    mineracks signer ships a NIP-07 browser extension and desktop 0.1.0 NIP-46 bunker with NIP-49 key storage, per-request approval, and optional per-application auto-approval on Apple Silicon.
    ### Releases
    - **10:05 Jumble 26.8.1 adds proof-of-work controls and comment previews**
    Jumble 26.8.1 remembers NIP-13 proof-of-work difficulty, displays verified-work badges, previews linked comments above external content, and refreshes default relays.
    - **11:34 nostr-calendar 2.1.0 restores private-form signer binding**
    nostr-calendar 2.1.0 binds private-form submissions to the active signer, saves intentional duplicate events, parses calendar dates in local time, and adds app notifications plus an iOS client.
    - **13:47 Manent 2.0.0 adds tagging and search for saved notes**
    Manent 2.0.0 adds local tags and search for organizing saved Nostr notes without modifying signed event contents.
    - **14:15 nosvelte 0.6.1 closes empty subscriptions after EOSE**
    nosvelte 0.6.1 closes empty subscriptions at End of Stored Events, cancels underlying REQ on cancellation, recognizes addressable events regardless of d tag position, and deduplicates reactions by event ID.
    ### Project Updates
    - **15:01 NMP ties relay admission to declarations and broadens group queries**
    NMP PR #1254 ties relay admission to the declaration owner, and PR #1255 generalizes NIP-29 group queries beyond one narrow lookup shape.
    - **15:42 Mosaico derives managed-group identity from relay records**
    Mosaico PR #758 derives managed-group identity from the hosting relay, and PR #757 observes published group records when resolving administration state.
    - **16:42 Divine isolates slow relays during multi-relay queries**
    Divine PR #6673 gives each relay query its own timeout so responsive relays return results while stalled connections are abandoned independently.
    - **17:04 rust-nostr hardens encryption, hashes, and reconciliation**
    rust-nostr PR #1421 reduces NIP-44 allocation, PR #1423 adds typed hashes, and commit 21e31c2 prevents malformed NIP-77 Negentropy messages from disconnecting the local relay.
    - **17:38 Zeus serializes NWC payments before charging spending budgets**
    Zeus PR #4305 counts pending NIP-47 payments against budgets, and PR #4303 serializes payment handling to prevent concurrent authorization races.
    - **18:04 Nostr Components shares one relay connection attempt**
    Nostr Components PR #105 lets concurrently mounted web components share one in-flight relay connection attempt instead of opening duplicate sockets during handshake.
    ### NIP Updates
    - **18:42 NIPs PR #2430 proposes sticker packs as addressable kind 30031 definitions and a user's installed packs as replaceable kind 10031 — Open**
    PR #2430 proposes kind 30031 sticker pack definitions and kind 10031 installed packs with shortcode, SHA-256, and MIME tags while images stay on NIP-B7 Blossom servers.
    - **20:39 NIPs PR #2429 proposes kind 31436 addressable Gopher documents — Open**
    PR #2429 proposes kind 31436 addressable Gopher nodes forming a gopherhole any relay-backed RFC 1436 bridge can serve.
    - **22:45 NIPs PR #2428 proposes epoch-ticketed private groups — Open**
    PR #2428 proposes private groups that rotate membership credentials between epochs so clients present current-epoch tickets instead of permanent bearer tokens.
    - **23:51 NIPs PR #2425 merges a URI clarification into NIP-B0 — Merged**
    PR #2425 merged a URI clarification into NIP-B0 bookmarks distinguishing omitted HTTPS prefixes from explicit URI schemes in d tags.
    - **24:32 NIPs PR #2419 merges a smaller NIP-47 core — Merged**
    PR #2419 merged a smaller NIP-47 core keeping connection URIs and common methods in the NIP while moving notifications, hold invoices, and transaction history to an extension repository.
    - **25:19 NWC PR #2 merges BIP-321 payment methods — Merged**
    NWC PR #2 merged BIP-321 pay and receive methods into the NIP-47 extension repository for wallet services choosing compatible BOLT11 or BOLT12 instructions from payment URIs.
    - **25:38 NAP PR #95 proposes catalog discovery for Nostr-distributed sandbox applications — Open**
    NAP PR #95 proposes host-filtered catalog discovery so napplets learn available applications and capabilities without receiving execution authority during discovery.
    - **26:21 NAP PR #33 proposes shell-mediated file and blob uploads — Open**
    NAP PR #33 proposes shell-mediated uploads where the host selects NIP-96 or Blossom rails, signs authorization, and returns NIP-94 tags without exposing storage credentials to the napplet.
    - **27:15 Marmot PR #410 merged convergence and deferred-input rules — Merged**
    Marmot PR #410 merged rules distinguishing missing epoch dependencies from stale input, keeping objects eligible for refetch after resource refusal with a domain-separated state commitment for conformance tests.
    - **29:24 Concord PR #14 merged CORD-08 disappearing messages — Merged**
    Concord PR #14 merged CORD-08 disappearing messages where community metadata sets lifetime, chat wraps carry NIP-40 expiration tags, and kind 1740 timer notices are exempt.
    - **30:52 Concord PR #13 merged rotation-proof pinning into CORD-04 — Merged**
    Concord PR #13 merged CORD-04 rotation-proof pinning with one replace-entire pin list per channel, original signed seals plus per-message NIP-44 expansion keys, and author deletions removing pins without forking the control plane.
    ### NIP Deep Dives
    - **32:10 NIP Deep Dive: NIP-50 Search Capability**
    NIP-50 adds an optional search string to NIP-01 filters for open-ended discovery when a client has a human query instead of known authors or tags. Supporting relays match primarily against content, sort by their own relevance score, and may implement key:value extensions like domain:, language:, and include:spam declared through NIP-11. The specification deliberately leaves tokenization and ranking implementation-defined, so clients should query several relays and drop poor-precision results. Nostria, Ditto, and NoorNote already send NIP-50 searches in different discovery surfaces.
    - **35:53 NIP Deep Dive: NIP-84 Highlights**
    NIP-84 assigns kind 9802 to signed highlights carrying selected text or empty content for non-text media, with a or e tags pointing at Nostr sources and r tags for web URLs stripped of tracking parameters. Optional p tags attribute authors, context tags preserve surrounding passage, and comment tags enable quote highlights without a separate kind 1 note. Each highlight is a regular signed event, not replaceable, so corrections create new events and public highlights reveal reading interests. nostrord 2.5.0, NoorNote, and Ditto already render or publish kind 9802 events.
    41 min
  • Nostr Compass Podcast #33
    ### News
    - **00:00 Amethyst 1.13.1 follows its Nostr apps launch with authenticated group and Blossom access**
    Amethyst 1.13.0 opens napplets and NIP-5A nsites in an isolated keyless browser with consent-gated window.nostr, plus Git repos, Concord communities, NIP-29 groups, Buzz chat, wiki, RSS, and BOLT12 offers. 1.13.1 adds CORD-02 dissolution, kind 9008 deletion, NIP-29 host-relay authentication, and authenticated BUD-01 retries for gated Blossom downloads.
    - **02:17 Code Call 0.2.68 adds a worker-folder browser after 0.2.66 introduced catch-up**
    Code Call 0.2.68 replaces its workspace list with a nested folder browser rooted at the worker directory. 0.2.66 adds catch-up from the latest phone message over NIP-17 DMs with locally encrypted Blossom attachments retaining original file types.
    - **03:11 GitWorkshop coordinates maintainers and keeps repository sync independent**
    GitWorkshop 3.1.1 adds Android NIP-55 login, recursive lead-maintainer coordination, independent repository sync from invitation acceptance, cross-repo work-item references, and GRASP copies without coupling transfer to invitations.
    - **04:10 Mosaico 0.1.2 lets coding agents share status over Nostr**
    Mosaico 0.1.2 lets Claude Code, Codex, Goose, Hermes, OpenCode, and Grok sessions publish short status updates over NIP-29 relay groups without sharing transcripts, with Codex profile discovery and explicit relay choice in PR #626 and PR #629.
    - **05:08 Nostrology maps relay-list concentration from published NIP-65 events**
    Nostrology derives relay roles from latest NIP-65 kind 10002 events, charting 34,430 distinct relay URLs across 520,468 profiles at exactly one listed relay, with heavy concentration around relay.momostr.pink, relay.damus.io, nos.lol, and relay.primal.net.
    - **32:08 Six Years of Nostr Julys**
    Nostr Compass #33 closes with a July retrospective from 2021 NIP-05 DNS lookup through 2022 tag filters and reactions, 2023 live activities and classified listings, 2024 protected events and Cashu wallets, 2025 ecash discovery and voice messages, and 2026 addressable discovery plus NIP-29 subgroup and migration work.
    ### Releases
    - **06:00 Kairos 0.1.1 adds reminders and a local Astraea instruction**
    Kairos 0.1.1 adds due-date reminders and a local Astraea instruction to the offline-first task manager whose optional sync writes NIP-44 encrypted records with deterministic coordinates and NIP-09 tombstones.
    - **06:36 Bray 2.3.0 gives its CLI general gift wrapping and a local Blossom test surface**
    Bray 2.3.0 adds general NIP-59 gift wrap in PR #75 with NIP-42 test-relay challenges, in-memory BUD-01/02 server in PR #77, and NIP-77 reconciliation flags in PR #76.
    - **07:33 Buzz Desktop 0.5.0 tightens invitations, search, and relay identity updates**
    Buzz Desktop 0.5.0 adds use-limited invite links in PR #3141, author/channel/time search in PR #2871, join-policy retrieval in PR #2862, and persona identity republish after rename in PR #2607.
    - **08:44 Shosho 1.0.0 expands its live-streaming marketplace**
    Shosho 1.0.0 redesigns around creators, live sessions, clips, and products with configurable relay search, unified notification feed, clip publishing from streams, and improved threaded chat.
    - **09:34 Mafrend v1.0 previews place-based Nostr chat on Android**
    Mafrend v1.0 is the first public Android alpha of a place-based Nostr chat app where each map location is a dedicated chat room, distributed via Zapstore.
    - **10:06 Hanami 0.1.0 gives Blossom servers a signer-mediated Android path**
    Hanami 0.1.0 is an Android Blossom server companion using NIP-55 approval-mediated signing and NIP-98 HTTP auth, locking the web shell to the chosen server origin.
    - **10:43 Cordn launches its Nostr-identity group chat on Android**
    Cordn 0.2.1 adds Android NIP-05 identity onboarding and verified deep links alongside MLS group encryption with coordinator-assisted delivery.
    - **11:24 Nostur 1.30.1 fixes threads and duplicate posts after 1.30.0 expands sharing**
    Nostur 1.30.1 fixes nested reply thread expansion and duplicate draft publishing after 1.30.0 added disappearing DMs and share-sheet media publishing.
    - **12:20 Formstr Drive 0.0.2 pairs Nostr file metadata with Blossom blobs**
    Formstr Drive 0.0.2 adds in-app previews, Nostr Docs integration for office documents, chunked Blossom blob storage, and a local relay for metadata with Blossom holding file bytes.
    - **13:27 NoorNote 1.3.1**
    NoorNote 1.3.1 adds disappearing-message timers and default DM relays for new accounts, filtering global articles without cover images and routing repost notifications into the article reader.
    - **14:15 algia 0.0.133**
    algia 0.0.133 adds local-image uploads with NIP-92 tags to regular, channel, and group posting commands, following 0.0.132's NIP-29 and NIP-42 support.
    - **14:55 swift-nostr 0.7.0**
    swift-nostr 0.7.0 lets one NIP-46 remote signer drive all features, adds NIP-98 and NIP-29 group flows, and validates NIP-44 v3 padding against official vectors.
    - **15:30 lawallet-nwc 2.0.0**
    LaWallet NWC 2.0.0 adds WebAuthn PRF passkey login deriving the Nostr key in-browser without server exposure, multi-pubkey account linking, and webhook retry for wallet-connect events.
    - **15:58 MDK 0.9.10**
    MDK 0.9.10 retains pending sends during inactive transport, adds paginated conversation history in PR #1159, republishes current KeyPackage in PR #1167, and supports terminal group disbanding.
    - **17:13 pakstr 0.3.1**
    pakstr 0.3.1 lets web teams supply runtime configuration and an API proxy for Android Nostr client packages without rebuilding the shell, with Amber bridge and NIP-44 encryption support.
    - **17:39 Ditto 2.34.2**
    Ditto 2.34.2 renders user statuses as cards with custom emoji and expiry, shows zap comments as replies, and retains optional NIP-5A profile globe buttons.
    - **18:28 Earthly 0.0.9**
    Earthly 0.0.9 keeps likes visible across map entity drawer changes and sends valid NIP-57 zap-request JSON for verified receipt publication.
    ### Project Updates
    - **18:55 Keep adds kind-scoped NIP-44 v3 signing and tightens approval policy**
    Keep merged PRs #451 through #455 carrying NIP-44 v3 encrypt and decrypt through NIP-55 and NIP-46 with kind-scoped grants separate from v2, and stops treating Basic policy as Auto.
    - **19:34 Routstrd changes its default network bind after an unauthenticated exposure**
    Routstrd PR #56 changes the default bind from all interfaces to 127.0.0.1 after the prior default exposed unauthenticated wallet and daemon endpoints to any reachable host.
    - **20:07 Imwald Android clarifies offline publishing status**
    Imwald Android treats local-relay acknowledgement as complete publish only when every configured target is local, keeping remote delivery pending when local acceptance precedes remote relay delivery.
    - **20:37 FIPS adds an OpenWrt access layer; a FreeBSD port remains under review**
    FIPS merged PR #126 exposing an open !FIPS access network on OpenWrt routers, with open PR #129 proposing a FreeBSD port and the public UDP overlay reporting 300+ nodes.
    - **22:15 Zap Cooking schedules posts and binds scanner requests**
    Zap Cooking PR #566 and PR #569 retain scheduled posts in encrypted storage for timed relay publish, and PR #599 authenticates fridge scanner requests with NIP-98 instead of body-supplied pubkeys.
    - **22:53 Citrine turns an Android device into a manageable relay**
    Citrine PR #179 rebroadcasts stored events to external relays, PR #150 adds NIP-86 administration commands, PR #178 enables NIP-29 group admin via Amber, and PR #174 aligns Tor relay lifecycle through restarts.
    - **23:42 Wired recovers complete conversations in the browser**
    Wired PR #148, PR #147, and PR #146 follow feed roots and replies to completion beyond fixed limits, with PR #145 and PR #144 preserving relay hints for still-missing context without overwriting partial snapshots.
    ### NIP Updates
    - **24:10 NIPs: NIP-34 hosting boundary, group migration, and three live drafts — Merged/Open**
    NIP-34 commit 6d2979b removes GRASP hosting from kind 1618 pull-request descriptions. NIP-29 commit db5fe3d defines group metadata migration and fork distinction. Open: PR #2424 mutual kind 10045 key-set declarations, PR #2421 BOLT12 zap intents, PR #2425 non-HTTP schemes in NIP-B0 bookmarks.
    - **25:57 Mill implements a draft for cloud-account key backup — Open**
    Mill merged a cloud-account key-backup draft using Google OIDC plus passphrase-derived keys to encrypt NIP-49 ncryptsec into provisional kind 30049 events, disabled by default without dedicated backup relays.
    - **28:51 BUDs: Blossom servers may identify unknown uploads from their bytes — Open**
    BUD-02 PR #110 proposes server-side MIME detection when uploaders omit Content-Type or send application/octet-stream, preserving client-supplied types when specific.
    - **29:26 NAPs: conventions replace numbered tracks as capture and filesystem contracts develop — Merged**
    NAP PR #87 removes numbered cross-napplet protocol tracks in favor of napplet:// convention URIs, with NAP-CAPTURE PR #94 for microphone consent boundaries and NAP-FS PR #88 for virtual filesystem handles.
    - **30:52 Marmot: the specification defines a terminal group state — Open**
    Marmot PR #409 adds an authenticated irreversible Disbanded state blocking old branches, messages, and Welcomes from reviving a group after admin commit.
    - **31:32 Concord: read and write capabilities may split inside one plane — Open**
    Concord PR #12 proposes separate read and write stream capabilities per plane, with the write key acting as a spam gate while roster checks carry authority.
    - **31:47 NWC: one wallet method can choose between BOLT11 and BOLT12 — Open**
    NWC PR #2 proposes optional pay and receive methods for BIP-321 payment URIs letting wallet services choose compatible BOLT11 invoices or BOLT12 offers outside the NWC core.
    44 min

About Nostr Compass Podcast

From the publisher's feed

Weekly conversations with the developers building on Nostr. Companion podcast to the Nostr Compass newsletter covering NIP proposals, client updates, relay developments, and protocol changes.