<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-07-14T16:44:26&#43;02:00</updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme.rss" />
  <link href="https://nostr.ae/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme" />
  <id>https://nostr.ae/npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqzqujme</id>
  <icon></icon>
  <logo></logo>


  <title>Nostr notes on relay.towardsliberty.com/nostr:relay.towardsliberty.com/inbox</title>
  <link href="https://nostr.ae/r/relay.towardsliberty.com/nostr:relay.towardsliberty.com/inbox" />
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/r/relay.towardsliberty.com/nostr:relay.towardsliberty.com/inbox.rss" />
  <id>https://nostr.ae/r/relay.towardsliberty.com/nostr:relay.towardsliberty.com/inbox</id>
  <icon>https://relay.towardsliberty.com/e5e6b7fec63839b7559cd7665c17f01768e48371d1e9b49d266f584c70abea48.jpg</icon>
  <logo>https://relay.towardsliberty.com/e5e6b7fec63839b7559cd7665c17f01768e48371d1e9b49d266f584c70abea48.jpg</logo>



  <entry>
    <id>https://nostr.ae/nevent1qqs8edhf23vt3szt8zlpt3lml3p57knlulyj5nmk3q4ksvnptm9j99spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qgxweve</id>
    
      <title type="html">So true, we have to make it super seamless to send money from ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8edhf23vt3szt8zlpt3lml3p57knlulyj5nmk3q4ksvnptm9j99spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qgxweve" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspxwhjjtyq0cxkqsqwammg0sp79jdm69y86qhkmuuhl7tg9uncyhcpzamhxue69uhhsmtj9e6hxetwdaehgu3wdaexwtcwvw8j6&#39;&gt;nevent1q…w8j6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;So true, we have to make it super seamless to send money from users to devs.
    </content>
    <updated>2026-07-14T16:44:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyxxafu4kta4y9d8ml97gddygrj876rdt2279pu6k3ntt7t9d85cspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qa8feqf</id>
    
      <title type="html">https://github.com/andotherstuff/garland-protocol</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyxxafu4kta4y9d8ml97gddygrj876rdt2279pu6k3ntt7t9d85cspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qa8feqf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9lshdt77x4j8vsq7adkewjam0vfm7wnxk0mmu6rj40g8j5yp43nspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsww2qm8&#39;&gt;nevent1q…2qm8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/andotherstuff/garland-protocol&#34;&gt;https://github.com/andotherstuff/garland-protocol&lt;/a&gt;
    </content>
    <updated>2026-07-14T16:42:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsve3k40s7axrh939zgjrucaahm0dy67yfjagermlhja5ls8ehr02gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqhkhuy</id>
    
      <title type="html">@nprofile…e307 probably has some good library in apple sauce.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsve3k40s7axrh939zgjrucaahm0dy67yfjagermlhja5ls8ehr02gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqhkhuy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0muueqpgnxl4gy8m65lfc833m55as0dhe8gpmd7szuhrakn8arkgpr4mhxue69uhkummnw3ezucmewp5x2unsw4hxktn5dajxz7f0kdxy3k&#39;&gt;nevent1q…xy3k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqszv6q4uryjzr06xfxxew34wwc5hmjfmfpqn229d72gfegsdn2q3fgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0qyghwumn8ghj7mn0wd68ytnhd9hx2tcche307&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;hzrd149&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…e307&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; probably has some good library in apple sauce.
    </content>
    <updated>2026-07-14T16:40:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgql9k44wl8zjp429nang4n7ctl34x2gucedpf6avhp0asyzzu75qpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qhrznn4</id>
    
      <title type="html">Recording the @nprofile…48nt podcast, if you want to join and ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgql9k44wl8zjp429nang4n7ctl34x2gucedpf6avhp0asyzzu75qpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qhrznn4" />
    <content type="html">
      Recording the &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs8wk257uc5zyjgnf9znmrf9dersm7kp0xwkqcg6s33q84f08zh4qqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7gd48nt&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Nostr Compass&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…48nt&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; podcast, if you want to join and talk about any of the mentioned project, here&amp;#39;s the link, we go in an hour at 16 UTC.&lt;br/&gt;&lt;a href=&#34;https://riverside.com/studio/ipfs-studio?t=80327b608d616377f954&#34;&gt;https://riverside.com/studio/ipfs-studio?t=80327b608d616377f954&lt;/a&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqstrx37dx2cns94mda8uxaqvsk3p27apntvj5vv8radzsktsdp3sdqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtczypm4j48hx9q3yjy6fg57c6ftwguxl4sten4sxzx5yvgpa2tec4agqqcyqqq823crrfga2&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…fga2&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt;Welcome back to Nostr Compass, your weekly guide to Nostr.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This week:&lt;/strong&gt; the &lt;a href=&#34;#marmot-marks-the-spec-adopted-and-mdk-cuts-v09x&#34;&gt;Marmot spec is marked adopted&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1whtn0s68y3cs98zysa4nxrfzss5g5snhndv35tk5m2sudsr7ltms48r3ec&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;White Noise&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1wht…r3ec&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; across 42 files as MDK cuts v0.9.0 through v0.9.3 with encrypted group avatars, external signer support, and MarmotKit iOS and Android bindings. &lt;a href=&#34;#mostro-v0180-and-mobile-v130-ship-transport-v2-on-nip-44&#34;&gt;Mostro ships Transport v2&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1m0str0d7z2ww8rdh20t2n9lx520xjwhaq24p68umqp06wwrwtsnqen40un&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Mostro&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1m0s…40un&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; on NIP-44 direct messages with anti-spam gates and a coexistence window in both mostrod v0.18.0 and Mobile v1.3.0. &lt;a href=&#34;#bitchat-160-adds-nip-13-proof-of-work-and-an-opt-in-mesh-to-nostr-gateway&#34;&gt;Bitchat 1.6.0 adds NIP-13 proof-of-work&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub17slpd6rnsagjuyj9l0lrs4d7f0vnjryakhjwwsk64f8c0mtw72zsp2w9r8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;bitchat&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub17sl…w9r8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; to geohash channel messages, an opt-in mesh-to-Nostr gateway that lets one online phone uplink a whole crowd, prekey bundles, transitive verification, and creator-managed encrypted private groups. &lt;a href=&#34;#amber-v623-scopes-profile-subscriptions-and-adds-a-tor-status-notification&#34;&gt;Amber&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1w4uswmv6lu9yel005l3qgheysmr7tk9uvwluddznju3nuxalevvs2d0jr5&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;greenart7c3&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1w4u…0jr5&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) scopes profile subscriptions per account, fetches NIP-65 relay lists before profile metadata, and adds a live Tor status notification with a restart action. &lt;a href=&#34;#rust-nostr-adds-nip-40-expiration-to-gift-wrap-and-private-dm-builders&#34;&gt;rust-nostr&lt;/a&gt; adds NIP-40 expiration to gift wrap and NIP-17 DM builders, anchored to the wrap&amp;#39;s randomized timestamp. &lt;a href=&#34;#amethyst-spends-the-week-hardening-negentropy-sync-and-adding-nip-50-search&#34;&gt;Amethyst&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub142gywvjkq0dv6nupggyn2euhx4nduwc7yz5f24ah9rpmunr2s39se3xrj0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;amethyst&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub142g…xrj0&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; merges 43 PRs of negentropy sync hardening, NIP-50 full-text search infrastructure, and event kinds for niche verticals. &lt;a href=&#34;#nostrord-v200-and-v210-fold-the-relay-pool-and-heal-zombie-websockets&#34;&gt;Nostrord ships v2.0.0 and v2.1.0&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1ktxukd7ny5e3ghqqcn6r6hs7rh4hceaua6n77cl4ym9ye2ufzces7rzc2h&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Nostrord&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1ktx…zc2h&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; with a folded relay pool, zombie WebSocket detection, and a full disk-first cache seam. &lt;a href=&#34;#ngit-v262-stops-duplicate-pr-status-events-on-default-branch-push&#34;&gt;Ngit v2.6.2&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;DanConwayDev&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub15qy…yejr&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), &lt;a href=&#34;#jumble-v2671-makes-blossom-the-default-upload-service-in-a-dm-focused-cut&#34;&gt;Jumble v26.7.1&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub17n4cuc4d6y6qh89dekvxrenfkt5s0n49xns00uavjaxpr36c55dq87fyh9&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Jumble&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub17n4…fyh9&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;a href=&#34;#applesauce-signers-622-drops-an-nbunksec-dependency&#34;&gt;Applesauce signers 6.2.2&lt;/a&gt;, &lt;a href=&#34;#bray-v1330-cli-picks-up-a-bunker-profile-persona-and-tor-outbound&#34;&gt;Bray v1.33.0&lt;/a&gt;, &lt;a href=&#34;#deepmarks-100-hardens-the-nostr-bookmarking-surface&#34;&gt;Deepmarks 1.0.0&lt;/a&gt;, &lt;a href=&#34;#bitcredit-core-v0513-unencrypts-block-metadata-on-the-nostr-wire&#34;&gt;Bitcredit Core v0.5.13&lt;/a&gt;, &lt;a href=&#34;#coop-mobile-v023-and-v024&#34;&gt;Coop Mobile v0.2.4&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1zfss807aer0j26mwp2la0ume0jqde3823rmu97ra6sgyyg956e0s6xw445&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;reya&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1zfs…w445&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;), &lt;a href=&#34;#granary-v110-adds-nip-71-video-event-support&#34;&gt;Granary v11.0&lt;/a&gt;, &lt;a href=&#34;#nostr-relay-v00244-adds-a-firestore-backend&#34;&gt;Nostr-relay v0.0.244&lt;/a&gt;, &lt;a href=&#34;#manent-v140-fixes-nip-42-auth-and-adds-media-clipboard-flows&#34;&gt;Manent v1.4.0&lt;/a&gt;, &lt;a href=&#34;#routstrd-v037-makes-the-nostr-event-store-the-persistent-source-of-truth&#34;&gt;Routstrd v0.3.7&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub130mznv74rxs032peqym6g3wqavh472623mt3z5w73xq9r6qqdufs7ql29s&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;routstr&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub130m…l29s&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, &lt;a href=&#34;#nymchat-101-launches-as-a-progressive-web-app-on-nip-17&#34;&gt;Nymchat 1.0.1&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16jdfqgazrkapk0yrqm9rdxlnys7ck39c7zmdzxtxqlmmpxg04r0sd733sv&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Luxas&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16jd…33sv&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, and &lt;a href=&#34;#21meetup-110-launches-nostr-signed-attendance-badges&#34;&gt;21Meetup 1.1.0&lt;/a&gt; also ship, and &lt;a href=&#34;#safebox-publishes-a-phase-3-progress-report-and-a-freebsd-jail-runbook&#34;&gt;SafeBox marks Phase 3 substantially complete&lt;/a&gt; alongside a FreeBSD jail deployment runbook and an OpenETR spin-off for electronic transferable records. The NIPs repository merges a &lt;a href=&#34;#merged-nip-51-and-nip-37-align-the-kind-10013-name&#34;&gt;NIP-51 and NIP-37 name alignment&lt;/a&gt; and opens five proposals: &lt;a href=&#34;#open-nip-ad-nostr-web-addresses-via-well-known-lookup&#34;&gt;NIP-AD Nostr Web Addresses&lt;/a&gt;, &lt;a href=&#34;#open-nip-86-claim-management-for-invite-codes&#34;&gt;NIP-86 invite-code claim management&lt;/a&gt;, an &lt;a href=&#34;#open-role-color-as-h-s-l-tuple&#34;&gt;HSL role color format&lt;/a&gt;, &lt;a href=&#34;#open-nip-80-hardware-attested-media-provenance&#34;&gt;NIP-80 hardware-attested media provenance&lt;/a&gt;, and a &lt;a href=&#34;#open-nip-01-pagination-hardening&#34;&gt;pagination fix in NIP-01&lt;/a&gt;. Deep dives cover &lt;a href=&#34;#nip-deep-dive-nip-13-proof-of-work&#34;&gt;NIP-13 (proof-of-work)&lt;/a&gt; and &lt;a href=&#34;#nip-deep-dive-nip-40-expiration-timestamp&#34;&gt;NIP-40 (expiration timestamp)&lt;/a&gt;.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;lead-stories-2&#34;&gt;Lead stories&lt;/h2&gt;

&lt;h3 id=&#34;marmot-marks-the-spec-adopted-and-mdk-cuts-v0-9-x-2&#34;&gt;Marmot marks the spec adopted and MDK cuts v0.9.x&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&#34;https://github.com/marmot-protocol/marmot&#34;&gt;Marmot protocol repository&lt;/a&gt; merged &lt;a href=&#34;https://github.com/marmot-protocol/marmot/pull/170&#34;&gt;PR #170&lt;/a&gt; on July 3, changing 42 files from &lt;code&gt;Status: draft for internal review&lt;/code&gt; (and &lt;code&gt;experimental draft&lt;/code&gt;) to &lt;code&gt;Status: adopted&lt;/code&gt;. The README title moved from framing the repo as a work in progress to &amp;#34;Marmot Protocol&amp;#34; as the adopted text, the MIP-era documents were re-framed as the deprecated version of the protocol, and the &amp;#34;Review Status&amp;#34; section (&amp;#34;This is not adopted spec text yet&amp;#34;) became &amp;#34;Review Guidance&amp;#34; for editing the current spec. The &lt;code&gt;v2&lt;/code&gt; label disappears throughout: MIP-contrast phrasing (&amp;#34;new in v2&amp;#34;, &amp;#34;the v2 spec keeps&amp;#34;) is replaced with &amp;#34;this spec&amp;#34; and &amp;#34;under this spec&amp;#34;. Two documents keep their draft status by design: &lt;code&gt;implementation-model.md&lt;/code&gt; remains non-normative, and the multi-device feature&amp;#39;s own document stays a draft.&lt;/p&gt;

&lt;p&gt;The same repository landed &lt;a href=&#34;https://github.com/marmot-protocol/marmot/pull/171&#34;&gt;PR #171&lt;/a&gt; aligning admin-policy, membership, and role-change invariants. The cross-component check that a Remove cannot orphan an admin is now stated as a property of every resulting epoch, evaluated against the prior epoch&amp;#39;s admin set when a commit does not carry an admin-policy update. Convergence&amp;#39;s candidate-branch rule is tightened so &amp;#34;validates&amp;#34; means full commit validity including cross-component resulting-epoch checks, which prevents an invariant-violating commit from creating a candidate edge on any branch. State notifications derived from a superseded commit MUST be withdrawn when branch selection replaces it, which closes the &amp;#34;losing rename renders as a successful system message&amp;#34; bug at the spec level. A new &amp;#34;Realizing removal&amp;#34; section in &lt;code&gt;member-departure.md&lt;/code&gt; defines the primary realization input (the accepted canonical commit removing your last leaf) and the fallback for clients that never applied the removing commit: authenticated post-eviction evidence now surfaces as a &lt;code&gt;SelfEvicted&lt;/code&gt; outcome with retain-inactive semantics for the removed group copy. &lt;a href=&#34;https://github.com/marmot-protocol/marmot/pull/236&#34;&gt;PR #236&lt;/a&gt; then tightened wire-boundary validation, pinning KeyPackage lifetime acceptance to 84 days plus a one-hour skew margin, adding a Nostr tag-cardinality table for group &lt;code&gt;h&lt;/code&gt;, gift-wrap &lt;code&gt;p&lt;/code&gt;, welcome &lt;code&gt;e&lt;/code&gt; and &lt;code&gt;relays&lt;/code&gt;, and KeyPackage tags, and stating that unverified Nostr event ids and metadata are not trusted routing, replay, or telemetry evidence.&lt;/p&gt;

&lt;p&gt;Downstream, the &lt;a href=&#34;https://github.com/marmot-protocol/mdk&#34;&gt;MDK workspace&lt;/a&gt; cut &lt;a href=&#34;https://github.com/marmot-protocol/mdk/releases/tag/v0.9.0&#34;&gt;v0.9.0&lt;/a&gt; on July 6 with a full workspace version bump, followed by &lt;a href=&#34;https://github.com/marmot-protocol/mdk/releases/tag/v0.9.1&#34;&gt;v0.9.1&lt;/a&gt;, &lt;a href=&#34;https://github.com/marmot-protocol/mdk/releases/tag/v0.9.2&#34;&gt;v0.9.2&lt;/a&gt;, and &lt;a href=&#34;https://github.com/marmot-protocol/mdk/releases/tag/v0.9.3&#34;&gt;v0.9.3&lt;/a&gt; over the following two days. v0.9.0 rotates stale keyring entries when a new SQLite database is created and lands validate-before-mutate discipline across the storage layer. v0.9.1 routes every outbound connection through one host-safety dial chokepoint via &lt;a href=&#34;https://github.com/marmot-protocol/mdk/pull/732&#34;&gt;PR #732&lt;/a&gt;, closing the class of bugs where different call sites reached the network with different validation. v0.9.3 exposes encrypted group avatars to the uniffi bindings through &lt;code&gt;download_group_image&lt;/code&gt; and &lt;code&gt;image_hash_hex&lt;/code&gt; via &lt;a href=&#34;https://github.com/marmot-protocol/mdk/pull/771&#34;&gt;PR #771&lt;/a&gt;, adds external-signer support, and marks &lt;code&gt;wn-opencode&lt;/code&gt; production-ready via &lt;a href=&#34;https://github.com/marmot-protocol/mdk/pull/781&#34;&gt;PR #781&lt;/a&gt;. Alongside the MDK cuts, MarmotKit ships iOS and Android bindings at each version (a MarmotKit.xcframework plus Swift bindings for iOS and Kotlin bindings plus JNI libraries for Android, both generated from a pinned MDK commit hash), and a new wn-agent release channel provides shell installers that pin the WN Agent version to an immutable release tag so downstream apps can pull the current agent with a single &lt;code&gt;curl&lt;/code&gt; command.&lt;/p&gt;

&lt;h3 id=&#34;mostro-v0-18-0-and-mobile-v1-3-0-ship-transport-v2-on-nip-44-2&#34;&gt;Mostro v0.18.0 and Mobile v1.3.0 ship Transport v2 on NIP-44&lt;/h3&gt;

&lt;p&gt;Mostro is the peer-to-peer Bitcoin trading protocol that runs order books, escrow, and dispute resolution over Nostr events, coordinated by a daemon (&lt;code&gt;mostrod&lt;/code&gt;) that clients speak to over encrypted DMs. Until this week the wire protocol between clients and mostrod was Transport v1. &lt;a href=&#34;https://github.com/MostroP2P/mostro/releases/tag/v0.18.0&#34;&gt;Mostro v0.18.0&lt;/a&gt; lands Transport v2, wiring the protocol onto &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-44/&#34;&gt;NIP-44&lt;/a&gt; direct messages with anti-spam gates and dual-receive support running server-side. &lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/776&#34;&gt;PR #776&lt;/a&gt; is the Phase 1 wire change, &lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/780&#34;&gt;PR #780&lt;/a&gt; adds the Phase 2 anti-spam gates for protocol v2, and &lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/785&#34;&gt;PR #785&lt;/a&gt; makes the inner protocol version follow the active transport so a v2 client and a v1 client can coexist during the migration window. A related &lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/782&#34;&gt;PR #782&lt;/a&gt; fixes a NIP-33 info tag by renaming &lt;code&gt;protocol_versions&lt;/code&gt; to the singular &lt;code&gt;protocol_version&lt;/code&gt;. Alongside the transport work, the release lands a Phase 4 unified live-quote path with cache-and-staleness enforcement (&lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/783&#34;&gt;PR #783&lt;/a&gt;) and an El Toque fiat-cross provider covering the Cuban CUP and MLC pairs (&lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/778&#34;&gt;PR #778&lt;/a&gt;). &lt;a href=&#34;https://github.com/MostroP2P/mostro/pull/779&#34;&gt;PR #779&lt;/a&gt; adds a slashed-party notification on dispute slash so a user who lost their bond hears from the daemon directly; the previous behavior surfaced only as a missing wallet balance.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/MostroP2P/mobile/releases/tag/v1.3.0&#34;&gt;Mostro Mobile v1.3.0&lt;/a&gt; is the client half of the migration. &lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/613&#34;&gt;PR #613&lt;/a&gt; migrates the app to Riverpod 3.x, Phase A (&lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/620&#34;&gt;PR #620&lt;/a&gt;) adds dual-receive support for NIP-44 direct messages on the main isolate and in the background isolate so a v2 mostrod and a v1 client can talk during the migration, Phase B in &lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/624&#34;&gt;PR #624&lt;/a&gt; adds dual-send, &lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/632&#34;&gt;PR #632&lt;/a&gt; re-applies dual-send after the Riverpod 3.x cut, and Phase C in &lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/637&#34;&gt;PR #637&lt;/a&gt; finalizes the migration. The release also adds African payment method coverage: &lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/625&#34;&gt;PR #625&lt;/a&gt; adds Malawi Kwacha payment methods and &lt;a href=&#34;https://github.com/MostroP2P/mobile/pull/627&#34;&gt;PR #627&lt;/a&gt; adds KES (Kenyan Shilling), MZN (Mozambican Metical), TZS (Tanzanian Shilling), UGX (Ugandan Shilling), ZAR (South African Rand), and ZMW (Zambian Kwacha) methods while expanding NGN (Nigerian Naira). A restore flow now waits for node connectivity before issuing restore requests, and cause-aware handling distinguishes a dispute-driven bond slash from a timeout-driven one.&lt;/p&gt;

