<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated>2026-07-20T23:23:49Z</updated>
  <generator>https://njump.me</generator>

  <title>Nostr notes by NostrSMS</title>
  <author>
    <name>NostrSMS</name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://njump.me/npub1n0smsv2jfrhtyruan2e8zlgh2rj0yayfa2cl55cav7w6m56v97xskwlzns.rss" />
  <link href="https://njump.me/npub1n0smsv2jfrhtyruan2e8zlgh2rj0yayfa2cl55cav7w6m56v97xskwlzns" />
  <id>https://njump.me/npub1n0smsv2jfrhtyruan2e8zlgh2rj0yayfa2cl55cav7w6m56v97xskwlzns</id>
  <icon>https://dl.vanderwarker.family/images/nostr/pfp/current/nostrsms.jpg</icon>
  <logo>https://dl.vanderwarker.family/images/nostr/pfp/current/nostrsms.jpg</logo>




  <entry>
    <id>https://njump.me/nevent1qqstzjcxu97l2cgsn22zypa2n5hh4mvmhs65s69skw023gdmvstue9szyzd7rwp32fywavs0nkdtyutazagwfun5384tr7jnr4nemtwnfshc6zzven9</id>
    
      <title type="html">Announcing NostrSMS v0.1.0 — a lightweight, sovereign bridge ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqstzjcxu97l2cgsn22zypa2n5hh4mvmhs65s69skw023gdmvstue9szyzd7rwp32fywavs0nkdtyutazagwfun5384tr7jnr4nemtwnfshc6zzven9" />
    <content type="html">
      In reply to &lt;a href=&#39;/naddr1qqdxzmnwda6kucmfdenj6mn0wd68yumdwvkhvvpdxyknqqglwaehxw309aex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0ypzp7peldn3gkv2wgeap8dag2hc9nyhs8g04ft5wnccgxhepdwfxzfeqvzqqqr4guxzh8ye&#39;&gt;naddr1qq…h8ye&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;Announcing NostrSMS v0.1.0 — a lightweight, sovereign bridge from SMS &amp;amp; XMPP to Nostr with NIP-46 remote signing.&lt;br/&gt;&lt;br/&gt;Stateless, RAM-only, gossip-aware, zero database.&lt;br/&gt;&lt;br/&gt;Read the release post:&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;/naddr1qqdxzmnwda6kucmfdenj6mn0wd68yumdwvkhvvpdxyknqqglwaehxw309aex2mrp0yh8vctwv3jhyampwf4k2u3wvesk66tv0yq3samnwvaz7tmjv4kxz7fwwd3h2cnpxverxtnrdaksyg8c88akw9ze3fer85yah4p2lqkvj7qap749w360rpq6ly94eycf8ypsgqqqw4rsm5mu4l&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qq…mu4l&lt;/a&gt;&lt;/span&gt;&lt;br/&gt; &lt;/div&gt; 
&lt;h1 id=&#34;nostrsms-bridging-sms-xmpp-to-nostr-with-nip-46-remote-signing-2&#34;&gt;NostrSMS: Bridging SMS &amp;amp; XMPP to Nostr with NIP-46 Remote Signing&lt;/h1&gt;

&lt;p&gt;&lt;img src=&#34;https://nostrsms.com/NostrSMSLogo.png&#34; alt=&#34;NostrSMS Logo&#34;/&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&amp;#34;Because, why not.&amp;#34;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Nostr is built on decentralized cryptographic identity, but everyday communications often still happen over legacy telecommunications and transport protocols. What if you&amp;#39;re on a road trip with flaky mobile data, carrying a dumbphone, or simply prefer texting from your standard SMS app while staying plugged into your Nostr feed?&lt;/p&gt;

&lt;p&gt;That’s the exact itch &lt;strong&gt;NostrSMS&lt;/strong&gt; was built to scratch.&lt;/p&gt;

&lt;p&gt;Today, we&amp;#39;re sharing &lt;strong&gt;NostrSMS v0.1.0&lt;/strong&gt; — a lightweight, sovereign bot written in Go that bridges incoming SMS and XMPP chats directly into Nostr notes, replies, reactions, and boosts, without ever touching your private keys.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;how-the-pipeline-works-2&#34;&gt;📱 How the Pipeline Works&lt;/h2&gt;

