Sovereign Money, One form, Three Chains
Monoform Wallet is an early, security-first open-source project. It rejects swaps, cards, yield, ads, accounts, telemetry, KYC, and financial clutter. The product has three verbs: receive, send, verify.
This repository currently contains the product foundation, a runnable non-signing Rust interface, and the original web interface study. It is not a wallet yet. Do not enter a seed phrase or use it with real funds.
- Self-custody is the product, not a feature.
- Nothing secret leaves the device.
- No seed phrase is ever accepted by a web page.
- Every outgoing transaction is understandable before it is signed.
- No trackers, analytics, remote configuration, or sponsored assets.
- A small audited surface beats a broad unaudited one.
- Mainnet remains disabled until the relevant core has independent review.
- Application code and dependency growth are reported and justified.
Monoform is designed around one dedicated English 24-word BIP39 recovery phrase for
Bitcoin, Monero, and Ethereum. Bitcoin follows BIP84, Ethereum follows BIP44, and
Monero follows Ledger's published derivation at m/44'/128'/0'/0/0. The exact
derivation and independent recovery requirements are specified in
Seed architecture and
Chain derivation and import strategy.
Hardware-wallet boundary: Never import the recovery phrase of a hardware wallet that holds or has held real funds. Entering its words into Monoform exposes the seed to a general-purpose computer and permanently removes hardware-only protection. A hardware device may be used offline to generate a fresh 24-word BIP39 phrase only if that phrase is dedicated to Monoform and is never represented as hardware-protected after import.
| Phase | Capability | Network |
|---|---|---|
| 0 | Runnable Rust UI shell; no keys, signing, storage, or network calls | Demo data |
| 1 | Receive, send, balance, history; software signer | Bitcoin testnet |
| 2 | Reproducible desktop releases and external security review | Bitcoin mainnet |
| 3 | Monero adapter and independent review | Stagenet, then mainnet |
| 4 | ETH and a source-controlled ERC-20 allowlist | Ethereum testnet, then mainnet |
| 5 | One verified ZK stablecoin rail; no bridge | Testnet, then mainnet |
| 6 | Optional Lightning integration | Test networks, then mainnet |
The implementation uses Rust with egui/eframe. Linux and macOS are the first supported platforms; Android follows only after the desktop core is proven. Chain logic is isolated behind narrow compile-time adapters. See Architecture, Threat model, Locked decisions, Phase 3 Monero preparation, and Roadmap.
Monoform supports Bitcoin, Monero, and Ethereum mainnet. Ethereum assets are limited to reviewed ERC-20 contracts committed in source. It does not import arbitrary tokens, load remote token lists, bridge assets, or sign unknown contract calls.
Install Rust 1.98.1 with rustup, then run:
cargo run --locked --features desktopThe interface uses eframe 0.36.1 with its Glow renderer and native accessibility
support. The offline seed core adds bip39, unicode-normalization, and zeroize.
Cargo.lock fixes the complete dependency graph.
The default build contains the offline core and protected public-state storage.
The desktop feature adds the demonstration interface; core-rpc separately adds
the read-only local Bitcoin backend. Neither enables the other. See the dated
dependency and feature review for measured footprints,
known public advisories and remaining release gates. The subsequent
dependency remediation upgrades the crypto stack
and adds automated advisory/license/source checks with explicit maintenance exceptions.
An offline-only BIP39 seed core exists, but there is no seed-entry UI or wallet-import path. It must not be used with real funds before vault, derivation, and independent review gates pass.
The offline Bitcoin core can export watch-only descriptors and encode/restore versioned testnet4 public account state with receive/change counters. A separate offline module persists only this public state using macOS Keychain or Linux Secret Service-backed encryption and atomic address reservation. It is not wired into the UI and does not store seeds or private keys. See Public-state codec and Storage policy, protocol, and limits.
An opt-in read-only Bitcoin Core client verifies
local testnet4 identity, reports node sync/tip status and checks public descriptors
without creating or importing a Core wallet. Both branches' first two addresses
match Core 31.1. Separate bounded confirmed-history discovery
checks both branches, respects saved counters and rejects incomplete scans/reorgs.
A separate protected application step matches
the complete account and saves both counters together without undoing later reservations.
Separate UTXO observations return checked confirmed outputs
and exact satoshi totals for explicit address ranges, not spendable/global balances.
Separate pending projections reconcile bounded local
mempool spends/receipts, including descendants, and reject changing snapshots.
No UI networking is enabled; the default build stays offline.
Networking requires the explicit core-rpc feature.
Linux builds also require the D-Bus development library (libdbus-1-dev on Debian/
Ubuntu). Storage needs an existing persistent Secret Service provider in the user's
desktop session; there is no plaintext fallback when it is unavailable.
Open prototype/index.html locally. It is dependency-free and uses fixed demo data.
The prototype deliberately contains no seed field and makes no network requests.
Pre-alpha / design validation. We welcome critique of the scope, threat model, accessibility, and transaction-review flow. We are not yet accepting production cryptography contributions.
Read CONTRIBUTING.md before opening a change. Please report security concerns privately as described in SECURITY.md; do not open a public issue for a suspected vulnerability.
Copyright (C) 2026 Monoform Wallet contributors. Licensed under the GNU General Public License v3.0 or later. See LICENSE.