&lt;h3 id=&#34;bitchat-1-6-0-adds-nip-13-proof-of-work-and-an-opt-in-mesh-to-nostr-gateway-2&#34;&gt;Bitchat 1.6.0 adds NIP-13 proof-of-work and an opt-in mesh-to-Nostr gateway&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/permissionlesstech/bitchat/releases/tag/v1.6.0&#34;&gt;Bitchat 1.6.0&lt;/a&gt; is the Bluetooth-mesh chat app that uses Nostr for its geohash channels and DM handoff. The release does two Nostr-shaped things worth reading. &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1382&#34;&gt;PR #1382&lt;/a&gt; adds &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-13/&#34;&gt;NIP-13 (proof-of-work)&lt;/a&gt; to outbound geohash channel messages (kind 20000 ephemeral events): each send mines a &lt;code&gt;[&amp;#34;nonce&amp;#34;, &amp;#34;&amp;lt;value&amp;gt;&amp;#34;, &amp;#34;&amp;lt;target&amp;gt;&amp;#34;]&lt;/code&gt; tag before publishing, targeting 8 leading zero bits, which averages 256 hash attempts and completes in under one millisecond on an M-series Mac. Inbound events with validated PoW relax the per-sender intake rate limit, so a spammer pays compute per message while a regular sender does not feel the cost. Scope is deliberately narrow: only kind 20000 channel messages mine PoW, and presence heartbeats (kind 20001), kind-1 location notes, and DMs are untouched.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1384&#34;&gt;PR #1384&lt;/a&gt; adds gateway mode, an opt-in mesh-to-Nostr uplink for geohash channels. When a mesh-only user (no internet, no reachable relay) sends in a geohash channel and another peer on the mesh advertises the &lt;code&gt;.gateway&lt;/code&gt; capability, the signed kind 20000 event is wrapped in a new &lt;code&gt;MessageType.nostrCarrier = 0x28&lt;/code&gt; TLV envelope and sent directed to one gateway. The gateway peer publishes the event to Nostr on the sender&amp;#39;s behalf and rebroadcasts inbound channel traffic back onto the mesh with default TTL. Uplink deposits ride the courier envelope path (directed, relayed multi-hop); downlink rides broadcast. The signature happens before the event leaves the sender, so the gateway can decide whether to publish but cannot forge attribution. The stated motivation is disaster and protest scenarios where one connected phone in a crowd is enough to give the whole geohash channel a working Nostr uplink.&lt;/p&gt;

&lt;p&gt;The same release ships a second batch of Nostr-adjacent work. &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1381&#34;&gt;PR #1381&lt;/a&gt; adds prekey bundles for forward-secret asynchronous first contact on the courier mail path, so a sender can compose a message to a peer who is offline and hand it to the mesh without having done a live Noise handshake first. &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1380&#34;&gt;PR #1380&lt;/a&gt; adds transitive verification: a peer that has completed the Noise handshake with someone you have already verified is now vouched for over the Noise session, so the trust graph propagates one hop at a time instead of requiring a fresh in-person verification for every new contact. &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1383&#34;&gt;PR #1383&lt;/a&gt; adds creator-managed encrypted private groups over the mesh, &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1376&#34;&gt;PR #1376&lt;/a&gt; detects, renders, and redeems Cashu ecash tokens with a &lt;code&gt;/pay&lt;/code&gt; command, and &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1379&#34;&gt;PR #1379&lt;/a&gt; adds a persistent signed geohash bulletin board layered on mesh sync. &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1372&#34;&gt;PR #1372&lt;/a&gt; expands store-and-forward with open couriers, spray-and-wait routing, a persistent outbox, and a six-hour public history window. Bitchat 1.5.4 shipped &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/releases/tag/v1.5.4&#34;&gt;earlier in the week&lt;/a&gt; with the end-to-end favorites fix in &lt;a href=&#34;https://github.com/permissionlesstech/bitchat/pull/1367&#34;&gt;PR #1367&lt;/a&gt; that cleans up peer-list duplicates, Nostr sync, and &lt;code&gt;/fav&lt;/code&gt; key corruption.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;tagged-releases-2&#34;&gt;Tagged releases&lt;/h2&gt;

&lt;h3 id=&#34;amber-v6-2-3-scopes-profile-subscriptions-and-adds-a-tor-status-notification-2&#34;&gt;Amber v6.2.3 scopes profile subscriptions and adds a Tor status notification&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/greenart7c3/Amber/releases/tag/v6.2.3&#34;&gt;Amber v6.2.3&lt;/a&gt; is a performance and correctness pass on the Android &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; signer, and the merged PRs in the week around it point at a coherent theme. The release itself adds a configurable profile fetch interval setting with never and always options (&lt;a href=&#34;https://github.com/greenart7c3/Amber/pull/492&#34;&gt;PR #492&lt;/a&gt;), shows a profile picture in the account switch bottom sheet, and scopes profile subscriptions by the current account so a signer holding multiple accounts stops fanning out subscriptions for accounts the user is not currently signing with. Bunker permission parsing gains explicit error handling on parse failures. Several StrictMode violations are fixed: a DiskReadViolation from Coil&amp;#39;s &lt;code&gt;onSuccess&lt;/code&gt; logging, a keystore violation from loading the account on the main thread, main-thread reads for the account name and picture in the account switch sheet, and eager &lt;code&gt;KeyPair()&lt;/code&gt; construction on the login and signup screens now moved off the main thread. In the days after v6.2.3 shipped, &lt;a href=&#34;https://github.com/greenart7c3/Amber/pull/493&#34;&gt;PR #493&lt;/a&gt; reordered the boot path to fetch the user&amp;#39;s &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-65/&#34;&gt;NIP-65&lt;/a&gt; relay list before profile metadata (so the profile fetch queries the relays the user publishes to), and &lt;a href=&#34;https://github.com/greenart7c3/Amber/pull/494&#34;&gt;PR #494&lt;/a&gt; turned the built-in Tor notification into a live status indicator with a restart action, so a user whose Tor daemon dies during a signing session sees the failure and can bounce it without leaving the signer. &lt;a href=&#34;https://github.com/greenart7c3/Amber/pull/495&#34;&gt;PR #495&lt;/a&gt; enabled Android Lint in strict warnings-as-errors mode across the codebase.&lt;/p&gt;

&lt;h3 id=&#34;jumble-v26-7-1-makes-blossom-the-default-upload-service-in-a-dm-focused-cut-2&#34;&gt;Jumble v26.7.1 makes Blossom the default upload service in a DM-focused cut&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/CodyTseng/jumble/releases/tag/v26.7.1&#34;&gt;Jumble v26.7.1&lt;/a&gt; is a Nostr web client cut focused on direct messages and media. The release redesigns media upload settings and makes &lt;a href=&#34;https://nostrcompass.org/en/topics/blossom/&#34;&gt;Blossom&lt;/a&gt; the default upload service, replacing the previous NIP-96 default. DM handling gets a mobile message menu, improved desktop message actions, a &amp;#34;scroll to latest&amp;#34; button, long-press reactions on DM media, and a retry path for failed outgoing DMs from the message list. Custom emoji editing gains a detail view, message bubble sizing improves for invoices and embedded content, several DM scrolling and message ordering issues are fixed, and post-editor issues around emoji insertion, text copy, and file drag are cleaned up. Image orientation is corrected when metadata is stripped on upload, and Linux ARM64 downloads are added to the release matrix.&lt;/p&gt;

&lt;h3 id=&#34;applesauce-signers-6-2-2-drops-an-nbunksec-dependency-2&#34;&gt;Applesauce signers 6.2.2 drops an nbunksec dependency&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/hzrd149/applesauce/releases/tag/applesauce-signers%406.2.2&#34;&gt;applesauce-signers@6.2.2&lt;/a&gt; drops the sub-package&amp;#39;s &lt;code&gt;@sandwichfarm/encoded-entities&lt;/code&gt; dependency in favor of a built-in &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;nbunksec&lt;/a&gt; helper via &lt;a href=&#34;https://github.com/hzrd149/applesauce/commit/d654349&#34;&gt;commit d654349&lt;/a&gt;. Applesauce&amp;#39;s &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; bunker session encoding, added last week, no longer requires the external encoding library, cutting one supply-chain surface for downstream clients that consume the signers package.&lt;/p&gt;

&lt;h3 id=&#34;ngit-v2-6-2-stops-duplicate-pr-status-events-on-default-branch-push-2&#34;&gt;Ngit v2.6.2 stops duplicate PR status events on default-branch push&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/DanConwayDev/ngit-cli/releases/tag/v2.6.2&#34;&gt;Ngit v2.6.2&lt;/a&gt; is a bug-fix release for the git-over-Nostr CLI. &lt;code&gt;git push&lt;/code&gt; to the default branch stops publishing duplicate PR merge/applied status events for PRs that are already marked applied, because merge detection now reads the pre-push Nostr repo state (the source of truth for whether a PR was already resolved on the &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-34/&#34;&gt;NIP-34&lt;/a&gt; side of the workflow); the previous heuristic relied on git internals and duplicated the status event. Active repositories using ngit for git-over-Nostr push flows stop emitting duplicate kind-1621 status events into their audience.&lt;/p&gt;

&lt;h3 id=&#34;bray-v1-33-0-cli-picks-up-a-bunker-profile-persona-and-tor-outbound-2&#34;&gt;Bray v1.33.0 CLI picks up a bunker profile, persona, and Tor outbound&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/forgesworn/bray/releases/tag/v1.33.0&#34;&gt;Bray v1.33.0&lt;/a&gt; is a Nostr SDK-plus-CLI release. &lt;code&gt;bunker --profile &amp;lt;name&amp;gt;&lt;/code&gt; gets an auto-stable connection key and relay fallback so a saved profile can survive a relay outage; &lt;code&gt;bunker --persona &amp;lt;name&amp;gt;&lt;/code&gt; signs as a derived nsec-tree identity, letting one signer act as multiple pubkeys from a single derived tree; and all HTTP fetches can be routed through a Tor SOCKS proxy when configured. The release adds wallet subcommands for &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-47/&#34;&gt;NIP-47&lt;/a&gt; NWC, &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-29/&#34;&gt;NIP-29&lt;/a&gt; group admin write operations (create, update, add-user, remove-user, set-roles), NIP-86 admin verbs, and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-65/&#34;&gt;NIP-65&lt;/a&gt; outbox helpers. Publishing verbs pick up &lt;code&gt;--jsonl&lt;/code&gt;, &lt;code&gt;--csv&lt;/code&gt;, and &lt;code&gt;--tsv&lt;/code&gt; output flags, a &lt;code&gt;req&lt;/code&gt; verb for generic NIP-01 filter queries, an &lt;code&gt;event&lt;/code&gt; verb for arbitrary event construction, a &lt;code&gt;publish-raw&lt;/code&gt; command that signs and broadcasts pre-built events, a &lt;code&gt;bunker sign&lt;/code&gt; one-shot NIP-46 signing command, and a per-command &lt;code&gt;--relay&lt;/code&gt; flag on every publishing command. Security work covers three batches of audit deferrals: secret zeroisation discipline, HTTP transport bearer-auth and rate-limit hardening, and SSRF validation on relay URLs. The npm tarball ships at 533,844 bytes with a byte-identical reproducible build verified across two independent CI runners.&lt;/p&gt;

&lt;h3 id=&#34;deepmarks-1-0-0-hardens-the-nostr-bookmarking-surface-2&#34;&gt;Deepmarks 1.0.0 hardens the Nostr bookmarking surface&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/ostermayer/deepmarks-public/releases/tag/v1.0.0&#34;&gt;Deepmarks 1.0.0&lt;/a&gt; is a security-hardening 1.0 milestone for a public Nostr bookmarking service. Every bookmark is still a signed Nostr event that any client can read. The API and archive worker sit in a privileged network position (they can reach internal Redis, the bunker&amp;#39;s relay path, and cloud metadata), so the SSRF guard is load-bearing, and the release fixes a critical IPv6-literal bypass in &lt;code&gt;isPrivateIp&lt;/code&gt;: bracketed IPv6 literals were being classified as public, so &lt;code&gt;[::1]&lt;/code&gt;, &lt;code&gt;[fd00::1]&lt;/code&gt;, and IPv4-mapped &lt;code&gt;[::ffff:10.0.0.4]&lt;/code&gt; all reached internal targets over dual-stack connect. The guard now strips brackets and folds IPv4-mapped and IPv4-compatible IPv6 down to the embedded v4 before the private-range check on both boxes. Ingested &lt;code&gt;kind:0&lt;/code&gt; profiles from external relays are now signature-verified at the sink so a hostile relay cannot forge a &lt;code&gt;nip05&lt;/code&gt; or &lt;code&gt;lud16&lt;/code&gt; for an arbitrary victim pubkey, and bookmark URLs are scheme-checked at every render sink so a &lt;code&gt;kind:39701&lt;/code&gt; bookmark published straight to the relay with a &lt;code&gt;javascript:&lt;/code&gt; or &lt;code&gt;data:&lt;/code&gt; &lt;code&gt;d&lt;/code&gt;-tag stops reaching an &lt;code&gt;&amp;lt;a href&amp;gt;&lt;/code&gt;. Zap receipts now survive a transient bunker outage: the settlement handler atomically claims the pending zap, finalizes only after signing succeeds, and releases the claim on failure so a redelivered &lt;code&gt;invoice_updated&lt;/code&gt; can retry. The &lt;code&gt;/publish&lt;/code&gt; fan-out drain uses &lt;code&gt;BLMOVE&lt;/code&gt; into a per-worker processing list with heartbeat-gated recovery so a crashed worker preserves a signed event the client was already 202&amp;#39;d for.&lt;/p&gt;

&lt;h3 id=&#34;bitcredit-core-v0-5-13-unencrypts-block-metadata-on-the-nostr-wire-2&#34;&gt;Bitcredit Core v0.5.13 unencrypts block metadata on the Nostr wire&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/BitcreditProtocol/Bitcredit-Core/releases/tag/v0.5.13&#34;&gt;Bitcredit Core v0.5.13&lt;/a&gt; removes an encryption layer from the Nostr public events used by the credit-bill protocol. Block metadata (block id, hash, signature) is now unencrypted on the Nostr wire; only the block data itself remains encrypted with the corresponding bill key. New apps process old chains, old apps do not process new chains. The release also adds a bill-service function to fetch the bill chain, and switches publishing to an optimistic threshold model: once a configured relay threshold (default one) accepts a publish, remaining relays receive the event asynchronously so publishing is no longer blocked by the slowest relay.&lt;/p&gt;

&lt;h3 id=&#34;coop-mobile-v0-2-3-and-v0-2-4-2&#34;&gt;Coop Mobile v0.2.3 and v0.2.4&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://git.reya.su/reya/coop-mobile&#34;&gt;Coop Mobile&lt;/a&gt; shipped &lt;a href=&#34;https://git.reya.su/reya/coop-mobile/releases/tag/v0.2.3&#34;&gt;v0.2.3&lt;/a&gt; on July 4 and &lt;a href=&#34;https://git.reya.su/reya/coop-mobile/releases/tag/v0.2.4&#34;&gt;v0.2.4&lt;/a&gt; on July 7, continuing the Android &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-17/&#34;&gt;NIP-17&lt;/a&gt; direct-messaging client&amp;#39;s steady release cadence. v0.2.3 adds inline image and link rendering in chat messages, image attachments, speech-to-text input, and a confirmation dialog for contact removal. v0.2.4 fixes an indicator that got stuck forever, improves the Nostr Connect handshake, and adds &lt;code&gt;ncryptsec1&lt;/code&gt; import (the &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-49/&#34;&gt;NIP-49&lt;/a&gt; encrypted-private-key format) alongside a redesigned import identity screen.&lt;/p&gt;

&lt;h3 id=&#34;granary-v11-0-adds-nip-71-video-event-support-2&#34;&gt;Granary v11.0 adds NIP-71 video event support&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/snarfed/granary/releases/tag/v11.0&#34;&gt;Granary v11.0&lt;/a&gt; is the multi-protocol conversion library that powers Bridgy Fed&amp;#39;s cross-network bridging. The Nostr module gets three visible changes. &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-71/&#34;&gt;NIP-71&lt;/a&gt; video events (kinds 21, 22, 34235, and 34236) now convert into ActivityStreams 1 notes with video attachments, and the converter extracts the &lt;code&gt;imeta&lt;/code&gt; image (thumbnail), the video duration, the top-level &lt;code&gt;published_at&lt;/code&gt; tag, and the &lt;code&gt;alt&lt;/code&gt; tag as a fallback &lt;code&gt;displayName&lt;/code&gt; on the first video or audio attachment. On the API side, &lt;code&gt;sign&lt;/code&gt; is renamed to &lt;code&gt;hash_and_sign&lt;/code&gt; and &lt;code&gt;verify&lt;/code&gt; now raises &lt;code&gt;ValueError&lt;/code&gt; on failure; the &lt;code&gt;Nostr&lt;/code&gt; constructor raises &lt;code&gt;ValueError&lt;/code&gt; on an invalid relay URL, and &lt;code&gt;Nostr.query&lt;/code&gt; skips the &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-42/&#34;&gt;NIP-42&lt;/a&gt; AUTH challenge gracefully when the caller has not set a &lt;code&gt;privkey&lt;/code&gt;. A follow-up conversion fix stops crashes when a Nostr &lt;code&gt;article&lt;/code&gt; object arrives without an &lt;code&gt;id&lt;/code&gt;. Any bridge or reader consuming NIP-71 video events through Granary can now surface them in the format the target reader expects.&lt;/p&gt;

&lt;h3 id=&#34;nostr-relay-v0-0-244-adds-a-firestore-backend-2&#34;&gt;Nostr-relay v0.0.244 adds a Firestore backend&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/mattn/nostr-relay/releases/tag/v0.0.244&#34;&gt;mattn/nostr-relay v0.0.244&lt;/a&gt; adds a Firestore backend via &lt;a href=&#34;https://github.com/mattn/nostr-relay/pull/12&#34;&gt;PR #12&lt;/a&gt;, extending the Go relay&amp;#39;s storage layer with a Google Cloud Firestore option alongside its existing backends. The change is small but opens Firestore as a managed serverless database option for a relay operator.&lt;/p&gt;

&lt;h3 id=&#34;manent-v1-4-0-fixes-nip-42-auth-and-adds-media-clipboard-flows-2&#34;&gt;Manent v1.4.0 fixes NIP-42 AUTH and adds media clipboard flows&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/dtonon/manent/releases/tag/v1.4.0&#34;&gt;Manent v1.4.0&lt;/a&gt; is the encrypted notes and file storage app built on Nostr with &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-44/&#34;&gt;NIP-44&lt;/a&gt; encryption, &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; and &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-55/&#34;&gt;NIP-55&lt;/a&gt; signer support, &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-65/&#34;&gt;NIP-65&lt;/a&gt; outbox routing, and Blossom storage. The release fixes &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-42/&#34;&gt;NIP-42&lt;/a&gt; relay authentication (previously broken), corrects Blossom uploads to &lt;code&gt;http://&lt;/code&gt; hosts (previously mishandled), and rewrites the compression flow. On the media side, users can now copy an image to the clipboard, paste an image from the clipboard, drag and drop files, crop and rotate images, play video and gifs, and take a video with a long press on the camera icon. On Linux, the primary clipboard is accessible via mouse middle-click. Note-loading and scrolling receive several optimizations.&lt;/p&gt;

&lt;h3 id=&#34;routstrd-v0-3-7-makes-the-nostr-event-store-the-persistent-source-of-truth-2&#34;&gt;Routstrd v0.3.7 makes the Nostr event store the persistent source of truth&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/routstr/routstrd/releases/tag/v0.3.7&#34;&gt;Routstrd v0.3.7&lt;/a&gt; is the local daemon for the Routstr decentralized AI inference network, which routes LLM requests via Nostr kind 38421 provider discovery and kind 38425 LGTM reviews. The release adds a &lt;code&gt;routstrd update&lt;/code&gt; subcommand that downloads new binaries for both routstrd and cocod and gracefully restarts running daemons; the daemon now calls &lt;code&gt;refreshNostrEvents()&lt;/code&gt; on startup and every 21 minutes so provider discovery and reviews stay fresh without manual intervention. The bundled &lt;code&gt;@routstr/sdk&lt;/code&gt; upgrades from 0.3.12 to 0.3.15, removing the ProviderRegistry layer in favor of direct &lt;code&gt;DiscoveryAdapter&lt;/code&gt; use, cleaning up models from disappeared Nostr providers so they no longer leak into rankings, and treating the Nostr event store as a persistent source of truth (the erroneous 210-minute TTL on cached events is gone). Xcashu refund handling tightens: refund tokens are tried before originals in the error path, 404s retry 3× with two-minute intervals, and 425 Too Early is handled without throwing.&lt;/p&gt;

&lt;h3 id=&#34;nymchat-1-0-1-launches-as-a-progressive-web-app-on-nip-17-2&#34;&gt;Nymchat 1.0.1 launches as a Progressive Web App on NIP-17&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/Spl0itable/NYM&#34;&gt;Nymchat 1.0.1&lt;/a&gt; (also known as NYM, Nostr Ynstant Messenger) is a Progressive Web App and native iOS/Android messenger for ephemeral chat over Nostr, bridged with Bitchat. Channels use kind 20000 ephemeral events for geohash channels and kind 23333 for named channels; private messages and group chats ride &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-17/&#34;&gt;NIP-17&lt;/a&gt; gift-wrapped events (kind 1059) with rotating ephemeral recipient keys and automatic post-compromise recovery. Users can generate a per-session ephemeral keypair with no registration or log in with a persistent identity via &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-07/&#34;&gt;NIP-07&lt;/a&gt; browser extensions, a &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; remote signer, or an nsec. Optional device-local identity encryption uses password, PIN, passkey, or biometric unlock via WebAuthn PRF (passkey and biometric) or PBKDF2 (password and PIN), with the plaintext key never written to disk while encryption is on. Voice and video calls use NIP-17 gift wraps for signaling and WebRTC for the media path. Message reactions use &lt;a href=&#34;https://github.com/nostr-protocol/nips/blob/master/25.md&#34;&gt;NIP-25&lt;/a&gt;, custom emoji use &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-30/&#34;&gt;NIP-30&lt;/a&gt;, and the web app is served as static files plus Cloudflare Pages Functions acting as a privacy proxy for relays and media.&lt;/p&gt;

&lt;h3 id=&#34;21meetup-1-1-0-launches-nostr-signed-attendance-badges-2&#34;&gt;21Meetup 1.1.0 launches Nostr-signed attendance badges&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/louisthecat86/Einundzwanzig-Meetup-App&#34;&gt;21Meetup 1.1.0&lt;/a&gt; is a Flutter app for the German Einundzwanzig Bitcoin community that records meetup attendance via NFC tags and rolling QR codes. Each attendance badge is a Nostr event (kind 21000) signed by the meetup organizer using BIP-340 Schnorr, so a participant accumulates a set of signed events attesting to specific meetups at specific block heights. The rolling QR code rotates every 10 seconds, so a badge cannot be minted remotely, and the NFC tag is only readable in physical proximity. A trust score is computed locally from the collected badges; the score can be presented as a QR code for verification during peer-to-peer trades. The app targets Bitcoin community reputation, not general-purpose Nostr social, but the badge events themselves are ordinary Nostr events any reader can verify.&lt;/p&gt;