&lt;p&gt;Under the hood, NostrSMS is natively an XMPP bot. If you use standard XMPP clients like Dino, Gajim, Monocles, or Conversations, you can message the bot directly.&lt;/p&gt;

&lt;p&gt;To achieve standard SMS bridging, you route SMS through federated gateways:
1. &lt;strong&gt;&lt;a href=&#34;https://jmp.chat&#34;&gt;jmp.chat&lt;/a&gt;&lt;/strong&gt;: Provides a standard phone number for SMS.
2. &lt;strong&gt;&lt;a href=&#34;https://cheogram.com&#34;&gt;Cheogram&lt;/a&gt;&lt;/strong&gt;: Forwards that SMS traffic directly into your XMPP account.
3. &lt;strong&gt;NostrSMS&lt;/strong&gt;: Receives the message over XMPP, handles commands, requests signatures from your remote signer, and publishes to relays.&lt;/p&gt;

&lt;p&gt;Text from standard SMS → routed through XMPP → published to Nostr. Simple, clean, and reliable.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;security-model-why-self-hosting-matters-2&#34;&gt;🛡️ Security Model: Why Self-Hosting Matters&lt;/h2&gt;

&lt;p&gt;NostrSMS uses &lt;strong&gt;NIP-46 (Nostr Connect)&lt;/strong&gt; to request signatures from your remote signer (like nsecBunker, Amber, or mobile signers). Your secret key (&lt;code&gt;nsec&lt;/code&gt;) remains securely tucked away on your signer at all times.&lt;/p&gt;

&lt;p&gt;However, bridging protocols means the bot holds an ephemeral ECDH conversation key to communicate with your signer during active sessions. Because of this, &lt;strong&gt;self-hosting is strongly recommended&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We designed NostrSMS with strict privacy and security constraints:
- &lt;strong&gt;100% Stateless &amp;amp; RAM-Only:&lt;/strong&gt; There is no database. Encryption keys, active bunker connections, follow lists, and note caches reside exclusively in volatile memory. Restarting the process or sending &lt;code&gt;!disconnect&lt;/code&gt; wipes everything instantly.
- &lt;strong&gt;Zero Hardcoded Public Relays:&lt;/strong&gt; The bot never forces public relays on you (no Damus, Primal, or nos.lol hardcoded). It dynamically fetches your personal read/write relays from your &lt;strong&gt;NIP-65 (Kind 10002)&lt;/strong&gt; profile over your bunker connection.
- &lt;strong&gt;Linux Sandbox Hardening:&lt;/strong&gt; Includes production-ready systemd unit files (&lt;code&gt;nostrsms.service&lt;/code&gt; and &lt;code&gt;nostrsms-user.service&lt;/code&gt;) configured with &lt;code&gt;ProtectSystem=strict&lt;/code&gt;, &lt;code&gt;ProtectHome=read-only&lt;/code&gt;, and &lt;code&gt;NoNewPrivileges=true&lt;/code&gt;.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;what-s-in-v0-1-0-2&#34;&gt;✨ What&amp;#39;s in v0.1.0&lt;/h2&gt;

&lt;p&gt;Here is a rundown of the features included in this initial release:&lt;/p&gt;

&lt;h3 id=&#34;1-post-preview-confirmation-mode-confirm-2&#34;&gt;1. Post Preview Confirmation Mode (&lt;code&gt;!confirm&lt;/code&gt;)&lt;/h3&gt;

&lt;p&gt;Sending an SMS by accident is easy. To prevent broadcasting half-written thoughts or replying to the wrong thread, NostrSMS features an optional draft preview mode. Notes, replies, reactions, and reposts generate an in-memory preview with a 10-minute TTL. Reply &lt;code&gt;y&lt;/code&gt; to confirm or &lt;code&gt;n&lt;/code&gt; to discard.&lt;/p&gt;

&lt;h3 id=&#34;2-smart-zero-copy-mentions-2&#34;&gt;2. Smart Zero-Copy Mentions&lt;/h3&gt;

