We build non-custodial software for Bitcoin XBT and Bitcoin BTC — apps that put the keys, and the responsibility that comes with them, in the hands of the people who own the coins. No accounts, no custody, no one who can move your coins but you.
One so far, with more to come.
Android 8+ · direct download & Obtainium
A non-custodial mobile wallet for Bitcoin XBT and Bitcoin BTC. Your recovery phrase is generated on your device, encrypted under a password you choose, and never leaves it.
Latest: v0.2.0 · ~10 MB · Android 8+ · all releases & changelog
Keep it updated: install Obtainium, then tap
Add to Obtainium above (or in Obtainium: Add App → paste
github.com/fortistechlabs/fortis). It watches for new releases and prompts you to update — there's no in-app updater.
Verify it's genuine — the real check behind that Play Protect prompt:
apksigner verify --print-certs fortis-wallet.apk should report certificate SHA-256
16:1A:B9:3F:D5:71:21:99:6A:E0:8E:FD:B4:82:75:DF:D4:AE:55:9B:CB:10:64:12:FB:C4:50:79:1B:94:CD:48
The basics work the way you'd expect. These are the parts that don't.
Bitcoin XBT is a chain almost no wallet supports. Fortis runs it right alongside regular Bitcoin (BTC), chosen per wallet.
Both directions are covered. Every XBT send is signed with SIGHASH_UNIFIED (Knots PR #357), which binds the signature to the XBT chain — automatic, nothing to enable. Going the other way, a BTC send can optionally carry an oversized OP_RETURN that makes that exact transaction invalid on XBT (off by default; adds a little fee).
Creating a wallet, you can shake the phone, scribble on the screen, or let it sample CPU-timing jitter — real physical noise folded into the seed on top of the system RNG, with a meter for how much you've stirred in.
The key that unlocks the app goes into your phone's secure element — StrongBox or the TEE — when there is one. When there isn't, Settings says so plainly: "software only." No pretending.
No sign-up, no login. The backend only ever sees public addresses and finished signed transactions; a random per-install token rate-limits abuse and is tied to nothing about you. If it's unreachable, the app reads the chain from public explorers instead.
A standard 12- or 24-word BIP-39 phrase with BIP-84 derivation — restore it in any compatible wallet. No Google Play Services (the scanner is built in). Open source, MIT; every release APK signed with the same published key.
The security-critical code — key derivation, coin selection, signing, seed encryption — is a single Rust library shared by the Android app and the web wallet. The crypto isn't reimplemented per platform.
Source is public under the MIT licence. Every release APK is signed with one key whose SHA-256 fingerprint is published, so apksigner can confirm a download is the real thing.
No analytics, no ad SDKs, no third-party SDKs of any kind. Everything the backend can see is spelled out in the privacy policy.
Our software is early. Back up your recovery phrase offline and start with small amounts.