&lt;h3 id=&#34;nostrord-v2-0-0-and-v2-1-0-fold-the-relay-pool-and-heal-zombie-websockets-2&#34;&gt;Nostrord v2.0.0 and v2.1.0 fold the relay pool and heal zombie WebSockets&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostrord/nostrord/releases/tag/v2.0.0&#34;&gt;Nostrord v2.0.0&lt;/a&gt; is a major cut of the KMP/WASM Nostr client that speaks NIP-29, NIP-42, NIP-44, NIP-46, NIP-57, NIP-65, and NIP-98. &lt;a href=&#34;https://github.com/nostrord/nostrord/releases/tag/v2.0.1&#34;&gt;v2.0.1&lt;/a&gt; shipped one day later via &lt;a href=&#34;https://github.com/nostrord/nostrord/pull/166&#34;&gt;PR #166&lt;/a&gt; with a release-blocking desktop fix: the packaged 2.0.0 (deb, rpm, msi, dmg) crashed at startup with &lt;code&gt;NoClassDefFoundError: java/sql/DriverManager&lt;/code&gt; because the jpackage jlink image was missing the &lt;code&gt;java.sql&lt;/code&gt; module the SQLDelight sqlite driver depends on; the fix adds &lt;code&gt;java.sql&lt;/code&gt; to the runtime image, and the same PR routes optimistic send through the network layer so the message reaches the relay (the previous code path cached silently and never delivered), plus keyboard and scroll behavior on mobile web.&lt;/p&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostrord/nostrord/releases/tag/v2.1.0&#34;&gt;v2.1.0&lt;/a&gt; followed on July 7 with the &amp;#34;relay pool fold&amp;#34; (&lt;a href=&#34;https://github.com/nostrord/nostrord/pull/176&#34;&gt;PR #176&lt;/a&gt;), which unifies the previously separate NIP-29 focused relay socket into the shared pool. One reconnect scheduler now covers all relays, &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-42/&#34;&gt;NIP-42&lt;/a&gt; AUTH signing is bounded with retry, publishes fail closed and retry on auth-required, request-storm races in &lt;code&gt;requestPrivateGroupData&lt;/code&gt; and &lt;code&gt;fetchGroupPreviews&lt;/code&gt; are closed, kind-10009 user-group-list fetches batch per relay, and the &lt;code&gt;mux_chat&lt;/code&gt; live subscription now covers every joined group (not just the opened one) and self-heals when a relay silently drops the subscription. UI-side changes replace the layout-shifting &amp;#34;Sending...&amp;#34; row with an inline clock-then-check icon and turn stalled scroll-back into an explicit Retry row. &lt;a href=&#34;https://github.com/nostrord/nostrord/pull/179&#34;&gt;PR #179&lt;/a&gt; landed the same day to detect zombie WebSockets on Android: mobile networks and Doze mode kill TCP without a close frame, so writes into the dead socket buffer locally without throwing and &lt;code&gt;isConnected()&lt;/code&gt; stays true even though nothing will ever be received. &lt;code&gt;NostrGroupClient&lt;/code&gt; now stamps &lt;code&gt;lastInboundAtMs&lt;/code&gt; on every frame, gains &lt;code&gt;markDead()&lt;/code&gt; (which cancels the frame loop so the normal reconnect and resubscribe path runs), and &lt;code&gt;probeLiveness()&lt;/code&gt; (a REQ any relay must answer within 5 seconds), triggered on OK timeout with zero inbound frames or on mux stale plus socket frame silence. A second bug fix in the same PR stops optimistic messages being written to the persistent cache at insert time; they now write only after delivery confirmation. &lt;a href=&#34;https://github.com/nostrord/nostrord/releases/tag/v2.1.1&#34;&gt;v2.1.1&lt;/a&gt; shipped one day later via &lt;a href=&#34;https://github.com/nostrord/nostrord/pull/178&#34;&gt;PR #178&lt;/a&gt; adding iOS platform actuals, native test support, and app icons alongside the v2.1.0 zombie-WebSocket work.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;unreleased-changes-2&#34;&gt;Unreleased changes&lt;/h2&gt;

&lt;h3 id=&#34;rust-nostr-adds-nip-40-expiration-to-gift-wrap-and-private-dm-builders-2&#34;&gt;rust-nostr adds NIP-40 expiration to gift wrap and private DM builders&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/rust-nostr/nostr/pull/1384&#34;&gt;rust-nostr merged PR #1384&lt;/a&gt; adding an &lt;code&gt;expiration&lt;/code&gt; option to &lt;code&gt;GiftWrapBuilder&lt;/code&gt; and &lt;code&gt;PrivateDirectMessageBuilder&lt;/code&gt;. The library takes a &lt;code&gt;Duration&lt;/code&gt; from the caller: the &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-40/&#34;&gt;NIP-40&lt;/a&gt; expiration tag is anchored to the gift wrap&amp;#39;s randomized &lt;code&gt;created_at&lt;/code&gt; (created_at &#43; duration), which decouples it from the real send time. Letting a caller pass an absolute timestamp would leak the send time to a relay observer (subtract the duration and you recover the original send time), so the library builds the tag internally from the randomized wrap timestamp. The expiration tag goes on the gift wrap event, not on the kind:13 seal (which &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-59/&#34;&gt;NIP-59&lt;/a&gt; requires to have empty tags). NIP-17 hands the same value down to the gift wrap builder from &lt;code&gt;PrivateDirectMessageBuilder&lt;/code&gt;. The change closes &lt;a href=&#34;https://github.com/rust-nostr/nostr/issues/1381&#34;&gt;issue #1381&lt;/a&gt; and lands via the same builder pattern rust-nostr uses for &lt;code&gt;extra_tags&lt;/code&gt;. rust-nostr also merged &lt;a href=&#34;https://github.com/rust-nostr/nostr/pull/1387&#34;&gt;PR #1387&lt;/a&gt; consolidating &lt;code&gt;nostr-relay-builder&lt;/code&gt; into &lt;code&gt;nostr-sdk&lt;/code&gt;, a workspace-flattening move.&lt;/p&gt;

&lt;h3 id=&#34;amethyst-spends-the-week-hardening-negentropy-sync-and-adding-nip-50-search-2&#34;&gt;Amethyst spends the week hardening negentropy sync and adding NIP-50 search&lt;/h3&gt;

&lt;p&gt;Amethyst&amp;#39;s &lt;a href=&#34;https://github.com/vitorpamplona/amethyst&#34;&gt;main branch&lt;/a&gt; merged 43 PRs across three coherent themes. The largest thread is negentropy sync on the geode-to-strfry boundary: a refused-window failure mode that used to storm the client into a window-split loop now backs off cleanly (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3480&#34;&gt;PR #3480&lt;/a&gt;), the underlying &lt;code&gt;negentropyKmp&lt;/code&gt; dependency moves to v1.1.1 (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3475&#34;&gt;PR #3475&lt;/a&gt;), a 1-million-event geode-to-strfry benchmark lands with a strfry-parity mirror (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3478&#34;&gt;PR #3478&lt;/a&gt;), and production benchmarks join the CI matrix alongside broader sync optimizations (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3458&#34;&gt;PR #3458&lt;/a&gt;, &lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3466&#34;&gt;PR #3466&lt;/a&gt;). Lock-free concurrent collections replace the previous mutex-per-relay pattern and a UDP socket threading fix rides along (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3459&#34;&gt;PR #3459&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The second thread is &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-50/&#34;&gt;NIP-50&lt;/a&gt; full-text search infrastructure. A &lt;code&gt;SearchableEvent&lt;/code&gt; interface lands so events can carry index metadata directly (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3452&#34;&gt;PR #3452&lt;/a&gt;), and NIP-50 search extensions are now stripped before querying SQLite FTS so the local search engine no longer chokes on server-side extension syntax (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3464&#34;&gt;PR #3464&lt;/a&gt;). Default search relays get centralized (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3446&#34;&gt;PR #3446&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The third thread is protocol integrations for niche verticals. Support for Birdstar bird-detection events (kind 2473) reaches an Android client (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3473&#34;&gt;PR #3473&lt;/a&gt;), and PS1 memory-card save states can be published as signed events on kind 38192 (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3482&#34;&gt;PR #3482&lt;/a&gt;). Rounding out the week: a compose-signature setting auto-appends custom text to posts (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3450&#34;&gt;PR #3450&lt;/a&gt;), the desktop notifications view is redesigned with native OS toasts and a shared filter (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3457&#34;&gt;PR #3457&lt;/a&gt;), the Messages column picks up a privacy lock (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3432&#34;&gt;PR #3432&lt;/a&gt;), &lt;code&gt;NostrServer.ingest&lt;/code&gt; adds a local write path with per-submission verify skip (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3469&#34;&gt;PR #3469&lt;/a&gt;), and &lt;code&gt;equals&lt;/code&gt;/&lt;code&gt;hashCode&lt;/code&gt; contracts are repaired in the OpenTimestamps verify path (&lt;a href=&#34;https://github.com/vitorpamplona/amethyst/pull/3477&#34;&gt;PR #3477&lt;/a&gt;).&lt;/p&gt;

&lt;h3 id=&#34;buzz-keeps-hardening-the-relay-and-defines-kind-44200-for-agent-turn-metrics-2&#34;&gt;Buzz keeps hardening the relay and defines kind 44200 for agent turn metrics&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/block/buzz&#34;&gt;Buzz&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub16l0ck0s5zened29dsaqtqm6z0t4fmk2mwtszw64fz7fppcnls8mss3yj9s&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;block-opensource&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub16l0…yj9s&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; (the project formerly named Sprout) landed 123 PRs merged in the July 1 through July 7 window. Two threads carry most of the weight. The first is a new event kind for agent telemetry: &lt;a href=&#34;https://github.com/block/buzz/pull/1441&#34;&gt;PR #1441&lt;/a&gt; defines NIP-AM durable encrypted agent turn metrics as kind 44200, which lands the telemetry as a signed event the user&amp;#39;s own relay archives, keeping metrics on user-owned infrastructure. A local archive for the kind follows (&lt;a href=&#34;https://github.com/block/buzz/pull/1555&#34;&gt;PR #1555&lt;/a&gt;), the remove-kind path is made atomic (&lt;a href=&#34;https://github.com/block/buzz/pull/1562&#34;&gt;PR #1562&lt;/a&gt;), and the model name is threaded through the emit path so downstream readers can distinguish which model produced which turn (&lt;a href=&#34;https://github.com/block/buzz/pull/1564&#34;&gt;PR #1564&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The second thread is relay performance. Post-commit dispatch is deferred and a verify clone is avoided (&lt;a href=&#34;https://github.com/block/buzz/pull/1453&#34;&gt;PR #1453&lt;/a&gt;), ingest and fan-out DB round trips are batched with measured p99 ack drops of 7 to 16 percent and p999 tail drops of 29 to 53 percent versus the prior tip (&lt;a href=&#34;https://github.com/block/buzz/pull/1454&#34;&gt;PR #1454&lt;/a&gt;), multi-filter query execution runs with bounded concurrency (&lt;a href=&#34;https://github.com/block/buzz/pull/1457&#34;&gt;PR #1457&lt;/a&gt;), and outbound WebSocket data frames batch on send (&lt;a href=&#34;https://github.com/block/buzz/pull/1464&#34;&gt;PR #1464&lt;/a&gt;). Alongside the perf work, a per-community workspace icon set that admins configure and the relay serves via &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-11/&#34;&gt;NIP-11&lt;/a&gt; extends NIP-11&amp;#39;s information document with a per-community customization surface (&lt;a href=&#34;https://github.com/block/buzz/pull/1463&#34;&gt;PR #1463&lt;/a&gt;), agent owners can delete their agent&amp;#39;s messages via relay kind:5 events plus matching desktop and mobile UX (&lt;a href=&#34;https://github.com/block/buzz/pull/1519&#34;&gt;PR #1519&lt;/a&gt;), OpenTelemetry tracing joins Prometheus metrics on the relay (&lt;a href=&#34;https://github.com/block/buzz/pull/1398&#34;&gt;PR #1398&lt;/a&gt;), and the git repo-name registry moves to Postgres (&lt;a href=&#34;https://github.com/block/buzz/pull/1432&#34;&gt;PR #1432&lt;/a&gt;).&lt;/p&gt;

&lt;h3 id=&#34;divine-video-wires-up-relay-signature-verification-and-a-nostrconnect-extraction-2&#34;&gt;Divine Video wires up relay signature verification and a NostrConnect extraction&lt;/h3&gt;

&lt;p&gt;Divine (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1wmr34t36fy03m8hvgl96zl3znndyzyaqhwmwdtshwmtkg03fetaqhjg240&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;rabble&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1wmr…g240&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) Video&amp;#39;s &lt;a href=&#34;https://github.com/divinevideo/divine-mobile&#34;&gt;mobile app&lt;/a&gt; merged 97 PRs in the window, and the Nostr-facing thread is trust boundary hardening plus authentication cleanup. &lt;a href=&#34;https://github.com/divinevideo/divine-mobile/pull/5774&#34;&gt;PR #5774&lt;/a&gt; verifies inbound relay event signatures, closing a class of trust-in-the-relay bugs; &lt;a href=&#34;https://github.com/divinevideo/divine-mobile/pull/5828&#34;&gt;PR #5828&lt;/a&gt; encrypts the FCM push token in the kind-3080 deregistration event so the user&amp;#39;s device token stops appearing in cleartext on the relay when they unsubscribe; and &lt;a href=&#34;https://github.com/divinevideo/divine-mobile/pull/5831&#34;&gt;PR #5831&lt;/a&gt; chunks the kind:5 deletion REQ so a user with a large delete history no longer overflows the relay frame. On the authentication side, &lt;a href=&#34;https://github.com/divinevideo/divine-mobile/pull/5826&#34;&gt;PR #5826&lt;/a&gt; extracts a &lt;code&gt;NostrConnectCoordinator&lt;/code&gt; for the &lt;code&gt;nostrconnect://&lt;/code&gt; flow, cleaning up the &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; client-initiated bunker code path ahead of a broader auth refactor tracked under &lt;a href=&#34;https://github.com/divinevideo/divine-mobile/issues/4741&#34;&gt;issue #4741&lt;/a&gt;. &lt;a href=&#34;https://github.com/divinevideo/divine-mobile/pull/5709&#34;&gt;PR #5709&lt;/a&gt; maps kind-16 reposts when &lt;code&gt;notification_type&lt;/code&gt; is absent so a repost notification renders correctly even when the sending client omits the hint.&lt;/p&gt;

&lt;h3 id=&#34;zap-cooking-fixes-nip-46-bunker-login-and-adds-nip-50-recipe-search-2&#34;&gt;Zap Cooking fixes NIP-46 bunker login and adds NIP-50 recipe search&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/zapcooking/frontend&#34;&gt;Zap Cooking&amp;#39;s frontend&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1xxdd8eusvdxmaph3fkuu9x2mymhrcc3ghe2l38zv0l4f4nqp659qskkt7a&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;ZapCooking&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1xxd…kt7a&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; merged 18 PRs in the window along one theme: making Nostr auth surfaces recover from failure. &lt;a href=&#34;https://github.com/zapcooking/frontend/pull/503&#34;&gt;PR #503&lt;/a&gt; fixes bunker login with an explicit connect handshake, authUrl handling, and error surfacing so a user attaching an external signer sees a real error message on failure where the previous cut hung the login screen. &lt;a href=&#34;https://github.com/zapcooking/frontend/pull/495&#34;&gt;PR #495&lt;/a&gt; adds NIP-98 auth to the extract-recipe endpoint&amp;#39;s image and text upload paths so uploads are pubkey-attributed. A separate feature thread lands NIP-50 full-text recipe search via the nostrarchives search relay backend (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/483&#34;&gt;PR #483&lt;/a&gt;), letting a user query recipes across the relay corpus without a client-side index. Content-rendering polish ships alongside: quoted-note content and media now surface directly in the parent note replacing the previous buried-link fallback (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/491&#34;&gt;PR #491&lt;/a&gt;), link previews and hashtag sizing land (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/492&#34;&gt;PR #492&lt;/a&gt;), multi-word search queries work (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/482&#34;&gt;PR #482&lt;/a&gt;), and server-side social preview cards are generated for note, reads, and profile links (&lt;a href=&#34;https://github.com/zapcooking/frontend/pull/494&#34;&gt;PR #494&lt;/a&gt;).&lt;/p&gt;

&lt;h3 id=&#34;swift-nostr-client-v0-6-0-progresses-toward-a-first-stable-cut-2&#34;&gt;swift-nostr-client v0.6.0 progresses toward a first stable cut&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/yysskk/swift-nostr-client&#34;&gt;yysskk/swift-nostr-client&lt;/a&gt; shipped &lt;a href=&#34;https://github.com/yysskk/swift-nostr-client/releases/tag/0.6.0&#34;&gt;v0.6.0&lt;/a&gt; alongside 30 merged PRs. The Swift Nostr library moves closer to a first stable API surface for Swift Nostr clients that avoid linking the MDK or MarmotKit toolchains.&lt;/p&gt;

&lt;h3 id=&#34;napplet-realigns-nip-5d-sandbox-surface-and-drops-nap-resource-2&#34;&gt;Napplet realigns NIP-5D sandbox surface and drops NAP-RESOURCE&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/napplet&#34;&gt;Napplet&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1uac67zc9er54ln0kl6e4qp2y6ta3enfcg7ywnayshvlw9r5w6ehsqq99rx&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;sandwich&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1uac…99rx&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) shipped 26 more releases across &lt;code&gt;@napplet/core&lt;/code&gt;, &lt;code&gt;@napplet/nap&lt;/code&gt;, &lt;code&gt;@napplet/sdk&lt;/code&gt;, &lt;code&gt;@napplet/shim&lt;/code&gt;, &lt;code&gt;@napplet/skills&lt;/code&gt;, and &lt;code&gt;@napplet/vite-plugin&lt;/code&gt;, plus 9 PRs to the &lt;code&gt;naps&lt;/code&gt; spec repo. The most substantive spec move is &lt;a href=&#34;https://github.com/napplet/naps/pull/79&#34;&gt;PR #79&lt;/a&gt; reverting the NAP-RESOURCE merge (sandboxed resource fetching over &lt;code&gt;https&lt;/code&gt;, &lt;code&gt;blossom&lt;/code&gt;, &lt;code&gt;htree&lt;/code&gt;, &lt;code&gt;nostr&lt;/code&gt;, and &lt;code&gt;data&lt;/code&gt; schemes was withdrawn from the spec pending more review), and PRs #81 through #86 replace schema pseudocode with tables across NAP-IDENTITY, NAP-INC, NAP-SHELL, NAP-THEME, and NAP-INTENT. On the runtime side, &lt;code&gt;kehto/web&lt;/code&gt; (the napplet browser and shell) merged 15 PRs on &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-5d/&#34;&gt;NIP-5D&lt;/a&gt; sandbox capability language, CSP insertion, and the injected NAP-KEYS prelude, narrowing the sandbox surface for napplet execution.&lt;/p&gt;

&lt;h3 id=&#34;primal-android-extends-the-remote-signer-surface-2&#34;&gt;primal-android extends the remote-signer surface&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/PrimalHQ/primal-android-app&#34;&gt;Primal Android&lt;/a&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub12vkcxr0luzwp8e673v29eqjhrr7p9vqq8asav85swaepclllj09sylpugg&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;primal&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub12vk…pugg&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; merged 18 PRs in the window. On the Nostr side, &lt;a href=&#34;https://github.com/PrimalHQ/primal-android-app/pull/1075&#34;&gt;PR #1075&lt;/a&gt; implements &lt;code&gt;switch_relays&lt;/code&gt; and &lt;code&gt;logout&lt;/code&gt; methods for the app&amp;#39;s remote-signer role, extending Primal&amp;#39;s NIP-46 signer surface. &lt;a href=&#34;https://github.com/PrimalHQ/primal-android-app/pull/1083&#34;&gt;PR #1083&lt;/a&gt; adds a splash-gated local app-migration framework, and &lt;a href=&#34;https://github.com/PrimalHQ/primal-android-app/pull/1080&#34;&gt;PR #1080&lt;/a&gt; implements note-feed prefetching in the splash view-model. The rest is UI polish across the Home top and bottom bar, Explore hints, and the profile screen.&lt;/p&gt;

&lt;h3 id=&#34;wisp-adds-a-multi-account-switcher-and-blossom-parser-tests-2&#34;&gt;Wisp adds a multi-account switcher and Blossom parser tests&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/barrydeen/wisp&#34;&gt;Wisp&lt;/a&gt; (&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/npub1utx00neqgqln72j22kej3ux7803c2k986henvvha4thuwfkper4s7r50e8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;utxo the webmaster 🧑‍💻&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;npub1utx…50e8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;) merged 9 PRs. &lt;a href=&#34;https://github.com/barrydeen/wisp/pull/604&#34;&gt;PR #604&lt;/a&gt; adds a multi-account switcher with an explicit cancel path on the add-account flow. &lt;a href=&#34;https://github.com/barrydeen/wisp/pull/613&#34;&gt;PR #613&lt;/a&gt; adds unit tests for &lt;code&gt;Blossom.parseServerList&lt;/code&gt;, tightening the &lt;a href=&#34;https://nostrcompass.org/en/topics/blossom/&#34;&gt;Blossom&lt;/a&gt; server-list parser. &lt;a href=&#34;https://github.com/barrydeen/wisp/pull/574&#34;&gt;PR #574&lt;/a&gt; rewrites the zap sheet for iOS layout with an instant-zap settings surface, &lt;a href=&#34;https://github.com/barrydeen/wisp/pull/605&#34;&gt;PR #605&lt;/a&gt; turns transaction history into a swipe-up bottom sheet, &lt;a href=&#34;https://github.com/barrydeen/wisp/pull/611&#34;&gt;PR #611&lt;/a&gt; parses hashtags with non-ASCII Unicode letters, &lt;a href=&#34;https://github.com/barrydeen/wisp/pull/609&#34;&gt;PR #609&lt;/a&gt; keeps the profile notes feed paginating and renders inline gallery media, and &lt;a href=&#34;https://github.com/barrydeen/wisp/pull/603&#34;&gt;PR #603&lt;/a&gt; preserves blank lines before inline profile and hashtag segments.&lt;/p&gt;

