NostrSMS Logo NostrSMS
100% Stateless • NIP-46 Remote Signing • Dynamic NIP-65 Gossip
NostrSMS Logo

Bridge SMS to Nostr Sovereign & Remote-Signed

A lightweight Go bot that bridges SMS text messages and standard XMPP chats to Nostr notes via NIP-46 remote signing. Ephemeral conversation keys, in-memory drafts, and zero persistent storage.

shield

Self-Hosting is Strongly Recommended

Nostr relies on cryptographic signatures, whereas SMS and XMPP are transport protocols. NostrSMS uses NIP-46 (Nostr Connect) to request remote signatures from your signer (such as nsecBunker, Amber, or mobile signers).

While NostrSMS is 100% RAM-only with zero database storage, any bridge operator technically holds an ephemeral ECDH conversation key while you are connected. For total control and sovereign privacy, we strongly encourage running your own instance on your home server, Raspberry Pi, or VPS.

How It Works

Bridging legacy telecommunications to the decentralized social web without ever exposing your private keys.

1

Text from SMS

Send an SMS from your phone using your jmp.chat number.

2

Forwarded via XMPP

Cheogram routes the SMS directly into XMPP to your NostrSMS Go bot.

3

NIP-46 Remote Signing

Bot asks your nsecBunker or mobile signer for a signature. Your private key never leaves your signer.

4

NIP-65 Gossip Outbox

Events are broadcasted to your personal write relays and recipient inboxes automatically.

visibility

Post Confirmation Preview

Never post or reply to the wrong thread by mistake. Enabled by default with !confirm, posts generate an in-memory draft preview for 10 minutes. Reply y to confirm or n to discard.

quickreply

Smart Zero-Copy Mentions

Incoming mentions and replies stream straight to your SMS chat. Reply instantly with !r <text>, !like, !heart, or !boost without copying or pasting long note IDs!

dynamic_feed

Curated Home Feed (!f)

Zero public relay spam. NostrSMS discovers your NIP-02 follow list (kind:3) and delivers a clean home timeline with petnames and 30-minute safety cache TTL.

favorite

Reactions & Reposts

Engage natively on Nostr with NIP-25 likes (!like, !heart), custom emojis (!react 1 🔥), and NIP-18 boosts (!boost) with full confirmation receipts.

notifications_active

Real-Time Alert Push

Stay notified on the go. When connected, NostrSMS listens to your read relays and immediately streams notifications when someone tags your public key or replies to your threads.

lock

Zero Hardcoded Relays

Strict outbox gossip model (NIP-65). We do not force Damus or public relays on you. The bot dynamically resolves your personal write/read relays from your Kind 10002 profile.

Complete Command Reference

All commands can be texted or messaged directly to the bot in chat.

Command Description Example
!help Show available bot commands and syntax guide !help
!connect <bunker> Initiate NIP-46 session and discover NIP-65 relays !connect bunker://...
!status Check signer connection, pubkey, and active relays !status
!confirm [on|off] Toggle or check draft confirmation preview mode !confirm on
!disconnect Terminate remote signing session and wipe RAM cache !disconnect
<plain text> Publish a new top-level note (kind:1) Hello world from SMS! 💜
!f / !feed Fetch curated home feed from your NIP-02 follows !f
!show <#|id> Preview note full text, author petname, and origin relay !show 1
!r <#|id> <text> Reply to note with NIP-10 markers & thread gossip !r 1 Great point!
!r <text> Zero-copy shortcut: Reply directly to latest incoming mention !r Thanks for the tag!
!like [id] / !+ [id] Send NIP-25 like reaction (+). Defaults to latest mention !like 1
!heart [id] Send NIP-25 heart reaction (❤️) !heart 1
!react [id] <emoji> Send custom emoji reaction !react 1 🔥
!boost / !repost [id] Repost note to followers (NIP-18 kind:6) !boost 1
!alerts [on|off] Inspect or toggle real-time background mention streaming !alerts on
!relays [sync] Inspect active session relays or re-sync NIP-65 list !relays sync
!follows [list|sync] View follow count, display list with petnames, or re-sync !follows list

Run Your Own Instance

Deploy NostrSMS in minutes on Linux using Go 1.25+ or Docker Compose.

memory

Native Systemd Service

Compile natively on Linux. NostrSMS includes hardened system-level (nostrsms.service) and user-level (nostrsms-user.service) units with Linux security sandboxing.

# Clone & compile

git clone https://git.vanderwarker.family/nostr/nostrsms.git

cd nostrsms && make build

# Copy configuration

cp config.ini.dist config.ini

# Install as user service

make service-user

Read Full Deployment Guide arrow_forward
dock

Docker Compose

Launch with our lightweight Alpine multi-stage container. No persistent database volumes needed — only your single config.ini file.

# Configure environment

cp config.ini.dist config.ini

# Start container in background

docker compose up -d

# Stream runtime logs

docker compose logs -f

Inspect docker-compose.yml arrow_forward

Join the Community

Hang out with fellow NostrSMS developers and users across federated XMPP and Nostr groups.

forum
Federated MUC

XMPP Chatroom

Join our real-time developer group chat using any standard XMPP client (Dino, Gajim, Conversations, Monocles).

nostrsms@conference.vanderwarker.family
login Join via XMPP
hub
NIP-29 Group

Nostr Chat Group

Decentralized relay-moderated chat group. Chat directly in your browser or open in your native Nostr app.

naddr1qq9kzun8dpc8yet5da...vxje9
bolt
Support NostrSMS

Send Lightning Sats directly to the bridge

donate@nostrsms.com
npub: npub1n0sms...wlzns
hex: 9be1b831...2f8d