Pushstr is a lightweight, relay-backed messenger built on Nostr giftwrapped DMs.
No signup, no central server, keys stay local, and messages are end-to-end encrypted.
Generate an address and start communicating within seconds. Everything lives locally until you choose to back it up. Add a contact to begin sending, or share your address to receive messages; the minimal UI surfaces contact activity in real time.
Create as many disposable or long-lived addresses as you like to isolate conversations. Messages are encrypted for the recipient and relayed through multiple nodes to avoid single points of failure.
- Private conversations with friends or fully anonymous interactions.
- Great for one-off contact: e.g., put a QR code on a poster to create a disposable inbound-only address.
- Install the browser extension and link it with your phone or another computer.
- Send text, images, or arbitrary data privately and securely.
- From text and JPEGs to MP3 or ZIP archives.
- All files are encrypted for the recipient before transport.
- Fast, lightweight stack enabling effortless, low-friction messaging.
- Multi-relay, multiple-redundancy architecture for extremely high reliability and uptime.
- Create as many profiles as there are stars in the sky without limitation*.
- Each profile may be used once or forever, depending on your threat model.
* There are approximately 10^53 times more possible Nostr keys than stars in the observable universe.
| Type | Security | Privacy | Reliability | Stability / Redundancy |
|---|---|---|---|---|
| Legacy apps | Low | Low | High | Low – single-provider failure = total outage |
| Privacy apps | Medium | Medium | Medium | Low – centralised backend, Cloudflare-level outages |
| Nostr | High | High | High | High – distributed relays, no single point of failure |
| Pushstr | High | High | High | Very High – multi-relay redundancy + client-side failover |
Pushbullet-style messaging over Nostr Giftwrapped DMs. Runs as a Firefox/Chrome extension and as a mobile app (Android/iOS).
Quick, secure, private, anonymous multi-media messaging between devices to help improve productivity.
Android and Firefox are stable - Chrome and iOS function but are a little buggy.
- Generates or imports a profile (
nsec), wraps messages as NIP-17 giftwrap (kind:1059with innerkind:4), and sends through your relays. - Listens for messages, decrypts locally and displays messages or download links for larger files.
- Browser extension UI for quick send + options; mobile app mirrors the flow with native share intent and chat view.
- Larger files encrypted for recipient and distributed via Blossom.
- Node 18+, npm
- For browsers: Firefox or Chrome/Chromium
- For mobile: Flutter 3.10+, Android SDK; Xcode for iOS. Rust +
cargo-ndkonly if you want to rebuild the native library.
npm install
# Firefox (MV2)
npm run package
# Chrome (MV3)
MANIFEST_FILE=manifest.chrome.json npm run package- Output:
dist/pluspushstr.zip. Loaddist/as a temporary add-on (about:debuggingin Firefox) or an unpacked extension (chrome://extensionsin Chrome).
cd mobile
flutter pub get
# Run on attached device/emulator (Android or iOS)
flutter run
# Android release APK
flutter build apk --release
# Load to connected mobile
flutter install --use-application-binary build/app/outputs/flutter-apk/app-release.apk- Optional Rust rebuild (refresh FFI + native libs):
flutter_rust_bridge_codegen generate
cd pushstr_rust
cargo ndk -t arm64-v8a -t armeabi-v7a -o ../mobile/android/app/src/main/jniLibs build --releaseSee mobile/QUICKSTART.md for more detail.
- No cloud backups. Export your
nsecand keep it safe. - Relay outages aren’t retried automatically; reload/refresh to reconnect.
- Vendored
vendor/nostr-tools.bundle.js; bump there to update nostr-tools.
- Publish to Zapstore / mobile app stores
- Distribute browser extensions