&lt;h3 id=&#34;tao-and-wired-raise-the-pow-signal-to-21-bits-and-surface-fresh-pow-roots-2&#34;&gt;TAO and Wired raise the PoW signal to 21 bits and surface fresh-PoW roots&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/smolgrrr/TAO&#34;&gt;smolgrrr/TAO&lt;/a&gt; and &lt;a href=&#34;https://github.com/smolgrrr/Wired&#34;&gt;smolgrrr/Wired&lt;/a&gt; (the same commit set landed in both repos) merged 13 PRs. &lt;a href=&#34;https://github.com/smolgrrr/TAO/pull/84&#34;&gt;PR #84&lt;/a&gt; raises the default post-signal proof-of-work target to 21 leading zero bits, and &lt;a href=&#34;https://github.com/smolgrrr/TAO/pull/80&#34;&gt;PR #80&lt;/a&gt; surfaces feed roots from fresh PoW activity so a client can rank the timeline by recent NIP-13 work; the previous ranking was raw event age. &lt;a href=&#34;https://github.com/smolgrrr/TAO/pull/75&#34;&gt;PR #75&lt;/a&gt; restores a custom emoji picker and &lt;a href=&#34;https://github.com/smolgrrr/TAO/pull/65&#34;&gt;PR #65&lt;/a&gt; adds first-frame video previews. This is the second Nostr client this week to lean on NIP-13 as a first-class filter for user-generated content, complementing Bitchat&amp;#39;s channel-scoped PoW.&lt;/p&gt;

&lt;h3 id=&#34;keep-android-polishes-nip-46-ux-and-lands-a-toctou-fix-2&#34;&gt;keep-android polishes NIP-46 UX and lands a TOCTOU fix&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/privkeyio/keep-android&#34;&gt;privkeyio/keep-android&lt;/a&gt; shipped &lt;a href=&#34;https://github.com/privkeyio/keep-android/releases/tag/v1.1.5&#34;&gt;v1.1.5&lt;/a&gt; alongside 13 merged PRs, then &lt;a href=&#34;https://github.com/privkeyio/keep-android/releases/tag/v1.1.6&#34;&gt;v1.1.6&lt;/a&gt; on July 8 pinning the underlying keep core to v0.5.0. Keep is a mobile identity vault (covered in &lt;a href=&#34;https://nostrcompass.org/en/newsletters/2026-07-01-newsletter/#custid-launches-as-a-mobile-identity-vault-with-nip-46-and-nfc-challenge-flow&#34;&gt;Issue #29&lt;/a&gt; as CustID). v1.1.5 was UX polish on the &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-46/&#34;&gt;NIP-46&lt;/a&gt; challenge flow. v1.1.6 closes a check-then-set (TOCTOU) race in &lt;code&gt;set_active_share&lt;/code&gt; from the underlying keep-mobile crate, surfaces the URL and method being authorized on the &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-98/&#34;&gt;NIP-98&lt;/a&gt; HTTP-auth approval prompt so a user can see what they are signing, and switches the RNG health check to fail closed (return an error) instead of panicking. An instrumented test covers the NIP-55 approval-flow kill switch. The v0.5.0 CLI features that came with the underlying release (threshold-OPRF unlock, software DKG, HD FROST wallets) are not surfaced in the Android app yet; v1.1.6 delivers the security fixes only.&lt;/p&gt;

&lt;h3 id=&#34;heartwood-ships-the-relay-to-serial-signing-bridge-2&#34;&gt;Heartwood ships the relay-to-serial signing bridge&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/forgesworn/heartwood/releases/tag/v0.7.0&#34;&gt;forgesworn/heartwood v0.7.0&lt;/a&gt; lands the relay-to-serial signing bridge that was in flight last week, wiring the HSM-mode data plane for Bray&amp;#39;s serial-signer path. &lt;a href=&#34;https://github.com/forgesworn/heartwood/pull/11&#34;&gt;PR #11&lt;/a&gt; is the bridge itself, &lt;a href=&#34;https://github.com/forgesworn/heartwood/pull/13&#34;&gt;PR #13&lt;/a&gt; adds serial-frame coverage and fixes the device &lt;code&gt;read_frame&lt;/code&gt; payload offset, and &lt;a href=&#34;https://github.com/forgesworn/heartwood/pull/14&#34;&gt;PR #14&lt;/a&gt; extracts the serial frame codec into a shared &lt;code&gt;heartwood-frame&lt;/code&gt; crate.&lt;/p&gt;

&lt;h3 id=&#34;safebox-publishes-a-phase-3-progress-report-and-a-freebsd-jail-runbook-2&#34;&gt;SafeBox publishes a Phase 3 progress report and a FreeBSD jail runbook&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/trbouma/safebox&#34;&gt;SafeBox&lt;/a&gt; is a private portable data vault on Nostr that combines &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-47/&#34;&gt;NIP-47&lt;/a&gt; Nostr Wallet Connect, nAuth, nembed, and relay-mediated record transfer over QR and NFC into one operator-deployable service. A &lt;a href=&#34;https://github.com/trbouma/safebox/blob/main/docs/PROGRESS-REPORT-2026-07.md&#34;&gt;July 2026 progress report&lt;/a&gt; published on July 6 marks Phase 3 as substantially complete: 49 commits landed since the April report, bringing the repository to 1,136 commits, and the four Phase 3 engineering commitments (harden Phase 2 experiments, support interoperable instances, prepare for scale, add commercial-product discipline) are largely delivered. The report frames the next step as a bounded pilot, and discloses that a telecommunications provider under NDA is exploring a health-records pilot on SafeBox.&lt;/p&gt;

&lt;p&gt;The concrete Nostr-facing work landed earlier in Phase 3 and is summarized in the report: mutating NWC actions are now queued to avoid proof races, failed Lightning melts protect proofs before returning, long-lived NWC listeners now refresh proactively so a session survives past its idle threshold; the previous behavior was a silent stall, and LNURL callbacks use canonical origins with explicit JSON and CORS responses. QR and NFC record exchange gained a unified flow spec covering recipient-presented, sender-presented, and cross-device presentation modes with clearer KEM (Key Encapsulation Mechanism) handling and replay protection through the Open Quantum Safe library. The in-window commit is &lt;a href=&#34;https://github.com/trbouma/safebox/commit/6866dae&#34;&gt;&lt;code&gt;6866dae&lt;/code&gt;&lt;/a&gt;, which adds a &lt;a href=&#34;https://github.com/trbouma/safebox/blob/main/docs/devops/freebsd-jail-from-scratch.md&#34;&gt;FreeBSD jail deployment and liboqs build runbook&lt;/a&gt; alongside a &lt;a href=&#34;https://github.com/trbouma/safebox/blob/main/docs/devops/SAFEBOX-FREEBSD-APPLIANCE-SPEC.md&#34;&gt;FreeBSD appliance specification&lt;/a&gt;, documenting ZFS snapshots, jail isolation, &lt;code&gt;rc.d&lt;/code&gt; service management, host-level reverse proxy configuration, and rollback procedure for a SafeBox deployment on FreeBSD/ARM hardware.&lt;/p&gt;

&lt;p&gt;The report also announces &lt;a href=&#34;https://github.com/trbouma/openetr&#34;&gt;OpenETR&lt;/a&gt; as a distinct spin-off applying SafeBox&amp;#39;s cryptographic-control-plus-portable-records architecture to electronic transferable records: bills of lading, warehouse receipts, promissory notes, and certificates. OpenETR&amp;#39;s repo saw 7 commits on July 7 including &lt;a href=&#34;https://github.com/trbouma/openetr/commit/ea612a9&#34;&gt;&lt;code&gt;ea612a9&lt;/code&gt;&lt;/a&gt; separating attestation from the core record, &lt;a href=&#34;https://github.com/trbouma/openetr/commit/ca153a3&#34;&gt;&lt;code&gt;ca153a3&lt;/code&gt;&lt;/a&gt; on mandate-versus-effect handling, and &lt;a href=&#34;https://github.com/trbouma/openetr/commit/ba84b61&#34;&gt;&lt;code&gt;ba84b61&lt;/code&gt;&lt;/a&gt; adding a comparison to verifiable-credential formats.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;protocol-work-and-nip-updates-2&#34;&gt;Protocol work and NIP updates&lt;/h2&gt;

&lt;h3 id=&#34;merged-nip-51-and-nip-37-align-the-kind-10013-name-2&#34;&gt;Merged: NIP-51 and NIP-37 align the kind 10013 name&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2404&#34;&gt;PR #2404&lt;/a&gt; is a prose-only consistency fix. In &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-37/&#34;&gt;NIP-37&lt;/a&gt;, kind 10013 is named &lt;code&gt;Relay List for Private Content&lt;/code&gt;; in &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-51/&#34;&gt;NIP-51&lt;/a&gt; under &lt;code&gt;Draft relays&lt;/code&gt;, the same kind was described with different wording. NIP-51 now uses the NIP-37 name for the same event kind. No wire behavior changes and no new tag semantics; the value is that NIP-51 is the umbrella spec for list-shaped events and NIP-37 is the private-content follow-up, and misaligned naming between the two makes it easy to miss that they describe the same kind.&lt;/p&gt;

&lt;h3 id=&#34;open-nip-ad-nostr-web-addresses-via-well-known-lookup-2&#34;&gt;Open: NIP-AD Nostr Web Addresses via .well-known lookup&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2406&#34;&gt;PR #2406&lt;/a&gt; opens as the successor to a closed PR #2393 with a full spec draft at &lt;a href=&#34;https://github.com/nostr-protocol/nips/blob/2f4b09335c54a993d483bc220195e3f4a33df1ec/AD.md&#34;&gt;&lt;code&gt;AD.md&lt;/code&gt;&lt;/a&gt;. NIP-AD defines web URLs that carry an optional Nostr counterpart. A client that sees a URL like &lt;code&gt;https://golf.com/players&lt;/code&gt; requests &lt;code&gt;https://golf.com/.well-known/nostr.json?ad=/players&lt;/code&gt;, which returns a JSON object mapping paths to &lt;code&gt;{filter, relays}&lt;/code&gt; pairs. The returned filter is a standard NIP-01 filter (kinds, authors, &lt;code&gt;#d&lt;/code&gt;, &lt;code&gt;limit&lt;/code&gt;, etc.), and the relays array names which relays the client should query. With &lt;code&gt;&amp;#34;limit&amp;#34;: 1&lt;/code&gt; the URL resolves to a single event; without it, to a list. In a normal web browser the URL renders HTML like any other URL, so the same domain can serve web users and Nostr clients from one canonical path. The stated use cases include &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-29/&#34;&gt;NIP-29&lt;/a&gt; group names resolving to a kind 39000 event on a specific relay (removing the need for group id farming), &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-5a/&#34;&gt;NIP-5A&lt;/a&gt; nsite lookups, hosted feeds that publish a &lt;code&gt;{&amp;#34;ids&amp;#34;: [...]}&lt;/code&gt; filter, native rendering of pasted &lt;code&gt;njump.me/nevent1...&lt;/code&gt; and client-specific event URLs, and Nostr-fueled blogs that exist both natively inside Nostr and to visitors outside. The &lt;code&gt;.well-known/nostr.json&lt;/code&gt; reuse plus path-as-object-key layout is chosen so the resolver can be a static file.&lt;/p&gt;

&lt;h3 id=&#34;open-nip-86-claim-management-for-invite-codes-2&#34;&gt;Open: NIP-86 claim management for invite codes&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2408&#34;&gt;PR #2408&lt;/a&gt; proposes adding three methods to &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-86/&#34;&gt;NIP-86&lt;/a&gt;: &lt;code&gt;listclaims&lt;/code&gt; (params &lt;code&gt;[]&lt;/code&gt;, returns an array of &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-43/&#34;&gt;NIP-43&lt;/a&gt; invite codes), &lt;code&gt;createclaim&lt;/code&gt; (params &lt;code&gt;[claim]&lt;/code&gt;, returns &lt;code&gt;true&lt;/code&gt;), and &lt;code&gt;deleteclaim&lt;/code&gt; (params &lt;code&gt;[claim]&lt;/code&gt;, returns &lt;code&gt;true&lt;/code&gt;). Today NIP-86 lets a relay admin manage users and role assignments but has no invite-code surface. The PR author&amp;#39;s use case is community-relay onboarding: an admin creates an invite code associated with a role, collects payment before the user&amp;#39;s identity is created, hands the invite code to the user, and a bot listens for the resulting kind 28935 claim event on the relay and auto-assigns the role. The three methods let that flow run entirely through the relay management RPC.&lt;/p&gt;

&lt;h3 id=&#34;open-role-color-as-h-s-l-tuple-2&#34;&gt;Open: role color as (h, s, l) tuple&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2402&#34;&gt;PR #2402&lt;/a&gt; changes the role color format in &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-43/&#34;&gt;NIP-43&lt;/a&gt; from a single &lt;code&gt;hue&lt;/code&gt; value (0 to 360) to a tuple of &lt;code&gt;hue&lt;/code&gt; (0 to 360), &lt;code&gt;saturation&lt;/code&gt; (0 to 1), and &lt;code&gt;lightness&lt;/code&gt; (0 to 1). Empty strings are permitted for any component so clients can supply their own defaults for a coherent palette, and the spec text recommends providing only &lt;code&gt;hue&lt;/code&gt; unless a specific color like silver is desired. The change threads through NIP-86 in the same PR: &lt;code&gt;createrole&lt;/code&gt; and &lt;code&gt;editrole&lt;/code&gt; now take &lt;code&gt;[id, label, description, [h, s, l], order]&lt;/code&gt;; the previous signature carried a single-color parameter in the same slot. The motivation is that hue alone forces clients to pick saturation and lightness for the operator, so different clients render the same role at visibly different intensities.&lt;/p&gt;

&lt;h3 id=&#34;open-nip-80-hardware-attested-media-provenance-2&#34;&gt;Open: NIP-80 hardware-attested media provenance&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2409&#34;&gt;PR #2409&lt;/a&gt; opens NIP-80, an event format for media provenance anchored in capture hardware. A camera signs each photo at the moment of capture and publishes the proof to relays keyed by the content itself, so verification survives metadata stripping, re-hosting, and platform takedowns. The proposal defines six new event kinds: kind 1080 for capture attestations, kind 1081 for derivation attestations covering resize, crop, recompress, or redact operations (with a reveal mode or zero-knowledge option), kind 1082 for revocations (regular events, permanent, author-scoped, monotonic), kind 11080 for device announcements, kind 31080 for device endorsements, and kind 31081 for a device set for anonymous attestations (marked experimental and possibly split into a companion NIP). Reused primitives include NIP-94 &lt;code&gt;x&lt;/code&gt;-tag semantics, &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-92/&#34;&gt;NIP-92&lt;/a&gt; &lt;code&gt;imeta&lt;/code&gt;, &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-65/&#34;&gt;NIP-65&lt;/a&gt; for revocation discovery, &lt;a href=&#34;https://nostrcompass.org/en/topics/blossom/&#34;&gt;Blossom&lt;/a&gt; for media storage, and optional &lt;a href=&#34;https://github.com/nostr-protocol/nips/blob/master/03.md&#34;&gt;NIP-03&lt;/a&gt; timestamp anchoring. The signing model pairs a BIP-340 device key with a hardware ECDSA key because mainstream secure elements do not yet produce BIP-340 signatures (Microchip ATECC608 supports P-256, NXP SE050 supports secp256k1 but only ECDSA, TPM 2.0 modules and Infineon OPTIGA Trust M cover P-256/RSA, Apple Secure Enclave and Android StrongBox use P-256). The stated scope explicitly does not attempt to prove the scene is real: an attestation proves this exact image came from this device at approximately this time and was modified only in declared, provable ways, and the specification forbids clients from collapsing results into a bare &amp;#34;authentic&amp;#34; badge. A working prototype &lt;a href=&#34;https://github.com/PrarthanaPurohit/OpenVeilCam&#34;&gt;OpenVeilCam&lt;/a&gt;, a Rust camera runtime for Raspberry Pi using the ATECC608 secure element, is being updated to publish the proposed event kinds alongside a standalone verifier.&lt;/p&gt;

&lt;h3 id=&#34;open-nip-01-pagination-hardening-2&#34;&gt;Open: NIP-01 pagination hardening&lt;/h3&gt;

&lt;p&gt;&lt;a href=&#34;https://github.com/nostr-protocol/nips/pull/2407&#34;&gt;PR #2407&lt;/a&gt; adds a &amp;#34;Pagination &amp;amp; limits&amp;#34; subsection to NIP-01. The concrete rules: a relay that imposes a maximum &lt;code&gt;limit&lt;/code&gt; MUST set it greater than the largest number of events sharing a single &lt;code&gt;created_at&lt;/code&gt; in its database, so no single second can fill a page and stall pagination. Clients paging backwards MUST repeat requests with &lt;code&gt;until = oldest&lt;/code&gt; (inclusive) and MUST deduplicate by &lt;code&gt;id&lt;/code&gt; (since the oldest second is re-fetched each round), and paging is complete when a round yields no new events after deduplication. If a full page has oldest and newest events sharing one &lt;code&gt;created_at&lt;/code&gt;, the client MUST retry that second with a larger &lt;code&gt;limit&lt;/code&gt;, and if the relay clamps the larger &lt;code&gt;limit&lt;/code&gt; and still returns a page confined to one second, the client MUST either advance with &lt;code&gt;until = oldest - 1&lt;/code&gt; (treating unretrieved events as dropped) or abort. Normal paging MUST NOT set &lt;code&gt;limit&lt;/code&gt;; the relay maximum is authoritative, and a smaller value reintroduces the stall. Raising &lt;code&gt;limit&lt;/code&gt; to drain a stuck second is the one exception. This fix matters because a naive &lt;code&gt;since&lt;/code&gt;/&lt;code&gt;until&lt;/code&gt; cursor either misses events with duplicate timestamps or reprocesses them, and the current NIP-01 text does not tell either side how to escape the trap.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;nip-deep-dive-nip-13-proof-of-work-2&#34;&gt;NIP Deep Dive: NIP-13 (Proof of Work)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-13/&#34;&gt;NIP-13&lt;/a&gt; defines a proof-of-work mechanism for Nostr events. It exists because email-style spam is trivial to produce on a public relay network: anyone can generate a keypair and flood a topic, and there is no economic cost per event. NIP-13 lets an event author impose a computational cost per event that a spammer would have to pay in aggregate but a regular sender pays only once per message. Relays and clients can then require or prefer events that meet a difficulty threshold.&lt;/p&gt;

&lt;h3 id=&#34;the-mechanism-3&#34;&gt;The mechanism&lt;/h3&gt;

&lt;p&gt;An event author picks a difficulty target expressed in bits and mines the event&amp;#39;s id (the sha256 hash of the serialized event) until it has at least that many leading zero bits. Because the event id includes the &lt;code&gt;created_at&lt;/code&gt; timestamp, the tags, and the content, mining requires changing something in the event body to search the hash space. NIP-13 defines a &lt;code&gt;nonce&lt;/code&gt; tag for exactly this purpose:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[&amp;#34;nonce&amp;#34;, &amp;#34;&amp;lt;nonce_value&amp;gt;&amp;#34;, &amp;#34;&amp;lt;target_bits&amp;gt;&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;nonce_value&lt;/code&gt; is any string the miner picks; the &lt;code&gt;target_bits&lt;/code&gt; is the difficulty the miner committed to. A verifier counts the leading zero bits of the event id and compares against &lt;code&gt;target_bits&lt;/code&gt;. The &lt;code&gt;target_bits&lt;/code&gt; in the tag is a claim, and a verifier measures the actual leading-zero count of the id to confirm it.&lt;/p&gt;

&lt;p&gt;The number of leading zero bits in a random sha256 output follows a geometric distribution: each additional bit doubles the expected work. 8 bits averages 256 hash attempts, 20 bits averages roughly one million, and 28 bits averages roughly 268 million. Bitchat&amp;#39;s 8-bit target for geohash-channel messages costs under one millisecond of CPU on modern hardware and completes below any perceptible latency. TAO and Wired&amp;#39;s 21-bit default is roughly two million hash attempts per post, which is fast on a laptop but expensive at scale for a bot farm. NIP-13 does not mandate a difficulty; each relay and client picks its own.&lt;/p&gt;

&lt;h3 id=&#34;example-event-1-3&#34;&gt;Example event&lt;/h3&gt;

&lt;p&gt;A minimal NIP-13-mined kind-1 note looks like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;id&amp;#34;: &amp;#34;000000000e9d97a1ab09fc381030b346cdd7a1a8a6f27c9c88f68c8b9d0f6c8a&amp;#34;,
  &amp;#34;pubkey&amp;#34;: &amp;#34;82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2&amp;#34;,
  &amp;#34;created_at&amp;#34;: 1720368000,
  &amp;#34;kind&amp;#34;: 1,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;nonce&amp;#34;, &amp;#34;72847&amp;#34;, &amp;#34;28&amp;#34;]
  ],
  &amp;#34;content&amp;#34;: &amp;#34;hello, this cost me 28 bits of PoW&amp;#34;,
  &amp;#34;sig&amp;#34;: &amp;#34;b1a5c9c74cff59f8a48e5c3b3d8e1c8e7e2c1d4a8e2b9f7d1c3e8b4f6a2c8d1e9f4b3c7a1d8e5b2f9c6a3d7e1b8f4c9a2d6e3b7f1c8a4d9e2b5f8c1a7d4e6b9f3c2&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;id&lt;/code&gt; starts with seven hex zeros (28 leading zero bits, matching the &lt;code&gt;target_bits&lt;/code&gt; in the nonce tag). The miner varied the &lt;code&gt;nonce_value&lt;/code&gt; &lt;code&gt;72847&lt;/code&gt; until the id met the target. A verifier hashes the serialized event and confirms the id has at least 28 leading zero bits, then verifies the signature. NIP-13 adds no new fields; it adds the &lt;code&gt;nonce&lt;/code&gt; tag and constrains the id&amp;#39;s zero-bit count.&lt;/p&gt;

&lt;h3 id=&#34;where-it-is-used-1-3&#34;&gt;Where it is used&lt;/h3&gt;

&lt;p&gt;Bitchat&amp;#39;s 1.5.4 release uses 8-bit PoW on kind 20000 geohash-channel messages: outbound sends mine the tag before publishing and inbound events with validated PoW relax the per-sender intake rate limit. TAO and Wired use 21-bit PoW as the default post-signal threshold and surface feed roots from fresh PoW activity, treating PoW as a timeline ranking signal. &lt;a href=&#34;https://github.com/mattn/algia&#34;&gt;cagliostr&lt;/a&gt; enforces NIP-13 at the relay layer, rejecting events below a threshold. NoStrudel exposes a client-side PoW mining setting for authors who want to signal to filtering clients. Damus and Amethyst compute leading-zero bits when displaying events, letting a user see the PoW commitment on notes. Coracle exposes PoW both for mining and filtering. NDK and nostr-tools expose PoW mining helpers to library consumers.&lt;/p&gt;

