Skip to content

Nostr and Sign In

Lwb89dev edited this page Oct 19, 2026 · 1 revision

Nostr and sign-in

Why Nostr

Nostr is a protocol where people publish signed messages to relays that anyone can run. Roadstr uses it so that road reports belong to the people who make them: there is no company server to switch off, no account to create and no central database of reports.

You do not need an identity to use Roadstr

Navigation, search, maps, voice, public transport and offline use all work without one. You need a Nostr identity to:

  • publish, confirm or dispute road reports;
  • be zapped on your own reports and see the activity inbox;
  • sync saved places and Journey between devices.

Signing in

Roadstr never holds your private key. Signing happens in a separate signer:

Method How
Amber (NIP-55) The Android signer app Amber. Choose Login in Roadstr; Amber asks you to approve. Recommended.
A remote signer, "bunker" (NIP-46) Paste a bunker:// link (it must name at least one wss:// relay), or choose Open signer app and approve Roadstr's nostrconnect:// offer.

The only secret Roadstr keeps for a bunker is its own pairing key, encrypted with the Android Keystore.

Why no nsec login. An app that holds your key can leak it, and the Java virtual machine can neither wipe a key from memory nor sign in constant time. The login with a pasted nsec was removed from the Kotlin app on purpose (version 1.0). If your old install used one, you come over logged out, with a one-time notice, and everything else is imported. The Flutter 0.5.x line on the flutter-maintenance branch still has it.

Profile visibility

Roadstr always publishes the public key needed to verify a report. Settings → Profile visibility chooses what else other Roadstr users see: only a generic avatar and “nostrich” (pseudonymous mode, recommended), or your Nostr name, npub and picture. Your reports, their locations, your reputation and the zaps you receive are public either way.

Relays

Roadstr talks to public relays directly. Defaults: wss://nos.lol, wss://relay.primal.net, wss://nostr.oxtr.dev and wss://relay.damus.io. For favourites sync you can add your own relay (Settings → Sync favorites → Your own relay). Public relays can rate-limit or disappear, so Roadstr reads from and publishes to several at once.

Favourites sync

Publishes your saved places, end-to-end encrypted, to your relays so that they follow you across devices.

  • The snapshot is an arbitrary-app-data event (NIP-78, kind 30078) encrypted with NIP-44 to your own key. Relays see ciphertext; nobody but you can read it. A relay can still see that you have a snapshot under your public key and roughly when it changed — the setting's help text says exactly that.
  • An optional sync passphrase can be set under Settings → Sync favorites.
  • Sync automatically (off by default) pushes every change and pulls at startup. Otherwise use Push to Nostr and Pull from Nostr.
  • It needs a signer that can do NIP-44. Without a signed-in identity the settings say Sign in with Nostr to enable sync.

Protocols implemented

NIP Purpose
NIP-01 Base relay protocol
NIP-04 Legacy encryption, for NWC requests and signers that only speak it
NIP-19 npub encoding
NIP-31 alt text on events other clients may not know
NIP-40 expiration on road events
NIP-44 Versioned encryption (v2): favourites sync, NWC, the remote-signer channel, Journey sync
NIP-46 Nostr Connect (bunker://, nostrconnect://)
NIP-47 Nostr Wallet Connect
NIP-55 Android signer application (Amber)
NIP-57 Zap receipts
NIP-58 Badges (client side) — see Journey and achievements
NIP-78 Arbitrary app data: encrypted favourites and Journey

Clone this wiki locally