&lt;p&gt;When an incoming mention alert arrives in your chat, you can reply immediately with &lt;code&gt;!r &amp;lt;text&amp;gt;&lt;/code&gt;, or react with &lt;code&gt;!like&lt;/code&gt;, &lt;code&gt;!heart&lt;/code&gt;, or &lt;code&gt;!boost&lt;/code&gt; without copying and pasting long &lt;code&gt;note1...&lt;/code&gt; strings.&lt;/p&gt;

&lt;h3 id=&#34;3-curated-home-feed-f-2&#34;&gt;3. Curated Home Feed (&lt;code&gt;!f&lt;/code&gt;)&lt;/h3&gt;

&lt;p&gt;Instead of relay spam, &lt;code&gt;!f&lt;/code&gt; queries your active read relays strictly filtered to your &lt;strong&gt;NIP-02 follows list (&lt;code&gt;kind:3&lt;/code&gt;)&lt;/strong&gt;, complete with petnames and a 30-minute safety cache TTL.&lt;/p&gt;

&lt;h3 id=&#34;4-nip-10-threading-gossip-outbox-2&#34;&gt;4. NIP-10 Threading &amp;amp; Gossip Outbox&lt;/h3&gt;

&lt;p&gt;Full root and reply marker handling with participant &lt;code&gt;p&lt;/code&gt; tag inheritance. Outbox gossip broadcasts replies across your write relays, the thread parent relays, and the target authors&amp;#39; dynamic NIP-65 inbox relays.&lt;/p&gt;

&lt;h3 id=&#34;5-reactions-boosts-2&#34;&gt;5. Reactions &amp;amp; Boosts&lt;/h3&gt;

&lt;p&gt;Engage natively from text messages with NIP-25 likes (&lt;code&gt;!like&lt;/code&gt;), hearts (&lt;code&gt;!heart&lt;/code&gt;), custom emojis (&lt;code&gt;!react 1 🔥&lt;/code&gt;), and NIP-18 reposts (&lt;code&gt;!boost&lt;/code&gt;).&lt;/p&gt;

&lt;h3 id=&#34;6-live-mention-streaming-alerts-2&#34;&gt;6. Live Mention Streaming (&lt;code&gt;!alerts&lt;/code&gt;)&lt;/h3&gt;

&lt;p&gt;Real-time background push streaming delivers incoming replies and mentions straight into your SMS/XMPP conversation as they hit your read relays.&lt;/p&gt;

&lt;hr&gt;

&lt;h2 id=&#34;getting-started-2&#34;&gt;🛠️ Getting Started&lt;/h2&gt;

&lt;p&gt;You can spin up your own instance in minutes:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git clone https://git.vanderwarker.family/nostr/nostrsms.git
cd nostrsms
make build
cp config.ini.dist config.ini
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Configure your XMPP credentials and bot key in &lt;code&gt;config.ini&lt;/code&gt;, then run &lt;code&gt;./nostrsms&lt;/code&gt; or install the user service via &lt;code&gt;make service-user&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href=&#34;https://nostrsms.com&#34;&gt;https://nostrsms.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source Code (Gitea):&lt;/strong&gt; &lt;a href=&#34;https://git.vanderwarker.family/nostr/nostrsms&#34;&gt;https://git.vanderwarker.family/nostr/nostrsms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Source Code (GitWorkshop / Nostr):&lt;/strong&gt; &lt;a href=&#34;https://gitworkshop.dev/stephen@vanderwarker.family/relay.scuba323.com/nostrsms&#34;&gt;https://gitworkshop.dev/stephen@vanderwarker.family/relay.scuba323.com/nostrsms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer Chat (XMPP):&lt;/strong&gt; &lt;code&gt;nostrsms@conference.vanderwarker.family&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer Chat (Nostr NIP-29):&lt;/strong&gt; &lt;code&gt;&lt;span itemprop=&#34;mentions&#34; itemscope itemtype=&#34;https://schema.org/Article&#34;&gt;&lt;a itemprop=&#34;url&#34; href=&#34;/naddr1qq9kzun8dpc8yet5dacxcqgcwaehxw309aex2mrp0yh8xcm4vfsnxv3n9e3k7mgzyqgqscatlfl868pv9lnkun0daemagm27jmkgflxdzwm8aefxqrhrvqcyqqqfskq6vxje9&#34; class=&#34;bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1&#34;&gt;naddr1qq…xje9&lt;/a&gt;&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay sovereign, run your own bridge, and see you on the relays!&lt;/p&gt;