&lt;p&gt;The design property that shapes NIP-13&amp;#39;s deployment is that PoW is unforgeable: a claim of &lt;code&gt;target_bits&lt;/code&gt; counts as evidence only when the id has that many leading zeros, and a counterfeit requires redoing the work. That property lets Bitchat use inbound PoW as a rate-limit relaxer even when a spammer claims a high difficulty; the check is a hash count, not a trust decision. The complementary property is that PoW does not commit the miner to any specific pubkey or content; a spammer can still choose to mine at 8 bits and burn compute, but the compute is a real cost. NIP-13 shifts the spam problem from &amp;#34;impossible&amp;#34; to &amp;#34;quantifiable&amp;#34; and lets clients set their own price.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;nip-deep-dive-nip-40-expiration-timestamp-2&#34;&gt;NIP Deep Dive: NIP-40 (Expiration Timestamp)&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;https://nostrcompass.org/en/topics/nip-40/&#34;&gt;NIP-40&lt;/a&gt; defines an &lt;code&gt;expiration&lt;/code&gt; tag that instructs a relay and a client that an event should be considered expired after a given Unix timestamp. It exists because Nostr events are otherwise permanent: once a signed event lands on a relay, the only way to remove it is a NIP-09 delete event, and even then a relay may retain the original. NIP-40 lets an author declare at publication time that an event is short-lived, and asks relays to stop serving it and clients to stop displaying it after the timestamp.&lt;/p&gt;

&lt;h3 id=&#34;the-mechanism-1-3&#34;&gt;The mechanism&lt;/h3&gt;

