Nostr Compass Podcast #35

About this episode
### 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.