&lt;p&gt;PV ☮️ 💜 ⚡&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&amp;#34;This is the way.&amp;#34;&lt;/em&gt;&lt;/p&gt;
 &lt;/blockquote&gt;&lt;br/&gt;Code:&lt;br/&gt;• GitWorkshop: &lt;a href=&#34;https://gitworkshop.dev/stephen@vanderwarker.family/relay.scuba323.com/nostrsms&#34;&gt;https://gitworkshop.dev/stephen@vanderwarker.family/relay.scuba323.com/nostrsms&lt;/a&gt;&lt;br/&gt;• Gitea: &lt;a href=&#34;https://git.vanderwarker.family/nostr/nostrsms&#34;&gt;https://git.vanderwarker.family/nostr/nostrsms&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Website: &lt;a href=&#34;https://nostrsms.com&#34;&gt;https://nostrsms.com&lt;/a&gt;&lt;br/&gt;Chat: nostrsms@conference.vanderwarker.family&lt;br/&gt;&lt;br/&gt;#nostr #nostrsms #golang
    </content>
    <updated>2026-09-19T13:01:39Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqs9yq3lvej628rdk0m5r5s8k3gpk8ltjuglz4dy3mudz7qmqj7cdfczyzd7rwp32fywavs0nkdtyutazagwfun5384tr7jnr4nemtwnfshc62pvvww</id>
    
      <title type="html">Announcing NostrSMS v0.1.0 — a lightweight, sovereign bridge ...</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqs9yq3lvej628rdk0m5r5s8k3gpk8ltjuglz4dy3mudz7qmqj7cdfczyzd7rwp32fywavs0nkdtyutazagwfun5384tr7jnr4nemtwnfshc62pvvww" />
    <content type="html">
      Announcing NostrSMS v0.1.0 — a lightweight, sovereign bridge from SMS &amp;amp; XMPP to Nostr with NIP-46 remote signing.&lt;br/&gt;&lt;br/&gt;Stateless, RAM-only, gossip-aware, zero database.&lt;br/&gt;&lt;br/&gt;Website: &lt;a href=&#34;https://nostrsms.com&#34;&gt;https://nostrsms.com&lt;/a&gt;&lt;br/&gt;Source: &lt;a href=&#34;https://git.vanderwarker.family/nostr/nostrsms&#34;&gt;https://git.vanderwarker.family/nostr/nostrsms&lt;/a&gt;&lt;br/&gt;Chat: nostrsms@conference.vanderwarker.family&lt;br/&gt;&lt;br/&gt;#nostr #nostrsms #golang
    </content>
    <updated>2026-09-19T12:42:16Z</updated>
  </entry>

  <entry>
    <id>https://njump.me/nevent1qqsxhe74et2k2ctlrzx97fpxk7grayd88lmk9g6xf5eykglag4vlcgczyzd7rwp32fywavs0nkdtyutazagwfun5384tr7jnr4nemtwnfshc6snsv6l</id>
    
      <title>Nostr event nevent1qqsxhe74et2k2ctlrzx97fpxk7grayd88lmk9g6xf5eykglag4vlcgczyzd7rwp32fywavs0nkdtyutazagwfun5384tr7jnr4nemtwnfshc6snsv6l</title>
    
    <link rel="alternate" href="https://njump.me/nevent1qqsxhe74et2k2ctlrzx97fpxk7grayd88lmk9g6xf5eykglag4vlcgczyzd7rwp32fywavs0nkdtyutazagwfun5384tr7jnr4nemtwnfshc6snsv6l" />
    <content type="html">
      Is this thing on?
    </content>
    <updated>2026-04-18T19:12:17Z</updated>
  </entry>

</feed>