Repository navigation
Nostr and Sign In
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.
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.
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.
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.
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.
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.
| 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 |
Roadstr is open source under the MIT licence · Source · Releases · Changelog · Issues
Using Roadstr
- Installation
- Getting started
- Navigation
- Maps and offline use
- Search and Explore
- Road reports
- Public transport
- Voice guidance
- Voice search
- Journey and achievements
- Settings reference
Nostr and money
Trust
Build and extend