&lt;p&gt;An author adds an &lt;code&gt;expiration&lt;/code&gt; tag to an event:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[&amp;#34;expiration&amp;#34;, &amp;#34;&amp;lt;unix_timestamp&amp;gt;&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The timestamp is Unix seconds. A relay MAY reject events whose expiration is already in the past at ingest, MAY stop serving events whose expiration has passed, and SHOULD respect the author&amp;#39;s stated expiration. A client SHOULD hide expired events from the user. NIP-40 does not require the relay to delete the event, and it does not overrule NIP-70 protected-event semantics; it is a hint plus a soft contract.&lt;/p&gt;

&lt;p&gt;The tag lives on the event itself (or in the case of wrapped messaging, on the outer wrap). NIP-40 does not define delete semantics; the event remains a signed event that anyone who has it can still read. What NIP-40 gives is a coordinated expectation that the relay and the client will stop surfacing the event after the deadline. This makes NIP-40 useful for ephemeral posts, timed announcements, live-event notes that should stop being served after the event, and NIP-17 direct messages that should not linger past a stated horizon.&lt;/p&gt;

&lt;h3 id=&#34;interaction-with-gift-wrap-2&#34;&gt;Interaction with gift wrap&lt;/h3&gt;

&lt;p&gt;The rust-nostr PR that landed this week (&lt;a href=&#34;https://github.com/rust-nostr/nostr/pull/1384&#34;&gt;PR #1384&lt;/a&gt;) is a case study in how NIP-40 interacts with &lt;a href=&#34;https://nostrcompass.org/en/topics/nip-59/&#34;&gt;NIP-59&lt;/a&gt; gift wrap. NIP-59 defines a two-layer envelope: a kind:13 &amp;#34;seal&amp;#34; event signed by the sender&amp;#39;s real key, and a kind:1059 &amp;#34;gift wrap&amp;#34; event signed by an ephemeral key. Both layers have randomized &lt;code&gt;created_at&lt;/code&gt; values, up to 48 hours before the real send time, so a relay observer cannot recover the true send timestamp. NIP-59 mandates that the seal have empty tags.&lt;/p&gt;

&lt;p&gt;That mandate is why the expiration tag has to go on the gift wrap and stay off the seal, and why anchoring the tag to the real send time would defeat gift wrap&amp;#39;s timing privacy: if a caller passes an absolute expiration timestamp, an observer subtracts the caller&amp;#39;s intended TTL and recovers the real send time. rust-nostr&amp;#39;s design decision is to expose the API as a &lt;code&gt;Duration&lt;/code&gt; from the caller, then compute &lt;code&gt;expiration = wrap.created_at &#43; duration&lt;/code&gt; inside the library. The wrap&amp;#39;s &lt;code&gt;created_at&lt;/code&gt; is already randomized inside the library, so the expiration timestamp inherits the same randomization and does not leak the true send time.&lt;/p&gt;

&lt;h3 id=&#34;example-event-1-4&#34;&gt;Example event&lt;/h3&gt;

&lt;p&gt;A minimal NIP-40 example on a kind-1 note:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;{
  &amp;#34;id&amp;#34;: &amp;#34;1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b&amp;#34;,
  &amp;#34;pubkey&amp;#34;: &amp;#34;82341f882b6eabcd2ba7f1ef90aad961cf074af15b9ef44a09f9d2a8fbfbe6a2&amp;#34;,
  &amp;#34;created_at&amp;#34;: 1720368000,
  &amp;#34;kind&amp;#34;: 1,
  &amp;#34;tags&amp;#34;: [
    [&amp;#34;expiration&amp;#34;, &amp;#34;1720454400&amp;#34;]
  ],
  &amp;#34;content&amp;#34;: &amp;#34;this note expires in 24 hours&amp;#34;,
  &amp;#34;sig&amp;#34;: &amp;#34;d2e5b8a1c4f7b0d3e6a9c2f5b8d1e4a7c0f3b6d9e2a5c8f1b4d7e0a3c6f9b2d5e8a1c4f7b0d3e6a9c2f5b8d1e4a7c0f3b6d9e2a5c8f1b4d7e0a3c6f9b2d5e8a1&amp;#34;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;created_at&lt;/code&gt; is the Unix timestamp of publication; the expiration tag says the event should stop being served 86,400 seconds (24 hours) later. A relay that respects NIP-40 stops returning this event to REQs after &lt;code&gt;1720454400&lt;/code&gt;, and a client that respects NIP-40 hides it from the user after that time.&lt;/p&gt;

&lt;h3 id=&#34;where-it-is-used-1-4&#34;&gt;Where it is used&lt;/h3&gt;

&lt;p&gt;rust-nostr&amp;#39;s builders (&lt;code&gt;GiftWrapBuilder&lt;/code&gt;, &lt;code&gt;PrivateDirectMessageBuilder&lt;/code&gt;) now expose expiration as a first-class &lt;code&gt;Duration&lt;/code&gt; parameter. NDK exposes an expiration helper for kind-1 and DM builders. nostr-tools has a &lt;code&gt;getExpiration&lt;/code&gt; and &lt;code&gt;isExpired&lt;/code&gt; pair for reading and enforcing the tag. strfry, nostr-rs-relay, khatru, and other relay implementations respect NIP-40 in REQ handling (rejecting or omitting expired events depending on the operator&amp;#39;s policy). Damus, Amethyst, noStrudel, Coracle, and Primal all filter expired events from their timeline rendering. Live-activity clients like zap.stream use NIP-40 on the associated kind-1311 chat events so a live chat stops persisting after the stream ends.&lt;/p&gt;

&lt;p&gt;The design property that lands NIP-40 cleanly in most implementations is that it is opt-in per event and does not require coordinated deployment. An author can add the tag today; a relay that honors it gets a cleaner working set; a relay that ignores it does no worse than before; and a client that hides expired events gives the author what they asked for. The rust-nostr change this week reinforces that the tag&amp;#39;s placement matters as much as its presence: in a privacy-preserving envelope like NIP-59 gift wrap, the tag sits on the layer whose timestamp is already randomized, and the API surface prevents a caller from accidentally leaking a real timestamp back into the wrap.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;That&amp;#39;s it for this week. Building something or have news to share? Reach out via NIP-17 DM or find us on Nostr.&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-07-09T17:06:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxv76pqf94czucqrsyp0lw3cqt0cx6xtuv67zzqe6atkhpa3740zspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q475mx2</id>
    
      <title type="html">So close...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxv76pqf94czucqrsyp0lw3cqt0cx6xtuv67zzqe6atkhpa3740zspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q475mx2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstgl7w5s8mnh8sreh9ehenj3925hasmak7mc6n0gv6y744psk3vmgpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcpe8wk4&#39;&gt;nevent1q…8wk4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;So close...
    </content>
    <updated>2026-07-01T15:55:38&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0p877dqhz645v5gfnva66n6kjqgm649ulqcct2rk2kxc3n7uh72spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qelr5cd</id>
    
      <title type="html">This looks super cool actually.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0p877dqhz645v5gfnva66n6kjqgm649ulqcct2rk2kxc3n7uh72spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qelr5cd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvhe4lyzrn7fztdp9luvxgttlmkylgly3xfzkk38p3dxz2z5tcfsspzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcfdrq4a&#39;&gt;nevent1q…rq4a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This looks super cool actually.
    </content>
    <updated>2026-06-30T09:20:25&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs94hgwhuxwnd36kfd639ka2wktsauw852q7u654uuyekf29fza59cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q5r96lf</id>
    
      <title type="html">Building freedom tech too hard, are you?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs94hgwhuxwnd36kfd639ka2wktsauw852q7u654uuyekf29fza59cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q5r96lf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2n8rpr2qyl7fflnzrp2rk8xt43ell9yvhtvkg4zu46jdghxkw53gpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs8cm8qt&#39;&gt;nevent1q…m8qt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Building freedom tech too hard, are you?
    </content>
    <updated>2026-06-30T09:04:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2af0t8f3cth00wpjuy97u99tqs8nvnll4cq3cc02s05rdfh67neqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q6yknrw</id>
    
      <title type="html">Yeah, got DMs from @nprofile…at5u too. Seems like a first, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2af0t8f3cth00wpjuy97u99tqs8nvnll4cq3cc02s05rdfh67neqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q6yknrw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqzlj5e2k9p0usrca7nz22skc3agl6s6zzxaklgdr978mm4xjkspzdmhxue69uhhwmm59e6hg7r09ehkuef0l6uw4k&#39;&gt;nevent1q…uw4k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yeah, got DMs from &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsyk3zlkkuj57r6y9m7x0msgpwa50caca9ll93p8kfjs406pn003kcpr4mhxue69uhkummnw3ez6vp39eukz6mfdphkumn99e3k7mf0qyg8wumn8ghj7mn0wd68ytnddakj7qgkwaehxw309aex2mrp0yhx6mmnw3ezuur4vghsqhat5u&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Wisp Rewards&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…at5u&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; too.&lt;br/&gt;Seems like a first, congrats on your success, I guess?
    </content>
    <updated>2026-06-30T09:02:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0g82un3quccvq0ty5pe3vmhn8tgyulm7tfejark5vas38sggv38cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqhma8f</id>
    
      <title type="html">All of them.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0g82un3quccvq0ty5pe3vmhn8tgyulm7tfejark5vas38sggv38cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqhma8f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsx68wnt232nt496nfzrxv0gegmvl5vsqfmvg4d0dklv07lqgqfyjspzdmhxue69uhhwmm59e6hg7r09ehkuef0e4vpmk&#39;&gt;nevent1q…vpmk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;All of them.
    </content>
    <updated>2026-06-30T08:59:46&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqhqcjz5h9yke98vsxd5t89rxekzprcpgg6ed2zljdp0jryh88mcgpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qdf64f6</id>
    
      <title type="html">The next @nprofile…radp release will be substantial. Sorry that ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqhqcjz5h9yke98vsxd5t89rxekzprcpgg6ed2zljdp0jryh88mcgpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qdf64f6" />
    <content type="html">
      The next &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs8t4ehcdrjgugzn3zgw6enp53gg2y2gfmekkg69m2d4gwxcpl04acpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcppemhxue69uhkummn9ekx7mp0w3radp&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;White Noise&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…radp&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; release will be substantial.&lt;br/&gt;Sorry that it&amp;#39;s taking so long, but we&amp;#39;re making some radical changes to get everything 10x better.&lt;br/&gt;Stay tuned.
    </content>
    <updated>2026-06-29T08:04:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgxfldcfzl206rfpcf9v7zwf52xvzzuafjuyene23c6zqy23v90cgpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqqn3xg</id>
    
      <title type="html">I&amp;#39;m guessing critical bugs?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgxfldcfzl206rfpcf9v7zwf52xvzzuafjuyene23c6zqy23v90cgpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqqn3xg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqxkkv0frvwmczpm4w0aemygkhxzhtrajlfvrxv0ej6hhgpcxsgpzpmhxue69uhkummnw3ezumt0d5hsd5m2a8&#39;&gt;nevent1q…m2a8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I&amp;#39;m guessing critical bugs?
    </content>
    <updated>2026-06-28T16:37:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqfjqpx0gsqhvs9ese9fvhtmaael46xdd95ztnyuum8et6j5se6nspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qphx70w</id>
    
      <title type="html">I was always surprised how roughly even at 1/3 download stats ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqfjqpx0gsqhvs9ese9fvhtmaael46xdd95ztnyuum8et6j5se6nspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qphx70w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqz3x4mde4unlr83ah4jr0z6uhyl40hr84c04r22r6f5hkrnxusppemhxue69uhkummn9ekx7mp0wgqr85&#39;&gt;nevent1q…qr85&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;I was always surprised how roughly even at 1/3 download stats are.
    </content>
    <updated>2026-06-28T16:35:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyjwh92yppyjnejxjftlzcmxy54nlp3fducszlrg06ezthg4k59mqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qnpq7g2</id>
    
      <title type="html">Awesome.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyjwh92yppyjnejxjftlzcmxy54nlp3fducszlrg06ezthg4k59mqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qnpq7g2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvtn2u5w8e3ytzt97xjhlhwgt4ul667027k5yuvx5rfz6prche25spzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc28nh0k&#39;&gt;nevent1q…nh0k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Awesome.
    </content>
    <updated>2026-06-28T12:50:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsydl3w2kzkvm5w3dgl0v4hc4m2l95p3gv7p5peyz50vys45nqdscqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qvnp742</id>
    
      <title type="html">This requires a certain scale to make sense, but we can likely ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsydl3w2kzkvm5w3dgl0v4hc4m2l95p3gv7p5peyz50vys45nqdscqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qvnp742" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqqqxpj3p64yny87ptkeg5g38a9e6qy6aaz02dmgazq03yk6lprcqpz9mhxue69uhkummnw3ezuamfdejj7ysrj5j&#39;&gt;nevent1q…rj5j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;This requires a certain scale to make sense, but we can likely bootstrap this.
    </content>
    <updated>2026-06-23T14:44:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsypjhu7sfrsv3ap75ngly67ug0uly88m3lrsx4w8vkxk8ttzp2xxqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qsy9fws</id>
    
      <title type="html">@nprofile…7zgg @nprofile…67y8 you were talking about ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsypjhu7sfrsv3ap75ngly67ug0uly88m3lrsx4w8vkxk8ttzp2xxqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qsy9fws" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxdk3ucamyz0sn44qgkuycvl2grdvr35e4ekg9gxhe65z6usqmnucpzamhxue69uhhyetvv9ujuct60fsk6mewdejhgtccfgshl&#39;&gt;nevent1q…gshl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs8nxvpg9shg0ez0yqx4vgvlkpm6vadlu3ushjan5y5nlwkp783jqgpr9mhxue69uhhqun9d45h2mfwwpexjmtpdshxuet59uq3samnwvaz7tmnw3exvune9euk66tj9e3kcmm4vshszxrhwden5te0vdhkuer4d96xcv3wvek8jtnyv4mz7zw7zgg&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;EricFJ&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…7zgg&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsz7y00wuma8jum86k7sxzx4n0dfz7aaa2l63fwqk903kv6y09uwxq4567y8&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;nprofile1qqsz7y00wuma8jum86k7sxzx4n0dfz7aaa2l63fwqk903kv6y09uwxq4567y8&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…67y8&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; you were talking about historical shipping services on the &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs8hhhhh3r83h3ptaha93c4ze3j57j9369kl56ajm8l0k0ayes9ttcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7ppyt86&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;OpenMarketsPod&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…yt86&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt;, so this one is for you!
    </content>
    <updated>2026-06-23T10:47:46&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxdk3ucamyz0sn44qgkuycvl2grdvr35e4ekg9gxhe65z6usqmnucpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qvex054</id>
    
      <title type="html">The Hanseatic merchants, Thurn und Taxis, Lysander Spooner, and ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxdk3ucamyz0sn44qgkuycvl2grdvr35e4ekg9gxhe65z6usqmnucpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qvex054" />
    <content type="html">
      The Hanseatic merchants, Thurn und Taxis, Lysander Spooner, and the WWII escape lines all built private postal and shipping networks that outran the official mails of their day, and the techniques they perfected are sitting in the record waiting for the next generation of builders. Nostr marketplaces are ready to inherit them, and this post is the field guide for the translation work ahead.&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qqghg6r9943k7atjd9jhyuedddhx2acpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsq3vamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet5qyvhwumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdaksyg9ha45tqck7dd9p9egl6559c8s7pmgw2y5vm2f6kyd5z594tmfjlspsgqqqw4rsm9s74m&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qq…s74m&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt;Builders of Nostr marketplaces face a problem that looks new but is ancient. The marketplace can be permissionless, the payments censorship-resistant, the identities cryptographic, and yet the moment a physical object must move from a seller in one jurisdiction to a buyer in another, the entire stack collapses onto a handful of state-licensed carriers who log every shipment, share data with customs authorities, and refuse service the moment a parcel touches anything politically inconvenient. The cryptographic part of commerce has been solved. The logistical part remains open. The historical record suggests that whenever merchants needed to move goods past hostile authorities, they built parallel postal and shipping networks from scratch, often elegant ones, often more reliable than the official systems they evaded. The builders working on decentralized fulfillment today are not pioneering. They are continuing a tradition that has been interrupted only briefly, and recently, by the monopolization of mails.&lt;/p&gt;

&lt;p&gt;What follows is a history written for those who suspect that a free marketplace requires a free postal service, that censorship resistance ends at the warehouse door if the warehouse door is owned by a regulated carrier, and that the problem of moving physical goods through hostile territory has been solved many times, by many different people, with techniques that deserve to be remembered before they are forgotten again.&lt;/p&gt;

&lt;h3 id=&#34;the-merchant-posts-of-the-hansa-2&#34;&gt;The merchant posts of the Hansa&lt;/h3&gt;

&lt;p&gt;Long before any king claimed a monopoly on letters, the merchants of northern Europe maintained their own. The Hanseatic League, that confederation of trading cities stretching from Novgorod to Bruges and from Bergen to Cologne, ran a postal service for its members from the thirteenth century onward, and the system endured for roughly four hundred years. Letters moved between the Kontore, the merchant compounds in foreign cities, carried by riders the League employed directly or by ships in League convoys. There was no central post office and no sovereign authorizing the network. The League was a guild of guilds, and each member city contributed riders, ships, and waystations to a shared infrastructure that none of them individually owned.&lt;/p&gt;

&lt;p&gt;The Hanseatic post worked because the merchants needed it to work and could not depend on the local sovereigns to provide an alternative that respected their commercial confidentiality. A letter from a Lubeck factor in Bergen to his principal in Lubeck contained prices, quantities, the names of counterparties, the timing of shipments, all the intelligence that competitors and tax collectors would pay handsomely to obtain. Trusting such information to a royal courier was equivalent to publishing it. So the Hansa carried its own mail, and because the merchants who ran the system were also the merchants whose secrets it carried, the incentives aligned. A corrupt rider could ruin not just one letter but the trust on which the entire network ran, and the League punished such breaches with the severity that any closed mercantile order brings to bear on those who betray it.&lt;/p&gt;

&lt;p&gt;The system also moved goods. Hanseatic convoys carried not just bulk cargo but small parcels of high-value items between Kontore, with manifests kept by the Schaffer of each compound and verified by witnesses on both ends. The League maintained warehouses, the Stalhof in London being the most famous, where goods could rest in trusted custody between legs of a voyage. The infrastructure was end-to-end, the trust was reputational, and the entire arrangement survived intermittent royal attempts to suppress it because the alternative, depending on the postal services of competing crowns, was unacceptable to everyone involved.&lt;/p&gt;

&lt;h3 id=&#34;thurn-und-taxis-and-the-private-empire-of-the-mails-2&#34;&gt;Thurn und Taxis and the private empire of the mails&lt;/h3&gt;

&lt;p&gt;The Hansa was a federation of equals; the next great private postal network was something stranger. In 1490 the Habsburg emperor Maximilian I contracted with the Tasso family, later known by the Germanized name Thurn und Taxis, to operate a courier service connecting the scattered Habsburg lands. Within a generation the family was operating not just an imperial post but a commercial post open to private customers, and within a century the Thurn und Taxis network covered most of central and western Europe with relay stations spaced at intervals that allowed riders to maintain a steady pace day and night. At its height the network employed roughly twenty thousand riders and operators and moved letters between Brussels and Madrid in under two weeks, between Vienna and Antwerp in under nine days.&lt;/p&gt;

&lt;p&gt;The Thurn und Taxis post was nominally licensed by emperors and kings, but operationally it was a family business that paid the sovereigns for the privilege of operating and otherwise ran its own affairs. The family invested its own capital in horses, way stations, and inns. It set its own rates, hired its own personnel, and developed its own routing techniques. When sovereigns tried to seize the network or replace it with state operations, the family fought back through diplomacy, bribery, and occasionally by refusing to carry official mail until concessions were granted. The post survived as a private operation in various German territories until 1867, when the Prussian government finally bought out the family&amp;#39;s last remaining rights for three million talers, a transaction that marked the effective end of large-scale private postal operation in continental Europe.&lt;/p&gt;

&lt;p&gt;What is interesting about Thurn und Taxis for the builder of modern decentralized logistics is the way the network managed trust at scale. The family could not personally vouch for each of twenty thousand employees. Instead the system relied on standardized procedures, sealed pouches, signed receipts at each relay, and a culture of accountability enforced by the knowledge that the family&amp;#39;s commercial existence depended on the integrity of its couriers. When letters were lost or tampered with, the family conducted internal investigations, fired the responsible parties, and compensated the senders. The reputation of the network was a capital asset, and the family invested in protecting it the way a modern firm invests in its brand.&lt;/p&gt;

&lt;h3 id=&#34;the-pony-express-and-the-american-private-mails-2&#34;&gt;The Pony Express and the American private mails&lt;/h3&gt;

&lt;p&gt;The American story is less continuous than the European one but in some ways more instructive, because the private posts of the United States operated in explicit competition with a federal monopoly and often beat it on price and speed. The Pony Express is the most famous example, a private operation that in 1860 and 1861 moved mail between St. Joseph, Missouri and Sacramento, California in roughly ten days using a relay of riders and stations spaced across two thousand miles of largely unsettled territory. The service lasted only eighteen months before the transcontinental telegraph rendered it obsolete, but in that time it proved that a private company could move letters across a continent faster than any government service then in operation.&lt;/p&gt;

&lt;p&gt;Less famous but more important were the private letter posts that operated in the eastern United States during the 1840s. Companies like Hale&amp;#39;s Letter Express, Pomeroy&amp;#39;s Letter Express, and the American Letter Mail Company carried letters between major cities at rates substantially below those of the U.S. Post Office. Lysander Spooner, the abolitionist and legal theorist, founded the American Letter Mail Company in 1844 specifically to challenge the constitutional basis of the federal postal monopoly. His company carried letters between Boston, New York, Philadelphia, and Baltimore at six and a quarter cents per half ounce, a third of what the government charged on the same routes, and Spooner argued openly that five cents would suffice for any letter in the country. The service was faster, cheaper, and more reliable than the official post, and it grew rapidly until Congress passed the Private Express Statutes of 1845 targeting private letter carriers. The federal government then prosecuted Spooner and his agents persistently for six more years, and the company finally folded in 1851 under the accumulated weight of injunctions, fines, and the cost of defending itself.&lt;/p&gt;

&lt;p&gt;The American private posts succeeded operationally. Legislation destroyed them. The federal monopoly on first-class mail was not the product of any natural advantage of state operation but of explicit prohibition of competition, enforced by the courts and backed by the threat of imprisonment for those who carried letters outside the official channels. The same pattern would repeat in country after country throughout the nineteenth century. Private posts worked, sovereigns suppressed them, and the suppression was justified after the fact by claims that only the state could provide universal service, claims that the historical record does not particularly support.&lt;/p&gt;

&lt;h3 id=&#34;smuggling-as-postal-infrastructure-2&#34;&gt;Smuggling as postal infrastructure&lt;/h3&gt;

&lt;p&gt;The history of private mails shades imperceptibly into the history of smuggling, and any honest account of decentralized shipping must reckon with the techniques developed by smugglers, since those are the techniques that work when authorities are hostile. The salt smugglers of eighteenth century France, the tea smugglers of the Cornish coast, the cigarette traders of the postwar Balkans, the cocaine networks of the contemporary Americas, all developed parallel logistics infrastructures that moved goods through territory where official transport was either prohibitively taxed or prohibited outright. The morality of the goods varies wildly across these examples; the logistical techniques recur with remarkable consistency.&lt;/p&gt;

&lt;p&gt;What smugglers consistently solve is the problem of moving goods across boundaries where inspection is hostile. Their techniques cluster into a few categories. They use concealment, hiding contraband in legitimate cargo or in the structure of vehicles themselves. They use redundancy, splitting shipments across multiple routes so that the loss of any single parcel does not compromise the whole. They use timing, moving goods when surveillance is reduced or distracted. They use bribery, converting hostile inspectors into nodes of the network. And they use reputation networks, the same kind of closed mercantile trust that the Hansa relied on, where new entrants must be vouched for and where defectors face severe consequences.&lt;/p&gt;

&lt;p&gt;The most relevant smuggling tradition for the modern builder is probably the one developed by the resistance and intelligence services during the Second World War. The escape lines that moved downed airmen out of occupied Europe were postal networks of a sort, carrying living parcels in place of letters. The Comet Line, run primarily by the Belgian nurse Andree de Jongh, moved nearly eight hundred Allied airmen from the Low Countries through France and over the Pyrenees to neutral Spain between 1941 and 1944. The line operated under continuous Gestapo pressure, with periodic catastrophic compromises, and yet it functioned for the entire duration of the occupation. It functioned because it had been designed with cellular structure from the start, with each helper knowing only the next link in the chain and rarely more, so that any single arrest could compromise only a small portion of the network before the affected cells were quarantined.&lt;/p&gt;

&lt;p&gt;The cellular logistics network is one of the most important inventions in the history of decentralized shipping, and it was perfected under conditions of maximum adversarial pressure. The cell that received an airman in Brussels did not know the cell that would smuggle him over the Pyrenees. The guide on the mountain crossing did not know the safehouse keepers in Paris. Each handoff was conducted at a known time and place with predetermined recognition signals, and the parties separated immediately afterward without exchanging information that could be coerced out of them later. This is precisely the architecture that a modern censorship-resistant shipping protocol must replicate, and the resistance lines worked it out under field conditions seventy years ago.&lt;/p&gt;

&lt;h3 id=&#34;the-free-cities-and-their-ports-2&#34;&gt;The free cities and their ports&lt;/h3&gt;

&lt;p&gt;Running parallel to the private postal traditions is a tradition of free ports and free cities that complicates the picture in productive ways. Hamburg, Bremen, and Lubeck retained substantial commercial autonomy well into the nineteenth century even as the surrounding German states centralized. Trieste under the Habsburgs operated as a free port from 1719 onward, exempt from most customs duties and serving as a transit point for goods moving between the Mediterranean and central Europe. Singapore under Raffles, Hong Kong under the British, and a handful of other ports established during the nineteenth century operated on similar principles, offering merchants reduced customs friction in exchange for the commercial activity that flowed through them.&lt;/p&gt;

&lt;p&gt;The free ports are interesting because they show that even when sovereigns will not permit fully private postal and shipping operations, they will sometimes permit reduced-friction zones where the worst of the customs interference is suspended. A modern decentralized marketplace does not need every jurisdiction to be friendly; it needs only enough nodes of reduced friction to route around the hostile ones. The free port model suggests that the political coalition for such zones can be assembled in surprising places, often by sovereigns who recognize that the commercial activity routed through their ports generates more wealth than the customs revenue lost would compensate.&lt;/p&gt;

&lt;p&gt;The free port tradition also reminds us that decentralized shipping is not exclusively a story of conflict with authorities. Substantial portions of the historical infrastructure for private commerce operated with the active cooperation of certain sovereigns who were competing with other sovereigns for the patronage of merchants. The Hansa flourished partly because the Holy Roman Emperor was too weak to suppress it and the kings of England, Sweden, and Denmark each found it useful at various times to grant the League privileges in exchange for commercial benefits. Thurn und Taxis flourished because the Habsburgs needed a reliable courier service more than they needed the political control that operating one themselves would have provided. The lesson is that the sovereign monolith is a fiction; in any era there are sovereigns whose interests align with private commercial infrastructure, and the builder of such infrastructure should locate them.&lt;/p&gt;

&lt;h3 id=&#34;the-trust-problem-and-its-historical-solutions-2&#34;&gt;The trust problem and its historical solutions&lt;/h3&gt;

&lt;p&gt;The recurring problem across all of these traditions is trust, and the historical solutions to it deserve careful study because they are the solutions that work when no central authority can be invoked. The Hansa solved trust through closed membership and reputational enforcement within a relatively small community of merchants who knew each other personally or through one or two degrees of separation. Thurn und Taxis solved it through standardized procedures, sealed pouches, signed receipts, and the family&amp;#39;s investment in the brand. The escape lines solved it through cellular compartmentalization and the assumption that any individual link might be compromised. The smugglers solved it through reputation, vouching, and the credible threat of consequences for defectors.&lt;/p&gt;

&lt;p&gt;None of these solutions involved trusting strangers, and none of them involved the kind of universal interoperability that modern shipping providers offer. Every successful private postal network in history operated within a defined community of users who had reason to trust each other, or who had submitted to mechanisms that produced trust over time. The implication for builders is that the model of a universal decentralized shipping service, where any anonymous user can ship to any other anonymous user with full censorship resistance, is probably not the historically validated path. The historically validated path is the construction of communities of trust within which shipping can be conducted privately, with onboarding rituals and reputational stakes that filter participants before they are given access to the infrastructure.&lt;/p&gt;

&lt;p&gt;This is uncomfortable for builders who came to decentralized systems through the cryptocurrency tradition, where the ideal is a permissionless network open to all comers. The historical record on physical logistics suggests that physical logistics is structurally different from digital payments in ways that make pure permissionlessness less achievable. A bitcoin transaction can be processed by miners who have no relationship with sender or receiver and no ability to interfere with the transaction&amp;#39;s contents. A package cannot be moved by couriers who have no relationship with sender or receiver, because the couriers must physically handle the package and could open it, lose it, or steal it. The trust requirements are asymmetric, and the architectures that successfully handled physical logistics in history reflected that asymmetry.&lt;/p&gt;

&lt;h3 id=&#34;what-the-couriers-knew-2&#34;&gt;What the couriers knew&lt;/h3&gt;

&lt;p&gt;The couriers of the Hansa, the riders of Thurn und Taxis, the helpers of the Comet Line, and the smugglers of every coast and frontier all knew things that the builders of contemporary decentralized commerce are in the process of rediscovering. They knew that physical logistics requires trust, that trust must be constructed through reputation and consequence, that adversarial conditions favor cellular architectures over centralized ones, and that the most resilient networks are the ones in which every participant has skin in the game. They knew that sovereign monopolies on transport are political artifacts, and that wherever the official infrastructure failed to serve merchants, merchants built their own. They knew, in short, that the postal and shipping problem has been solved before, repeatedly, by people working with horses and ships and footpaths through mountains long before anyone imagined a cryptographic protocol.&lt;/p&gt;

&lt;p&gt;The modern builder has tools the historical couriers lacked. End-to-end encryption can protect the contents of a parcel&amp;#39;s metadata in transit even if the physical custody chain is compromised. Cryptographic identities can replace the laborious reputational vouching of the Hansa with verifiable histories of past performance. Programmable money can hold escrows that release on cryptographic proof of delivery, with no interested party in the loop. Mesh networks can coordinate handoffs between cells of a cellular shipping network without exposing the participants to centralized observation. The tools are better. The problems are the same.&lt;/p&gt;

&lt;p&gt;The Nostr marketplaces that are now appearing offer the chance to assemble the pieces. Sellers can be identified by cryptographic keys and reputations attached to those keys. Buyers can pay over Lightning or through ecash mints in ways that the postal infrastructure can never observe. What remains is the construction of the courier layer itself, the network of people willing to carry goods between strangers under conditions that protect both the goods and the participants from surveillance and interference. The history suggests that this layer will form first within communities of trust, that it will use cellular architectures to limit the damage of any individual compromise, that it will charge rates the official carriers cannot match because it operates at lower regulatory burden, and that the sovereigns who notice it will respond with the same mixture of suppression and toleration that they brought to the Hansa, to Thurn und Taxis, and to every private posts that came before.&lt;/p&gt;

&lt;p&gt;The couriers knew how to do this. The records they left, the routes they traced, the procedures they developed, are all available to anyone willing to read the history. The work that remains is to translate those techniques into the new substrate, to build the cells and the handoffs and the reputational mechanisms that can carry packages between Nostr identities the way the Hansa carried letters between merchant houses. The marketplaces are nearly ready. The shipping service is what comes next.&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-06-23T10:44:32&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqjty3gpj65esn79a48qtm8w22m6rpwfny278985yk43xf9qhgc8spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qutsd45</id>
    
      <title type="html">Every Bitcoin private key generated this decade can be written ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqjty3gpj65esn79a48qtm8w22m6rpwfny278985yk43xf9qhgc8spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qutsd45" />
    <content type="html">
      Every Bitcoin private key generated this decade can be written down on a steel plate that survives fire and flood, but Nostr keys still live mostly in password managers and iCloud screenshots. The math to bring the same physical-backup workflow to Nostr has been sitting in every Bitcoin library since 2013, hiding inside a step of BIP39 that the NIP-06 flow happens to skip past. Below is the case for a backwards-compatible 24-word encoding of any existing nsec, the cryptographic reason it cannot collide with a Bitcoin seed, and the NIP that needs writing.&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqs0lphhnghhaaq4npcrf96gvz4r5kq35rzmtelkpsaz2wr2ct5mvpspz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsq3vamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet5qyvhwumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdaksyg9ha45tqck7dd9p9egl6559c8s7pmgw2y5vm2f6kyd5z594tmfjlsmyp7a0&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…p7a0&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt;An nsec is a Nostr private key: thirty-two bytes of pure entropy, the cryptographic root of an online identity, structurally identical to a Bitcoin private key and yet stranded in a tooling vacuum. People paste their nsec into password managers, screenshot it into iCloud, email it to themselves, and occasionally print the hex on paper that fades in a year. Bitcoin solved this problem over a decade ago with mnemonic phrases stamped into titanium rated for fires and floods, yet that infrastructure remains formally inaccessible to Nostr because of a misunderstanding about what BIP39 does.&lt;/p&gt;

&lt;p&gt;NIP-06 specifies that a Nostr key can be &lt;em&gt;derived from&lt;/em&gt; a BIP39 mnemonic by feeding the phrase through PBKDF2 to produce a 512-bit seed and then walking BIP32 to path m/44&amp;#39;/1237&amp;#39;/0&amp;#39;/0/0 to emerge with a child key. This pipeline runs in one direction only. Given a mnemonic you can compute the nsec; given an nsec the mnemonic is permanently lost, because PBKDF2 and BIP32 derivation are one-way functions designed for irreversibility. The Stack Exchange answers warning &amp;#34;the seed phrase is unrecoverable from a private key&amp;#34; describe this pipeline accurately, and the warning has hardened into a folk belief that any word-based encoding of an existing private key remains out of reach.&lt;/p&gt;

&lt;p&gt;The folk belief is wrong. A second, much simpler operation hides inside BIP39 that does exactly what we want.&lt;/p&gt;

&lt;p&gt;When a fresh Bitcoin wallet generates a 24-word phrase, the procedure starts from 256 bits of random entropy, appends an 8-bit SHA256 checksum to make 264 bits, splits those bits into twenty-four groups of eleven, and looks up each group as an index into a 2048-word table. This is just base conversion: radix-2 to radix-2048, the same operation that turns binary into hexadecimal except with a much larger alphabet. Base conversion is bijective by construction. The same 256 bits always produce the same twenty-four words, and the same twenty-four words always recover the same 256 bits, deterministically, forever. BIP39 then continues onward into PBKDF2 and BIP32, but that continuation is a choice, not a requirement.&lt;/p&gt;

&lt;p&gt;The proposal here is to stop after the bijective step.&lt;/p&gt;

&lt;p&gt;Take any existing Nostr private key. Treat its 32 bytes as 256 bits of entropy, compute a single checksum byte, concatenate to get 264 bits, slice into twenty-four 11-bit indices, and look up each index in the BIP39 wordlist. The output is a 24-word phrase. Run the procedure in reverse and you recover the exact same nsec you started with, byte for byte, this year or in twenty years. The original key remains in place and the encoding is a pure mathematical function of bytes that already exist.&lt;/p&gt;

&lt;p&gt;Here is where the design has to be careful, because a naive version steals money. If a Nostr 24-word phrase used the same SHA256 checksum as BIP39, then roughly one in every 256 such phrases would coincidentally pass the BIP39 validator when pasted into a Bitcoin wallet, silently deriving an unrelated private key via PBKDF2 and presenting the user with an empty wallet that has zero connection to their Nostr identity. That is a footgun: rare enough to escape testing, common enough to drain real funds in production. The fix is a keyed checksum. Compute HMAC-SHA256 over the 32 bytes with a fixed Nostr-specific key string, take the first byte, append it. The math preserves BIP39&amp;#39;s one-in-256 error-detection rate against transcription errors but flips the cross-protocol failure mode from silent to loud. Any Bitcoin wallet that receives a Nostr phrase rejects it with overwhelming probability, and the same goes in reverse. The two formats share a wordlist and a word count yet remain fully disjoint at the bit level.&lt;/p&gt;

&lt;p&gt;This unlocks an entire shadow layer of physical key storage already engineered and paid for, sitting in safes and bank vaults around the world. Titanium plates from Cryptotag, the SeedHammer machine that punches words onto stainless-steel washers, and the Trezor Keep stainless-steel card together cover most of the serious end of the market. The procedure for engraving 24 words onto metal is solved and tested against literal house fires. Someone who already stamped their Bitcoin seed onto a Trezor Keep can reuse the same plate format and engraving tool and fireproof safe for a separate Nostr identity. At the layer that matters to the physical tools, the two procedures are identical.&lt;/p&gt;

&lt;p&gt;The deeper point is that Nostr should reuse cypherpunk infrastructure where it can rather build duplicate versions from scratch. Bitcoin spent more than a decade engineering the physical layer of cryptographic key storage, and that work transfers without modification when the encoding format meets the existing tooling halfway. The current state, where Nostr keys live as raw hex strings in password managers and iCloud screenshots, is a default that nobody questioned because the NIP-06 framing made the bijective operation look impossible. A bijective encoding skips NIP-06 entirely. The PBKDF2 and BIP32 derivation machinery sits unused. Base conversion plus a checksum byte does the whole job, primitives that every Bitcoin library has shipped for over a decade.&lt;/p&gt;

&lt;p&gt;The serious objections are about coordination, not cryptography. Existing nsec users would need a tool to compute their twenty-four words, and that tool needs to ship in the wallets people use: Amber, nos2x, Coracle, Damus, Primal. The phrase format needs a name that makes its non-BIP39 nature visible at first glance, like &amp;#34;nsec24&amp;#34; or &amp;#34;nwords,&amp;#34; so that a user holding a phrase knows immediately what tooling can interpret it. The keyed checksum needs standardization in a NIP so all implementations produce identical output. These are coordination problems, and Nostr coordinates faster than most protocols because the relay model removes the need for consensus on much of anything.&lt;/p&gt;

&lt;p&gt;The objection worth dismissing is the suggestion that users should &amp;#34;just generate a fresh key from a BIP39 mnemonic&amp;#34; using NIP-06. That tells someone with years of accumulated identity to abandon it and start over for the privilege of engraving their key on metal. It treats the encoding format as more important than the identity itself, inverting the real stakes. An encoding that demands key rotation to adopt is a replacement for the key, masquerading as an encoding of it.&lt;/p&gt;

&lt;p&gt;Twenty-four words for an nsec asks nothing of the key beyond a base conversion that any computer runs in microseconds. The identity you already have, written down on the same steel plate that holds your bitcoin, recoverable by the same procedure your hardware wallet already implements, distinct enough from a Bitcoin seed that no tool confuses the two. The procedure works on every nsec generated since the protocol launched and every nsec generated tomorrow, without permission from anyone. Write the NIP.&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-06-22T20:31:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspg7jtflsha2jz9seh9psgznwqrcs5c4876y29wn649vegjsn2e9qpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qthedu8</id>
    
      <title type="html">You can tough grass or work in a hammock, way better</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspg7jtflsha2jz9seh9psgznwqrcs5c4876y29wn649vegjsn2e9qpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qthedu8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf2rvrcs2924zh9zt6dapf0p02m26wyepm0se0a92qrkwy8fkzq7cpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc23qcnz&#39;&gt;nevent1q…qcnz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;You can tough grass or work in a hammock, way better 
    </content>
    <updated>2026-06-22T19:33:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0kwpyaq6rspjgs0w4wecygrehcuv7k8vkepd24mavlt6u7yglu6cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qhe3376</id>
    
      <title type="html">You see gems like this, the first digital ID app on zapstore: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0kwpyaq6rspjgs0w4wecygrehcuv7k8vkepd24mavlt6u7yglu6cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qhe3376" />
    <content type="html">
      You see gems like this, the first digital ID app on zapstore:&lt;br/&gt;&lt;a href=&#34;https://zapstore.dev/apps/naddr1qqdxxmmd9enk7an9wfhxj6m4wvhxzatnwajkjumpwpcryqgcwaehxw309aex2mrp0yh85ctswd6x7un99ejx2aszypuvuma2wgny8pegfej8hf5n3x2hxhkgcl2utfjhxlj4zv8sycc86qcyqqq8uzc78wmqr&#34;&gt;https://zapstore.dev/apps/naddr1qqdxxmmd9enk7an9wfhxj6m4wvhxzatnwajkjumpwpcryqgcwaehxw309aex2mrp0yh85ctswd6x7un99ejx2aszypuvuma2wgny8pegfej8hf5n3x2hxhkgcl2utfjhxlj4zv8sycc86qcyqqq8uzc78wmqr&lt;/a&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqswurdev940am0udsldecye28drhpmx38nuuq2v0d2se2w8uz48vdgppemhxue69uhkummn9ekx7mp0qgst0mtgkp3du662ztj3l4fgts0purksu5fgek5n4vgmg9gt2hkn9lqrqsqqqqqpajurrk&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…urrk&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; My favorite Nostr feed algorithm is &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs83nn04fezvsu89p8xg7axjwye2u67errat3dx2um725fs7qnrqlgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9mhwden5te0wfjkccte9ec8y6tdv9kzumn9wshszrnhwden5te0dehhxtnvdakz7adgsu4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Zapstore&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…gsu4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; latest releases. &lt;/blockquote&gt;
    </content>
    <updated>2026-06-22T19:29:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswurdev940am0udsldecye28drhpmx38nuuq2v0d2se2w8uz48vdgpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q8fruqn</id>
    
      <title type="html">My favorite Nostr feed algorithm is @nprofile…gsu4 latest ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswurdev940am0udsldecye28drhpmx38nuuq2v0d2se2w8uz48vdgpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q8fruqn" />
    <content type="html">
      My favorite Nostr feed algorithm is &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs83nn04fezvsu89p8xg7axjwye2u67errat3dx2um725fs7qnrqlgpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsz9mhwden5te0wfjkccte9ec8y6tdv9kzumn9wshszrnhwden5te0dehhxtnvdakz7adgsu4&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Zapstore&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…gsu4&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; latest releases.
    </content>
    <updated>2026-06-22T19:25:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr40y046qn4cyy6wxm79rsvl79wsrt70gnmute9m3zxpuenk2whpcpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qv2w4u0</id>
    
      <title type="html">Just found @nprofile…yt86 and I&amp;#39;m sad I didnt know of them ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr40y046qn4cyy6wxm79rsvl79wsrt70gnmute9m3zxpuenk2whpcpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qv2w4u0" />
    <content type="html">
      Just found &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs8hhhhh3r83h3ptaha93c4ze3j57j9369kl56ajm8l0k0ayes9ttcpzamhxue69uhhyetvv9ujumn0wd68ytnzv9hxgtcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7ppyt86&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;OpenMarketsPod&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…yt86&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; and I&amp;#39;m sad I didnt know of them before, awesome Nostr pod!
    </content>
    <updated>2026-06-22T16:55:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswcjfh5treahk99qdy66e4075875xpaw6wfh2qh30cjc4yuh2pawgpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qx7t3n3</id>
    
      <title type="html">Love to see this</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswcjfh5treahk99qdy66e4075875xpaw6wfh2qh30cjc4yuh2pawgpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qx7t3n3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2qeefsne4m0qlkqtp7hx4t32e79z37ad8fappf838fa2jwsssaaspr4mhxue69uhkcatwvd5xymmc9eekzmnywa5kx6pwveshymf0sqc6vh&#39;&gt;nevent1q…c6vh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Love to see this
    </content>
    <updated>2026-06-19T20:07:43&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8qwx8qhrvncnf0amngepplp5t3eyjnfndxfvzhzn2rthrc448p8cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qxtg08q</id>
    
      <title type="html">The Praxeology of Privacy: Freedom Tech vs Mass Surveillance | ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8qwx8qhrvncnf0amngepplp5t3eyjnfndxfvzhzn2rthrc448p8cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qxtg08q" />
    <content type="html">
      The Praxeology of Privacy: Freedom Tech vs Mass Surveillance | Max Hillebrand&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://relay.towardsliberty.com/2885921631ce5fb37f3aeaf74fbff1a88a6a90446c76f207120ce9e0c39dc084.mp3&#34;&gt;https://relay.towardsliberty.com/2885921631ce5fb37f3aeaf74fbff1a88a6a90446c76f207120ce9e0c39dc084.mp3&lt;/a&gt;
    </content>
    <updated>2026-06-18T22:47:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9g0ca0nmw672g8xa6m0t0g93wf2h3lusrtwfettrj5h8arsc8xjqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qx0f0xw</id>
    
      <title type="html">The Praxeology of Privacy: Freedom Tech vs Mass Surveillance | ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9g0ca0nmw672g8xa6m0t0g93wf2h3lusrtwfettrj5h8arsc8xjqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qx0f0xw" />
    <content type="html">
      The Praxeology of Privacy: Freedom Tech vs Mass Surveillance | Max Hillebrand&lt;br/&gt;&lt;br/&gt;&lt;video controls width=&#34;100%&#34; class=&#34;max-h-[90vh] bg-neutral-300 dark:bg-zinc-700&#34;&gt;&lt;source src=&#34;https://relay.towardsliberty.com/84751f62034f7396a75c0ba5096964cee2a4d65a076f655b43b6324b0fbefecd.mp4&#34;&gt;&lt;/video&gt;
    </content>
    <updated>2026-06-18T22:47:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg32nd3ldspfzrfet5ccargkuakzyp7mpk48e64ngcay4tgte2f3gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qfngct5</id>
    
      <title type="html">Someone should do that.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg32nd3ldspfzrfet5ccargkuakzyp7mpk48e64ngcay4tgte2f3gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qfngct5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd3dml5f8dp053rg09fm434qrysx20nasrysvqtzznz5cmsr4tw2spr4mhxue69uhksmm5wf5kw6r5dehhwtnwdaehgu339e3k7mf0z0cclp&#39;&gt;nevent1q…cclp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Someone should do that. 
    </content>
    <updated>2026-06-17T15:52:25&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfwlpsamkvy4zxj7c2rc0z90q9laglwyan2sxl05tgy4h2c4s92qcpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qdk084n</id>
    
      <title type="html">You can still look it up on a search engine in the browser and ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfwlpsamkvy4zxj7c2rc0z90q9laglwyan2sxl05tgy4h2c4s92qcpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qdk084n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswjqaadfhxfjc9xydey9ntxwjt0zucmcnttwuya4de79xc6mju02sprfmhxue69uhhyetvv9ujuct8daexjum59eehqctrv5hsvdqfrm&#39;&gt;nevent1q…qfrm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;You can still look it up on a search engine in the browser and then share the link to GeoShare App for opening that exact location in Ogranic Map. 
    </content>
    <updated>2026-06-17T15:52:07&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2jvznsqd2a60un83mflt5hu943e3c5t3jp2esw0l07ldlva8vfhcpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qzv2zr6</id>
    
      <title type="html">Every Google Maps route reveals where you are and where you are ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2jvznsqd2a60un83mflt5hu943e3c5t3jp2esw0l07ldlva8vfhcpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qzv2zr6" />
    <content type="html">
      Every Google Maps route reveals where you are and where you are going to a company that sells behavioral inferences. The road network is a finite dataset and route calculation is graph search, so the computation belongs on your device. OpenStreetMap supplies the data, freely and at community-built quality. Organic Maps does the routing offline on your phone, with zero account, zero tracker, and zero query leaving the device.&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsde4vm3upm3v7dv47x6xfzppggprh0x800u7mwrfmw64vs2cc9zyspz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsq3vamnwvaz7tmjv4kxz7fwwpexjmtpdshxuet5qyvhwumn8ghj7um9dejxjapwdehhxenvv9ex2tnrdaksyg9ha45tqck7dd9p9egl6559c8s7pmgw2y5vm2f6kyd5z594tmfjlsg2ytej&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…ytej&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt;When you ask Google for directions, the request leaving your phone carries a timestamped record that pairs your current coordinates with your intended coordinates, attached to an account that already knows your phone number, your home, your work, your contacts, and the pattern of your previous trips. The route itself is the smaller half of the leak. The richer half is the intent: you have just told a third party where you will be and roughly when. Last Tuesday&amp;#39;s trip to the clinic, tonight&amp;#39;s drive to a lawyer&amp;#39;s office, every trip you would prefer to keep out of a permanent index of your life: each one sits in a row of a database you do not own and cannot delete. Multiply that by every trip you take, store it next to every other person&amp;#39;s trips for the rest of your life, and you have a panopticon of physical movement that the surveillance states of the twentieth century could only have dreamed of funding.&lt;/p&gt;

&lt;p&gt;The economics here are blunt. Google gives away maps as a loss leader for a behavioral product. The map is the bait and the dossier is the catch, paid in continuous disclosure of where you go and why. Once collected, the dossier becomes inventory: sold to advertisers who want to know where buyers go, sold to insurers who price you by how you drive, served on subpoena to law enforcement, and exposed in whatever breach happens to land next. The cost is a long-running, queryable archive of where your body has been, who you went to see, and where you are headed right this minute.&lt;/p&gt;

&lt;p&gt;The strange part is that the round-trip is trivially avoidable. Route calculation is graph search over a road network, and the road network itself is a finite, slow-changing dataset. The shortest path from A to B is a function of two coordinates and a graph; it requires neither a remote oracle nor a live connection to a sales pipeline. We accept the round-trip because someone built the convenient app that way, and habit took over.&lt;/p&gt;

&lt;p&gt;OpenStreetMap is the obvious starting point for an alternative. It is a community-built, openly licensed dataset of the world&amp;#39;s roads, maintained by millions of contributors who survey the places they map. The dataset is free to use and free to fork. It is a public good produced by the people who live on those roads.&lt;/p&gt;

&lt;p&gt;Once the dataset is public, the question of where to compute the route becomes a choice the user makes, free of any constraint set by Google. Organic Maps is the application that takes the choice seriously. It is a free and open-source Android and iOS app, built on OSM data, with zero ads, zero tracking, zero account, zero phoning home. You download the countries or regions you care about once, and from then on the app routes, searches, and navigates entirely on the device. The Exodus Privacy project has verified the absence of trackers in the Android build, and the application&amp;#39;s permissions list reads as boring as a privacy-respecting app&amp;#39;s permissions should read.&lt;/p&gt;

&lt;p&gt;The storage cost is small enough that the old &amp;#34;but the world will fill up my phone&amp;#34; excuse has retired. Country files typically run from tens of megabytes for small nations to a few hundred megabytes for large ones, and even sizable countries fit comfortably under a gigabyte. A traveler who downloads their home country plus the places on their itinerary ends up using a tiny fraction of a modern phone&amp;#39;s storage, with zero ongoing data transfer. Throw away the SIM card if you want; the navigation works the same.&lt;/p&gt;

&lt;p&gt;What you get in return for that small disk cost is a different kind of computation. The route is calculated on the device, by code you can read, over data the world maintains. Every byte of the trip stays on the handset. The logged query that says &amp;#34;this person, at this time, asked for the path from this clinic to this address&amp;#34; never gets written, because there is no server to write it. Your behavioral profile gains no new row. The map is yours in the way a paper map was yours, except that it routes, searches, and updates.&lt;/p&gt;

&lt;p&gt;Consider the driver whose auto insurer offers a discount in exchange for installing a &amp;#34;driving behavior&amp;#34; app, and consider the same insurer five years from now, when location histories have been aggregated, brokered, and resold often enough that the discount is no longer optional and the premium is silently priced from your movement pattern whether you installed the app or not. The data does not have to be sold to be used against you; it has to exist. Every Google Maps query you make today is a deposit into that future pricing model. The bank does not need your permission to lend out what you have already given it.&lt;/p&gt;

&lt;p&gt;The switching cost is genuinely small. Install Organic Maps from Zapstore, open the app, tap into the download dialog, and pick the country you live in plus any country you are about to travel to. Install GeoShare from Zapstore alongside it; that small companion app intercepts incoming map share links and resolves them into geo: coordinates that go straight to Organic Maps. When the link already contains coordinates in plain form, the resolution happens on your device with no network call at all. When the link is a shortened redirect that hides the destination, GeoShare asks before connecting and, when you allow it, fetches the redirect through a sandboxed web view with cookies disabled or through an upstream open-source relay. Either way, the map service sees an anonymous request for a single URL, detached from your Google identity and stripped of the cookies that tie ordinary traffic to a profile. After that, the typical interaction matches the proprietary app you were using: type a place, get directions, follow the voice. The difference lives in what stops happening. Queries that used to leave the phone now resolve on the device itself, accounts stay uninvolved, and behavioral profiles stop gaining new rows from your travel.&lt;/p&gt;

&lt;p&gt;Borrowed maps were always rented. The rent was paid in advance, in a currency the lender chose. Owning your own copy of the world&amp;#39;s roads, and routing across that copy on hardware you control, is the cheapest defense against the most invasive form of surveillance the average person experiences. The habit of asking Google for directions is the last thing standing between the average phone and a navigation stack that owes nothing to anyone but its owner.&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-06-17T13:30:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst5rkgwj9dmn462ktz9h3npvfjsyp5pvqxzekjshfjl6jqaz87qyqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qwktgph</id>
    
      <title type="html">Ist repariert.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst5rkgwj9dmn462ktz9h3npvfjsyp5pvqxzekjshfjl6jqaz87qyqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qwktgph" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdlehfz4h4kx4k04s28d8vdhmp36sz2cr2cxrnh8derptpe5st06gpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtc56csrj&#39;&gt;nevent1q…csrj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Ist repariert. 
    </content>
    <updated>2026-06-17T12:01:02&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszsy43u2gy2r60ny932d6nadm4xg5ac89r4qsrde0fw8mtrrfkemqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qh394ln</id>
    
      <title type="html">Zweite Version ist raus, hier zum download: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszsy43u2gy2r60ny932d6nadm4xg5ac89r4qsrde0fw8mtrrfkemqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qh394ln" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrlv4udjm82a6sz85fzr02prjwhlha5cf55jff7dctenmtkl28nasppemhxue69uhkummn9ekx7mp00mx3su&#39;&gt;nevent1q…x3su&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Zweite Version ist raus, hier zum download:&lt;br/&gt;&lt;a href=&#34;https://towardsliberty.com/pop/de&#34;&gt;https://towardsliberty.com/pop/de&lt;/a&gt;
    </content>
    <updated>2026-06-17T11:06:14&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstd3kactlc3whwvyh5vr2j69g96lk9j7yaurhesdsjftftauztcdcpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q0qr3g5</id>
    
      <title type="html">Zweite version der Übersetzung von Der Praxeologie der ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstd3kactlc3whwvyh5vr2j69g96lk9j7yaurhesdsjftftauztcdcpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q0qr3g5" />
    <content type="html">
      Zweite version der Übersetzung von Der Praxeologie der Privatsphäre ist raus, bitte die neue PDF durchlesen.&lt;br/&gt;Auf diesem Link werde ich weiter updates veröffentlichen:&lt;br/&gt;&lt;a href=&#34;https://towardsliberty.com/pop/de&#34;&gt;https://towardsliberty.com/pop/de&lt;/a&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsrlv4udjm82a6sz85fzr02prjwhlha5cf55jff7dctenmtkl28nasppemhxue69uhkummn9ekx7mp0qgst0mtgkp3du662ztj3l4fgts0purksu5fgek5n4vgmg9gt2hkn9lqrqsqqqqqpndn83v&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…n83v&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Mein Buch Die Praxeology der Privatsphäre ist jetzt auf Deutsch übersetzt.&lt;br/&gt;Bitte durchlesen und Fehler oder schlechte Wortwahl korrigieren und an mich schicken. &lt;br/&gt;Es sollten ein paar Leute durchlesen bevor es in den Druck geht.&lt;br/&gt;&lt;a href=&#34;https://relay.towardsliberty.com/a5687e7d47a1d9500f770b80fa399edc553e65f0a67769f6094af7b544b01aec.pdf&#34;&gt;https://relay.towardsliberty.com/a5687e7d47a1d9500f770b80fa399edc553e65f0a67769f6094af7b544b01aec.pdf&lt;/a&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-06-17T11:05:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz3rrv80kk4zwuyhh78ss2ng2lh2rc8mtglt5r9u40t37tuu8l42spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qcerhjz</id>
    
      <title type="html">Are you guys even shipping enough?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz3rrv80kk4zwuyhh78ss2ng2lh2rc8mtglt5r9u40t37tuu8l42spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qcerhjz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyp6qhwyhrjlq8hgchsj5jlfr54gy4394g9rqw9h4q6zwxp4y7u8spzamhxue69uhhv6t5daezumn0wd68yvfwvdhk6tcm7aftf&#39;&gt;nevent1q…aftf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Are you guys even shipping enough?
    </content>
    <updated>2026-06-17T09:10:20&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswyx5r3w2q2hnut37ss0fuqlqkx3rsq8yq2ngx7vdtfv2uwpxegaspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qtuw3ej</id>
    
      <title type="html">Really happy that you guys are publishing this!</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswyx5r3w2q2hnut37ss0fuqlqkx3rsq8yq2ngx7vdtfv2uwpxegaspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qtuw3ej" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrdhtpllwmvxvzv42zx6wfzj8567tlhg5rjxwaypr40qxu90jf7dqppemhxue69uhkummn9ekx7mp0pxc37j&#39;&gt;nevent1q…c37j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Really happy that you guys are publishing this!
    </content>
    <updated>2026-06-16T16:20:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdcjqmpa7ls0njntg2075uhk343tmyda5uwrf02cfk0z2gwjftqkqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qcptatc</id>
    
      <title type="html">Hier per Nostr DM</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdcjqmpa7ls0njntg2075uhk343tmyda5uwrf02cfk0z2gwjftqkqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qcptatc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspw9lglnregcffqaqzeffpjn07lc9x73hq34zfxc68ytt45p0724cpzamhxue69uhhyetvv9ujuct60fsk6mewdejhgtcv5vpmg&#39;&gt;nevent1q…vpmg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Hier per Nostr DM
    </content>
    <updated>2026-06-16T09:53:23&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0r9nl7flt5ehgv9yk8ck7slrvmna36yg2sckpfd0uj9nqup5swkspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qhncavz</id>
    
      <title type="html">I&amp;#39;m a simple man. I see a @nprofile…th90 interview, I watch ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0r9nl7flt5ehgv9yk8ck7slrvmna36yg2sckpfd0uj9nqup5swkspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qhncavz" />
    <content type="html">
      I&amp;#39;m a simple man.&lt;br/&gt;I see a &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqst5we9wcc6um7kkas7gzw9r9l2e0gakzgj82p3kqm93fz0uyem7usppemhxue69uhkummn9ekx7mp0qythwumn8ghj7un9d3shjtnwdaejuum0vd5kzmp0qythwumn8ghj7un9d3shjtnswf5k6ctv9ehx2ap0n4th90&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Paul Rosenberg&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…th90&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; interview,&lt;br/&gt;I watch it.&lt;br/&gt;&lt;br/&gt;Watchman Privacy: 223 - Paul Rosenberg: The Use of Knowledge&lt;br/&gt; &lt;a href=&#34;https://traffic.libsyn.com/secure/watchmanprivacy/223_Paul_Rosenberg_The_Use_of_Knowledge.mp3&#34;&gt;https://traffic.libsyn.com/secure/watchmanprivacy/223_Paul_Rosenberg_The_Use_of_Knowledge.mp3&lt;/a&gt;
    </content>
    <updated>2026-06-16T09:52:23&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspw9lglnregcffqaqzeffpjn07lc9x73hq34zfxc68ytt45p0724cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q2vz02s</id>
    
      <title type="html">Je schneller es kommt desto schneller kommt es in den Druck. In ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspw9lglnregcffqaqzeffpjn07lc9x73hq34zfxc68ytt45p0724cpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q2vz02s" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsga4cgf7lev0a3ftk4xryg4s7jttvg07zd0fsckv6vmn92kyh299gppemhxue69uhkummn9ekx7mp07sw4ca&#39;&gt;nevent1q…w4ca&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Je schneller es kommt desto schneller kommt es in den Druck. &lt;br/&gt;In den nächsten zwei Wochen oder so, mal schauen.
    </content>
    <updated>2026-06-16T09:53:05&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrlv4udjm82a6sz85fzr02prjwhlha5cf55jff7dctenmtkl28naspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qtuqw9d</id>
    
      <title type="html">Mein Buch Die Praxeology der Privatsphäre ist jetzt auf Deutsch ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrlv4udjm82a6sz85fzr02prjwhlha5cf55jff7dctenmtkl28naspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qtuqw9d" />
    <content type="html">
      Mein Buch Die Praxeology der Privatsphäre ist jetzt auf Deutsch übersetzt.&lt;br/&gt;Bitte durchlesen und Fehler oder schlechte Wortwahl korrigieren und an mich schicken. &lt;br/&gt;Es sollten ein paar Leute durchlesen bevor es in den Druck geht.&lt;br/&gt;&lt;a href=&#34;https://relay.towardsliberty.com/a5687e7d47a1d9500f770b80fa399edc553e65f0a67769f6094af7b544b01aec.pdf&#34;&gt;https://relay.towardsliberty.com/a5687e7d47a1d9500f770b80fa399edc553e65f0a67769f6094af7b544b01aec.pdf&lt;/a&gt;
    </content>
    <updated>2026-06-16T09:46:14&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2serc96jj0njvmyzj5qade4pwrcpxqn8e3wxth4cp2wa4s5nqtyqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qgf0knk</id>
    
      <title type="html">The new PDF viewer in @nprofile…wywf is great. #nevent1q…cgl9</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2serc96jj0njvmyzj5qade4pwrcpxqn8e3wxth4cp2wa4s5nqtyqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qgf0knk" />
    <content type="html">
      The new PDF viewer in &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqs24yz8xftq8kkdf7q5yzf4v7tn2ek78v0zp2y427mj3sa7f34ggjcpzamhxue69uhhv6t5daezumn0wd68yvfwvdhk6tcpzpmhxue69uhkummnw3ezumt0d5hszrnhwden5te0dehhxtnvdakz769wywf&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;amethyst&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…wywf&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; is great.&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsrlv4udjm82a6sz85fzr02prjwhlha5cf55jff7dctenmtkl28naspzamhxue69uhhyetvv9ujuct60fsk6mewdejhgtczyzm7669svt0xkjsju50a22zurc0qa589z2xd4yatzx6p2z64a5e0cqcyqqqqqqg4wcgl9&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…cgl9&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; Mein Buch Die Praxeology der Privatsphäre ist jetzt auf Deutsch übersetzt.&lt;br/&gt;Bitte durchlesen und Fehler oder schlechte Wortwahl korrigieren und an mich schicken. &lt;br/&gt;Es sollten ein paar Leute durchlesen bevor es in den Druck geht.&lt;br/&gt;&lt;a href=&#34;https://relay.towardsliberty.com/a5687e7d47a1d9500f770b80fa399edc553e65f0a67769f6094af7b544b01aec.pdf&#34;&gt;https://relay.towardsliberty.com/a5687e7d47a1d9500f770b80fa399edc553e65f0a67769f6094af7b544b01aec.pdf&lt;/a&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-06-16T09:50:21&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd66wzg6dxfr2dany7s9a0q4qa739zr5tfkkndxxkfzt8nl7r8t8gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqaej4r</id>
    
      <title type="html">Let&amp;#39;s go!</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd66wzg6dxfr2dany7s9a0q4qa739zr5tfkkndxxkfzt8nl7r8t8gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqaej4r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgvrfgnh3z3l7jln2l8gf4v2vf28wu4hhct60h2ww0gx97jnha9jcpypmhxue69uhhyetvv9ujumn0v3jhyatwdejhyuewdejhgam0wf4j7k87ck2&#39;&gt;nevent1q…7ck2&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Let&amp;#39;s go!
    </content>
    <updated>2026-06-15T19:44:09&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsta7f2kx0qxdfrevzqcdn6pdkhtt86qlrqmuql02jgw00l3p0q8espgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q25tnvq</id>
    
      <title type="html">Interesting. Well you can&amp;#39;t show all possible links.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsta7f2kx0qxdfrevzqcdn6pdkhtt86qlrqmuql02jgw00l3p0q8espgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q25tnvq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9ale05suydf99p0a423ee9s7x45unggs27sfwt2uwepxy2tjx8gcpz9mhxue69uhkummnw3ezuamfdejj7azv3gr&#39;&gt;nevent1q…v3gr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Interesting.&lt;br/&gt;Well you can&amp;#39;t show all possible links.
    </content>
    <updated>2026-06-16T09:40:21&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyvdpz58nead23s6cd98nwgwpla6fdr4gel47q7maxstxqmxwxarspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qx37jtu</id>
    
      <title type="html">Yes he is!</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyvdpz58nead23s6cd98nwgwpla6fdr4gel47q7maxstxqmxwxarspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qx37jtu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz5pug8lrhxdst2fmc757jdxuxdnp8wnx2720wxzd9es6us7k6sxspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsn5ge5s&#39;&gt;nevent1q…ge5s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yes he is!
    </content>
    <updated>2026-06-15T09:26:09&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2hcn0sxwf3dxl2pjm3fh8t9x63jt77gkfcd9h5yfd5qyfjj26wqspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qkx838k</id>
    
      <title type="html">Hopefully soon, sorry for the delay!</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2hcn0sxwf3dxl2pjm3fh8t9x63jt77gkfcd9h5yfd5qyfjj26wqspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qkx838k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspm7kr2kcgkpqzn6w9wujw5y4g2z6lwzgka6mhm36dvsccdqvtv3gpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtcsyr2h6&#39;&gt;nevent1q…r2h6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Hopefully soon, sorry for the delay!
    </content>
    <updated>2026-06-15T09:25:28&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0rgefzl89lsfzqund2vexfflx33cjhtpxnth03eggwmgwjezkwyspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qmutaag</id>
    
      <title type="html">Yerba is a gift #naddr1qq…mkvl</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0rgefzl89lsfzqund2vexfflx33cjhtpxnth03eggwmgwjezkwyspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qmutaag" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9f0zjgu3xh2te72cxz5rgt3e28hzs50wjlp78ywez0e0pz0w87ngpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp00cj947&#39;&gt;nevent1q…j947&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Yerba is a gift&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qqgrxctzxv6nvdt98pjkzdnyx93ngqgwwaehxw309ahx7uewd3hkctczyzm7669svt0xkjsju50a22zurc0qa589z2xd4yatzx6p2z64a5e0cqcyqqq823cw6mkvl&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qq…mkvl&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; &lt;p&gt;Yerba mate has been cultivated, prohibited, monopolized, taxed, fought over, and nearly destroyed by forced labor systems that persisted into living memory. And yet every morning in Paraguay, Argentina, Uruguay, and southern Brazil, millions of people fill a gourd with dried leaves, insert a metal straw, and share the drink with whoever happens to be nearby. The tradition outlasted the Spanish Crown, the Jesuits, and several dictatorships. It will probably outlast whatever comes next.&lt;/p&gt;

&lt;h3 id=&#34;ka-a-herb-plant-jungle-2&#34;&gt;Ka&amp;#39;a: Herb, Plant, Jungle&lt;/h3&gt;

&lt;p&gt;The Guaraní word for yerba mate is &lt;em&gt;ka&amp;#39;a&lt;/em&gt;, which means &amp;#34;herb&amp;#34; and &amp;#34;plant&amp;#34; and &amp;#34;jungle&amp;#34; all at once. I find this telling. Modern botany would file &lt;em&gt;Ilex paraguariensis&lt;/em&gt; under the holly family and move on. The Guaraní language refuses to separate the plant from the forest it grows in.&lt;/p&gt;

&lt;p&gt;Their origin story works the same way. The moon goddess Yarí came down to earth with Araí, goddess of clouds, to see what Tupã had made. A jaguar attacked them. An old hunter drove it off with his bow.&lt;/p&gt;

&lt;p&gt;The goddesses visited his hut to thank him. They found a poor man who had moved his family deep into the forest to keep his daughter away from the corruptions of village life. Yarí planted blue seeds outside his door. Araí watered them with soft rain. By morning, strange new trees had grown.&lt;/p&gt;

&lt;p&gt;The moon goddess told the hunter that this plant would be &amp;#34;the symbol of friendship.&amp;#34; His daughter became Ka&amp;#39;a Yarîi, spirit guardian of yerba mate, eternally young. The old man became Ka&amp;#39;a Yará, the male protector. A third deity got involved too: Jasy Jatere, a golden-haired dwarf with a magic staff, who somehow ended up as god of both yerba mate and the afternoon nap. The Guaraní apparently understood that the same plant that keeps you alert must eventually let you rest.&lt;/p&gt;

&lt;p&gt;What did the gods reward? Not tribute. Not obedience. Hospitality offered to strangers, freely given. The hunter didn&amp;#39;t know who the women were. He helped them anyway.&lt;/p&gt;

&lt;p&gt;Before drinking mate, the Guaraní poured a little on the ground for the gods - acknowledging that the gift came before any human effort to cultivate it. Shamans used the drink in ceremonies. Some tribes burned the leaves and inhaled the smoke for visions. This wasn&amp;#39;t a beverage. It was a relationship with the forest, the spirits, and anyone who sat down to share.&lt;/p&gt;

&lt;h3 id=&#34;the-jesuits-and-their-secrets-2&#34;&gt;The Jesuits and Their Secrets&lt;/h3&gt;

&lt;p&gt;Spanish colonists founded Asunción in 1537 and quickly picked up the mate habit. By 1596, officials were complaining about &amp;#34;the vice and bad habit of drinking yerba&amp;#34; that Spaniards, their wives, and their children indulged in all day long. The governor banned production. The Spanish Crown rejected his ban. The producers ignored him either way.&lt;/p&gt;

&lt;p&gt;The Jesuits showed up with more complicated intentions. At first they called mate &amp;#34;the devil&amp;#39;s drink&amp;#34; because it was central to indigenous religion. Then they noticed how much money it generated.&lt;/p&gt;

&lt;p&gt;What followed was impressive, in a grim sort of way. The Jesuits figured out how to domesticate a plant that nobody thought could be cultivated. The trick was that yerba seeds won&amp;#39;t germinate unless they&amp;#39;ve passed through a bird&amp;#39;s digestive system first. The missionaries discovered this, kept it secret, and established plantations near their missions.&lt;/p&gt;

&lt;p&gt;By the early 1700s, thirty Jesuit settlements housed around 150,000 Guaraní. Yerba mate was their cash crop, their currency, and their leverage. They had tax exemptions that undercut Paraguayan competitors. When King Charles III expelled them in 1767, they were exporting four times their legal quota.&lt;/p&gt;

&lt;p&gt;After the expulsion, the plantations fell apart. The domestication secrets were lost. The industry reverted to harvesting wild plants in the forest, and the &lt;em&gt;mensú&lt;/em&gt; system emerged - debt bondage that trapped workers in the jungle under conditions that contemporary observers compared to slavery. This lasted into the 1940s. The drink of friendship became, for a while, an instrument of brutality. Not because of anything wrong with the plant. Because of what men will do when there&amp;#39;s money involved and nobody&amp;#39;s watching.&lt;/p&gt;

&lt;h3 id=&#34;paraguay-tereré-and-the-chaco-war-2&#34;&gt;Paraguay, Tereré, and the Chaco War&lt;/h3&gt;

&lt;p&gt;Paraguay is where yerba mate comes from. The Latin name - &lt;em&gt;Ilex paraguariensis&lt;/em&gt; - says so directly. And Paraguay is where tereré developed: cold mate, served with ice and medicinal herbs.&lt;/p&gt;

&lt;p&gt;Tereré might actually be the original preparation. The Guaraní didn&amp;#39;t have metal pots. They soaked the leaves in cold stream water. Hot mate came later, after Europeans arrived with their kettles. Paraguay&amp;#39;s summers hit 40-45°C. Drinking something hot in that heat makes no sense.&lt;/p&gt;

&lt;p&gt;The Chaco War accelerated things. From 1932 to 1935, Paraguay fought Bolivia over a desolate stretch of scrubland. Paraguayan soldiers couldn&amp;#39;t boil water - lighting fires revealed their positions. They drank cold mate instead, mixed with whatever medicinal herbs they could find. The herbs masked the taste of bad water and treated some of what ailed them. When the veterans came home, they brought tereré with them. It became a symbol of what Paraguay had survived.&lt;/p&gt;

&lt;p&gt;The herb tradition - &lt;em&gt;pohã ñana&lt;/em&gt; in Guaraní - is its own kind of knowledge system. The &lt;em&gt;yuyeros&lt;/em&gt;, herb vendors, show up at Asunción&amp;#39;s Mercado 4 before dawn. They&amp;#39;ll tell you which plants to add for which problems: menta&amp;#39;i calms nerves, boldo helps the liver, cola de caballo for the kidneys, burrito for the stomach, cedrón for energy. They crush the herbs in a mortar, let them steep until the water turns green, add ice, and pour it over yerba in the &lt;em&gt;guampa&lt;/em&gt; - a cup made from a bull&amp;#39;s horn.&lt;/p&gt;

&lt;p&gt;Nobody certified these people. They learned from their mothers, who learned from theirs. And yet modern research keeps confirming what they&amp;#39;ve been saying all along.&lt;/p&gt;

&lt;h3 id=&#34;what-the-plant-actually-does-2&#34;&gt;What the Plant Actually Does&lt;/h3&gt;

&lt;p&gt;Here&amp;#39;s where it gets interesting. Yerba mate turns out to be one of the more impressive plants you can put in your body.&lt;/p&gt;

&lt;p&gt;The polyphenol content - the antioxidant compounds - runs between 90 and 180 milligrams per gram of dry leaf. That&amp;#39;s higher than green tea. A single cup prepared the traditional way delivers around half a gram of polyphenols. The main one is chlorogenic acid, the same compound that makes coffee good for you, but mate has more of it.&lt;/p&gt;

&lt;p&gt;Caffeine content sits around 80 milligrams per cup, comparable to coffee. But mate also contains theobromine, the compound in chocolate that produces a gentler, longer-lasting alertness. People who drink mate often report that it wakes them up without the jitters or the crash. This isn&amp;#39;t mysticism. It&amp;#39;s pharmacology. The two stimulants work differently, and together they balance each other out.&lt;/p&gt;

&lt;p&gt;The cardiovascular research is solid. A 40-day study found that mate dropped LDL cholesterol by 8.5% in healthy subjects and even more - 13% - in people already taking statins. An 8-week trial showed blood pressure reductions of about 8 points systolic and 6 diastolic. Another study found that mate increased an enzyme called paraoxonase-1 by nearly 10%, which protects against arterial plaque. These aren&amp;#39;t miracle cures. But they&amp;#39;re real effects, measured in real trials.&lt;/p&gt;

&lt;p&gt;There&amp;#39;s evidence for blood sugar regulation too. Type 2 diabetics who drank mate three times daily for two months showed lower fasting glucose and better long-term blood sugar markers. Studies on weight loss show increased fat oxidation during exercise - around 23% improvement - and reduced appetite.&lt;/p&gt;

&lt;p&gt;One serious caveat: temperature matters. The International Agency for Research on Cancer flags drinks above 65°C as probable carcinogens. Traditional hot mate runs 70-85°C. Heavy consumption of very hot mate correlates with higher rates of esophageal cancer, especially combined with alcohol and tobacco. But cold mate - tereré - shows no increased risk. The heat causes the damage, not the plant.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;yuyeros&lt;/em&gt; of Mercado 4 couldn&amp;#39;t cite these studies. But they knew the drink gave energy without making people crazy. They knew which herbs settled the stomach and which ones helped you sleep. They&amp;#39;d been testing this on themselves and their customers for generations. The labs are just writing it down now.&lt;/p&gt;

&lt;h3 id=&#34;the-circle-2&#34;&gt;The Circle&lt;/h3&gt;

&lt;p&gt;Drinking mate follows rules that nobody legislated. The &lt;em&gt;cebador&lt;/em&gt; prepares the drink, takes the first sip to check the temperature and taste, then refills and passes clockwise. You drink until the gourd is empty. You don&amp;#39;t move the bombilla - it disturbs the yerba and floods the straw. You pass with your right hand. You say &amp;#34;gracias&amp;#34; only when you&amp;#39;ve had enough. The word means &amp;#34;I&amp;#39;m done,&amp;#34; not &amp;#34;thank you.&amp;#34;&lt;/p&gt;

&lt;p&gt;These customs exist because they solve problems. Equal access to a shared resource. No waste. Clear signals for opting out. Coordination among groups of different sizes. Nobody designed the system. It evolved because it worked.&lt;/p&gt;

&lt;p&gt;What strikes me most is how the ritual dissolves rank. Rich and poor drink from the same gourd, through the same straw. You can&amp;#39;t share mate without becoming, for that moment, equals. The anthropologist Daniel Vidart wrote that &amp;#34;mate overcomes the separation tendencies of the Creole and equalizes social classes.&amp;#34; He wasn&amp;#39;t being sentimental. He was describing something you can watch happen.&lt;/p&gt;

&lt;p&gt;To refuse offered mate is to refuse friendship. The Guaraní named the vessel &lt;em&gt;ca&amp;#39;iguá&lt;/em&gt; - &amp;#34;container for yerba water.&amp;#34; Simple and direct. The bombilla was &lt;em&gt;tacuapí&lt;/em&gt;, after the reed plant originally used to make it. Every part of the tradition emerged from what people had and what they needed. The mate circle recreates, every day, what the myth describes: strangers becoming family through a shared cup.&lt;/p&gt;

&lt;h3 id=&#34;what-survived-2&#34;&gt;What Survived&lt;/h3&gt;

&lt;p&gt;Yerba mate made it through Spanish prohibition in the 1600s, Jesuit monopoly in the 1700s, and the &lt;em&gt;mensú&lt;/em&gt; system well into the 1900s. It survived the War of the Triple Alliance, which killed something like 90% of Paraguay&amp;#39;s adult male population. It survived Stroessner&amp;#39;s dictatorship. It remains, in 2025, exactly what it was when Yarí planted those blue seeds: a drink shared among friends.&lt;/p&gt;

&lt;p&gt;The mythology got it right. The gods rewarded hospitality, not compliance. They gave the plant to someone who helped strangers without knowing who they were. Ka&amp;#39;a became &amp;#34;the symbol of friendship&amp;#34; because friendship is something you offer. Nobody can make you do it. If it&amp;#39;s compelled, it isn&amp;#39;t friendship anymore.&lt;/p&gt;

&lt;p&gt;The tereré circle still works this way. No law requires Paraguayans to share their guampa. They do it because that&amp;#39;s what the drink is for - has always been for. Each round reinforces the same understanding: whoever drinks together, belongs together.&lt;/p&gt;

&lt;p&gt;Five hundred years of people trying to control this plant, profit from it, ban it, tax it, or monopolize it. The tradition just kept going. The sacred leaf grew where the gods planted it, and free people kept finding it good.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;&lt;em&gt;&amp;#34;Yerba Mate awakens the sleepy, corrects the lazy, and makes sisters of people who don&amp;#39;t know each other.&amp;#34;&lt;/em&gt; - Eduardo Galeano&lt;/p&gt;
 &lt;/blockquote&gt;
    </content>
    <updated>2026-06-15T09:24:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy9hnx7wrlsmnjp5z72yzmp7dvvaj74ana98jh40f3vfeal9zv9uqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qrwuywk</id>
    
      <title type="html">Not yet.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy9hnx7wrlsmnjp5z72yzmp7dvvaj74ana98jh40f3vfeal9zv9uqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qrwuywk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv06fky7w0nzakz0djdspxy4qvuhhh6ngsarnew78rhpmw05kyf5spz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsmckwkg&#39;&gt;nevent1q…kwkg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Not yet.
    </content>
    <updated>2026-06-15T09:23:35&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgnrs8tpx84ue3ay66fgmufs98zx0tajhddfm7j6mxem5g4dnc8dqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qzpcn25</id>
    
      <title type="html">So cool!</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgnrs8tpx84ue3ay66fgmufs98zx0tajhddfm7j6mxem5g4dnc8dqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qzpcn25" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswz9jtp4lfdymvaqz98tfeveymq92zhwnjz86n0xcclm2u5svamdqpypmhxue69uhhyetvv9ujumn0v3jhyatwdejhyuewdejhgam0wf4j76ywzwj&#39;&gt;nevent1q…wzwj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;So cool!
    </content>
    <updated>2026-06-14T21:21:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxwthke7ux29d0qgya7zg9pv0r22mlg9xafvmt48dmya83ty94k6gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qvhqytr</id>
    
      <title type="html">Already done, sir, @nprofile…4dda got you. #nevent1q…6lhk</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxwthke7ux29d0qgya7zg9pv0r22mlg9xafvmt48dmya83ty94k6gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qvhqytr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0xzl8hl93av4chtj69fkhf6gk9xj9uvk8zjuxg4mysnw7nk5tzwcpr9mhxue69uhhyetvv9ujuumwdae8gtnnda3kjctv9ua03t0e&#39;&gt;nevent1q…3t0e&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Already done, sir, &lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Person&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nprofile1qqsd4dkxqewy8xum47ctpu0ltgxxsfemeewpjkdyzk9ddfcg286s0dsppemhxue69uhkummn9ekx7mp0qy2hwumn8ghj7un9d3shjtnyv9kh2uewd9hj7qghwaehxw309aex2mrp0yh8qunfd4skctnwv46z79s4dda&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;&lt;span&gt;Juraj&lt;/span&gt; (&lt;span class=&#34;italic&#34;&gt;nprofile…4dda&lt;/span&gt;)&lt;/a&gt;&lt;/span&gt; got you.&lt;br/&gt;&lt;blockquote class=&#34;border-l-05rem border-l-strongpink border-solid&#34;&gt;&lt;div class=&#34;-ml-4 bg-gradient-to-r from-gray-100 dark:from-zinc-800 to-transparent mr-0 mt-0 mb-4 pl-4 pr-2 py-2&#34;&gt;quoting &lt;br/&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/nevent1qqsw63yrs08sfdqwrlf87ew7ry48vpf5m4gghw3lwy8a0xcwglkettccz6lhk&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;nevent1q…6lhk&lt;/a&gt;&lt;/span&gt; &lt;/div&gt; 🌐 Bridging Bitchat &#43; MeshCore: Resilient communication when infrastructure fails&lt;br/&gt;&lt;br/&gt;Bitchat = Bluetooth mesh on phones you already have (~100m range)&lt;br/&gt;MeshCore = LoRa long-range mesh (km&#43; with cheap hardware)&lt;br/&gt;&lt;br/&gt;The bridge connects them. Your phone talks to the city-wide mesh network.&lt;br/&gt;Perfect for disasters, protests, internet shutdowns.&lt;br/&gt;&lt;br/&gt;Code: &lt;a href=&#34;https://github.com/jooray/MeshCore/tree/feature/bitchat-bridge&#34;&gt;https://github.com/jooray/MeshCore/tree/feature/bitchat-bridge&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Releases: &lt;a href=&#34;https://github.com/jooray/MeshCore/releases&#34;&gt;https://github.com/jooray/MeshCore/releases&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Read more: &lt;a href=&#34;https://juraj.bednar.io/en/blog-en/2026/01/18/bridging-bitchat-and-meshcore-resilient-communication-when-you-need-it-most/&#34;&gt;https://juraj.bednar.io/en/blog-en/2026/01/18/bridging-bitchat-and-meshcore-resilient-communication-when-you-need-it-most/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt; &lt;img src=&#34;https://juraj.bednar.io/wp-content/uploads/2026/01/MeshCoreBitchat-1200x1224.jpg&#34;&gt;  &lt;br/&gt;&lt;br/&gt; &lt;/blockquote&gt;
    </content>
    <updated>2026-06-13T10:40:12&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqv3uaqdjksp578ncgha0gxgzpvt6wcjqn67zjse5me96qkz6zruspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qujjhmm</id>
    
      <title type="html">That&amp;#39;s pretty, where do you generate those graphs?</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqv3uaqdjksp578ncgha0gxgzpvt6wcjqn67zjse5me96qkz6zruspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qujjhmm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxyd86tg260s4lyxwqpa8we7a78tajzag45rgwwa2d629dafpqdxspz4mhxue69uhhyetvv9ujuerpd46hxtnfduhs7nffwr&#39;&gt;nevent1q…ffwr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;That&amp;#39;s pretty, where do you generate those graphs?
    </content>
    <updated>2026-06-13T10:37:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9ewxtryuf0d4h5wvtrkmu68v2x2k0yrvlzpjdw7melapnthr8xcspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qtem7hk</id>
    
      <title type="html">Looks like a coldcard.</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9ewxtryuf0d4h5wvtrkmu68v2x2k0yrvlzpjdw7melapnthr8xcspgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qtem7hk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw65kx5pta6daaj55ykdgsj6xe30vz37w2jsnptqn0fde4t57fc3qpzdmhxue69uhk7enxvd5xz6tw9ec82c30hu3xhu&#39;&gt;nevent1q…3xhu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Looks like a coldcard.
    </content>
    <updated>2026-06-13T10:28:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyqmgf08gymszf7qs76xzxgktr6lmj48z3mzdy596jmzgz45nhu4spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q3tcp70</id>
    
      <title type="html">Fun fact, this scene wasn&amp;#39;t in the script. Harrison Ford was ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyqmgf08gymszf7qs76xzxgktr6lmj48z3mzdy596jmzgz45nhu4spgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7q3tcp70" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspup6rvr2fv00tpevyftrwppfpkhcvjtd84c0thzs9dgmrrd0vajqpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsksg5wc&#39;&gt;nevent1q…g5wc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Fun fact, this scene wasn&amp;#39;t in the script. &lt;br/&gt;Harrison Ford was sick that day, and didn&amp;#39;t feel like actually fighting that guy as was planned. So he improvised and shot him to have less work.
    </content>
    <updated>2026-06-13T10:26:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswx46q8s6kqzd4ccwksac4umtuhrfvmx7wd9y4w4h6xcm065avfjqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qrgelgv</id>
    
      <title type="html">Best Nostr desktop client? #asknostr</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswx46q8s6kqzd4ccwksac4umtuhrfvmx7wd9y4w4h6xcm065avfjqpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qrgelgv" />
    <content type="html">
      Best Nostr desktop client?&lt;br/&gt;#asknostr
    </content>
    <updated>2026-06-13T10:20:46&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsya4u8cgwat7zjds852jd4vtvhhrj9n78ssqlwkywk4vfvfkcen2gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqxwlu5</id>
    
      <title type="html">We could print the hash and blossom server tho...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsya4u8cgwat7zjds852jd4vtvhhrj9n78ssqlwkywk4vfvfkcen2gpgdmhxue69uhhyetvv9ujuar0washyernd35kyetjw3ujucm0d5hkummnw3er5un9d3shjtn5damkzunywdkxjcn9wf68jtnrdakj76twvfhhsq3qklkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qqxwlu5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfts3vfagz73cp68al053pxsmd77ysg5tdld3dpmyq4fpvm9vpgygpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsdn9qmw&#39;&gt;nevent1q…9qmw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;We could print the hash and blossom server tho...
    </content>
    <updated>2026-06-13T10:14:42&#43;02:00</updated>
  </entry>

</feed>