Mostro
foundation.mostro.app
Mostro Mobile app Non-custodial, peer-to-peer Bitcoin exchange on Lightning, powered by Nostr.
The official non-custodial, cross-platform client for the Mostro peer-to-peer exchange network. Mostro App lets anyone buy or sell Bitcoin for local fiat currency over the Lightning Network — without accounts, without KYC, and without trusting a third party. Built with Flutter and a Rust core, it runs on Android, iOS, Web, macOS, Windows, and Linux from a single codebase. Key Features: - Non-custodial: Your keys stay on your device — no exchange ever holds your funds - Privacy-first: End-to-end encrypted over Nostr — NIP-44 for messages with the Mostro daemon and for peer-to-peer chat - Lightning-native: All Bitcoin settlements happen via Lightning invoices, with Nostr Wallet Connect (NWC) support for automated invoicing - Hierarchical Key Management: BIP-32 / BIP-39 key derivation with a unique key per trade - Censorship-resistant: Built on Nostr — no central server or domain to block - Multi-Language: English, Spanish, Italian, French, German, Dutch, and Brazilian Portuguese - Open source: AGPLv3 licensed and fully auditable
First release: Oct 21, 2026, 1 total release.
Most recent release: Oct 21, 2026.
Appears in 0 app stacks.
0 sats / 0 zaps received in the past year.
Sats Received
Underlying data available via MCP: app_zaps, app_releases.
Zap Count
Underlying data available via MCP: app_zaps, app_releases.
Releases
- Oct 21, 2026 2.1.0# ⚡ Mostro v2.1.0 Non-custodial, peer-to-peer Bitcoin trading over Lightning and Nostr. ## 📥 Downloads ### 🤖 Android | File | Architecture | For | | --- | --- | --- |
More…
| [`mostro-v2.1.0-arm64-v8a.apk`](https://github.com/MostroP2P/app/releases/download/v2.1.0/mostro-v2.1.0-arm64-v8a.apk) | **v8** — ARMv8-A, 64-bit (AArch64) | **Modern phones.** Pick this one if unsure. | | [`mostro-v2.1.0-armeabi-v7a.apk`](https://github.com/MostroP2P/app/releases/download/v2.1.0/mostro-v2.1.0-armeabi-v7a.apk) | **v7** — ARMv7-A, 32-bit | **Old or entry-level phones** that run a 32-bit Android. | Both need **Android 7.0 (API 24) or later** and are the same app: an APK holds native machine code (the Flutter engine and Mostro's Rust core, which does all the cryptography), and one file per CPU instruction set keeps each download to a fraction of the size of a universal APK. Every release is signed with the same key, so it installs over the previous version and keeps your data. <details> <summary><b>Which APK is mine?</b></summary> - **`arm64-v8a` (v8)** targets the 64-bit ARMv8-A instruction set. Practically every phone released since 2016–2017 runs a 64-bit Android, Google Play has required 64-bit builds since August 2019, and recent devices — the Pixel 7 and later, and any phone built on 2023-or-newer Arm cores — are **64-bit only**: they cannot run the v7 APK at all. 64-bit code is also noticeably faster at the elliptic-curve and encryption work the app does. - **`armeabi-v7a` (v7)** targets 32-bit ARMv7-A with hardware floating point. It is for phones with a 32-bit CPU (Cortex-A7/A9/A15 class, roughly 2015 and earlier) **and** for phones whose 64-bit-capable CPU ships with a 32-bit Android — common in budget and Android Go models with 2 GB of RAM or less. - **To be sure:** try v8 first. If Android answers *"App not installed"* or *"package is not compatible with your phone"*, install v7. With a computer, `adb shell getprop ro.product.cpu.abilist` prints the supported ABIs — if `arm64-v8a` is in the list, use v8. - x86 devices (emulators, some Chromebooks) are not covered by these builds. </details> [`mostro-v2.1.0.aab`](https://github.com/MostroP2P/app/releases/download/v2.1.0/mostro-v2.1.0.aab) is the **Android App Bundle** for the Google Play Console — the store builds the per-device APKs from it. It is not installable on a phone. ### 🖥️ Desktop | File | Runs on | | --- | --- | | [`mostro-v2.1.0-linux-x64.tar.gz`](https://github.com/MostroP2P/app/releases/download/v2.1.0/mostro-v2.1.0-linux-x64.tar.gz) | x86-64, glibc 2.35 or later (Ubuntu 22.04, Debian 12, Fedora 36…) | | [`mostro-v2.1.0-windows-x64.zip`](https://github.com/MostroP2P/app/releases/download/v2.1.0/mostro-v2.1.0-windows-x64.zip) | Windows 10 or later, x86-64 | | [`mostro-v2.1.0-macos-universal.zip`](https://github.com/MostroP2P/app/releases/download/v2.1.0/mostro-v2.1.0-macos-universal.zip) | macOS 10.15 or later — Apple Silicon and Intel (universal binary) | <details> <summary><b>Linux</b> — unpack and run</summary> ```bash mkdir mostro && tar -xzf mostro-*-linux-x64.tar.gz -C mostro && ./mostro/mostro ``` Keep the folder together: the `mostro` binary loads `lib/` and `data/` from next to itself. It needs GTK 3 and **libsecret** with a running keyring (GNOME Keyring, KWallet) — that is where your keys are stored. To add Mostro to your application menu, with its icon, run `./mostro/install.sh` once (again after moving the folder; `--uninstall` removes it). On Wayland the app shows a generic icon until then. </details> <details> <summary><b>Windows</b> — unzip and run <code>mostro.exe</code></summary> Unzip the whole folder and start `mostro.exe` from inside it; the DLLs and `data\` next to it are part of the app. The build carries no Authenticode signature, so **SmartScreen** shows *"Windows protected your PC"*: choose **More info → Run anyway**. Check the file against `SHA256SUMS.txt` first. </details> <details> <summary><b>macOS</b> — allow an app Apple has not notarized</summary> The app is ad-hoc signed and **not notarized**, so Gatekeeper refuses it on a double click (*"cannot be opened"* or *"is damaged"*). After checking the zip against `SHA256SUMS.txt`, unzip it, move `mostro.app` to Applications and clear the quarantine flag once: ```bash xattr -dr com.apple.quarantine /Applications/mostro.app ``` </details> ### 🍎 iOS | File | Runs on | | --- | --- | | [`mostro-v2.1.0-ios-unsigned.ipa`](https://github.com/MostroP2P/app/releases/download/v2.1.0/mostro-v2.1.0-ios-unsigned.ipa) | iPhone, iOS 14 or later (arm64) | <details> <summary><b>iOS</b> — for sideloading only</summary> This `.ipa` is **unsigned**: iOS will not install it as it is, and it is not a TestFlight or App Store build. It is meant to sideload with a tool that re-signs it with your own Apple ID (AltStore, Sideloadly, or Xcode). Apps signed with a free Apple ID expire after 7 days, and **push notifications do not work** in a re-signed build — they need the project's own provisioning profile. </details> Verify a download with `sha256sum -c SHA256SUMS.txt --ignore-missing`. ## 📋 What's changed ### ✨ Features - **cashu:** C3b-1 — send to Lightning (melt) ([#855](https://github.com/MostroP2P/app/pull/855)) by @Forte11Cuba - **nodes:** restore on node switch and show only the active node's trades (phase 5a of 5) ([#858](https://github.com/MostroP2P/app/pull/858)) by @Catrya - **qr:** show the Mostro QR, with the order's node in its centre ([#852](https://github.com/MostroP2P/app/pull/852)) by @grunch - **l10n:** add Brazilian Portuguese and review every locale ([#840](https://github.com/MostroP2P/app/pull/840)) by @grunch - **nodes:** add Mostro México to the trusted node registry ([#838](https://github.com/MostroP2P/app/pull/838)) by @grunch ### 🐛 Bug Fixes - **orders:** a pending older than the take does not reopen an own order ([#630](https://github.com/MostroP2P/app/pull/630)) by @Forte11Cuba - **cashu:** keep a Lightning payment in flight safe from reconnect and Sync, refuse a paid quote ([#867](https://github.com/MostroP2P/app/pull/867)) by @Forte11Cuba - **trades:** adopt or wipe the trades without a node (phase 5b of 5) ([#865](https://github.com/MostroP2P/app/pull/865)) by @Catrya - **reputation:** show a user's reputation the same way on every screen ([#862](https://github.com/MostroP2P/app/pull/862)) by @grunch - **trades:** a pending order's first step waits for a taker ([#861](https://github.com/MostroP2P/app/pull/861)) by @grunch - **qr:** let the QR take the width of its card ([#857](https://github.com/MostroP2P/app/pull/857)) by @grunch - **restore:** keep a restore snapshot per node (phase 4 of 5) ([#841](https://github.com/MostroP2P/app/pull/841)) by @Catrya - **notifications:** say the order was published once the bond locks ([#846](https://github.com/MostroP2P/app/pull/846)) by @grunch - **orders:** close a lapsed bond window at its deadline wherever the user is ([#850](https://github.com/MostroP2P/app/pull/850)) by @grunch - **trades:** show the buyer Mostro's payout as its own step ([#847](https://github.com/MostroP2P/app/pull/847)) by @grunch - **order-book:** show fixed-price orders' price per BTC instead of a 0% premium ([#816](https://github.com/MostroP2P/app/pull/816)) by @21Mill ### ⚡ Performance - **nodes:** keep node pictures on the device so a QR shows its node at once ([#863](https://github.com/MostroP2P/app/pull/863)) by @grunch ### 📚 Documentation - **release:** restrict the release environment to release tags ([#859](https://github.com/MostroP2P/app/pull/859)) by @grunch ### 🧹 Chores - **zapstore:** add store images and stop listing NIP-59 ([#860](https://github.com/MostroP2P/app/pull/860)) by @grunch ### 🔧 Other Changes - Feat/missing currencies ([#853](https://github.com/MostroP2P/app/pull/853)) by @Forte11Cuba ## 👥 Contributors Thanks to everyone who made this release possible: @21Mill · @Catrya · @Forte11Cuba · @grunch --- **Full diff**: https://github.com/MostroP2P/app/compare/v2.0.17...v2.1.0 · **History**: [CHANGELOG.md](https://github.com/MostroP2P/app/blob/main/CHANGELOG.md)