Review of MMGen Wallet 16.2.0 for Monero cold storage, covering XMR compatibility mode, offline signing workflow, supported coins and setup requirements.
MMGen Wallet is a terminal-based Python suite first listed on 21 January 2023. Its latest release, version 16.2.0 from 23 August 2026, continues the project’s focus on air-gapped operation. All secret operations—seed handling, key generation and transaction signing—run exclusively on an offline machine, with wallets created fresh in volatile memory for each session.
The software is released under the GPLv3 licence and requires Python 3.11 or later. It supports Bitcoin, Monero, Bitcoin Cash, Litecoin, Ethereum, Ethereum Classic, ERC20 tokens, THORChain’s RUNE and additional Bitcoin-derived altcoins. Monero integration uses the same interface as other assets while still requiring a local monerod instance and monero-wallet-rpc for automated wallet creation and syncing.
MMGen Wallet integrates Monero support through monerod 0.18.5.1, which works together with monero-wallet-rpc to automate wallet creation and synchronization on the offline machine.
Until version 16.1.0, these tasks required the standalone mmgen-xmrwallet script. The unified compatibility mode introduced in that release lets users perform Monero operations through the same interface used for BTC, LTC, and other assets, eliminating the need to switch between separate tools.
Seed handling under compatibility mode accepts multiple mnemonic formats, including the native MMGen seed, BIP39, and Monero’s newer mnemonic style. Subwallet creation is supported directly, allowing additional addresses to be derived from the primary seed while keeping all secret material on the air-gapped device.
Each session instantiates the required wallet in volatile memory only, after which the instance is discarded once signing completes.
MMGen performs all seed handling and signing on an air-gapped machine, creating fresh wallets in volatile memory for each session to limit exposure.
monerod and monero-wallet-rpc to scan the blockchain and build unsigned transactions. Copy the unsigned transaction file to the offline device via USB.monero-wallet-rpc, and verify the resulting output on a block explorer or second node.Repeat the entire cycle for each new session; the wallet is discarded from memory on shutdown, leaving no persistent files on the offline machine.
MMGen distinguishes itself through its terminal-based Python architecture and support for XOR seed splitting, features that set it apart from most other Monero cold-storage options. The official command-line tools and GUI clients typically provide native interfaces without requiring an external runtime, while MMGen mandates Python 3.11 or higher and integrates with monerod plus monero-wallet-rpc for XMR operations.
| Criterion | MMGen Wallet | Common Alternatives |
|---|---|---|
| Interface | Terminal-based Python suite | Native CLI or GUI |
| Seed Splitting | XOR (N-of-N) | Rarely supported |
| Python version requirement | >= 3.11 (tested to 3.15) | Not applicable |
| XMR daemon integration | Requires monerod 0.18.5.1 and monero-wallet-rpc | Direct monerod integration |
Users who already maintain air-gapped Python environments may find MMGen’s unified workflow across multiple coins convenient, yet the added dependency introduces setup steps absent from the official Monero binaries. Seed-splitting support remains uncommon elsewhere, so those needing N-of-N distribution must either adopt MMGen or implement external scripts. Daemon requirements stay consistent with standard Monero practice but are explicitly documented for the 16.2.0 release, helping operators verify compatibility before offline signing sessions.
MMGen keeps seed handling and signing strictly offline, yet several practical weak points persist for Monero users.
Clearnet node exposure remains the most immediate risk. The workflow requires monerod and monero-wallet-rpc; any direct connection to public peers can reveal the user’s IP address during initial sync or balance queries. Routing the daemon through I2P or Tor is therefore essential, as the wallet itself does not enforce this.
KYC on-ramps create an earlier linkage. Funds acquired through regulated exchanges carry identity metadata that Monero’s ring signatures cannot retroactively erase. Subsequent air-gapped operations protect only the spending keys, not the provenance of the inputs.
IP leaks can also occur during the brief online phases needed for transaction broadcasting or RPC communication. Even when the signing machine stays air-gapped, the online host that submits the signed transaction can associate timing and amount data with an IP address.
MMGen guarantees that private keys never leave the air-gapped environment, but it cannot guarantee transaction unlinkability if any of the above vectors are ignored.
Clone the repository and run the included setup for Python 3.11 or later. The 16.2.0 release notes confirm testing through Python 3.15, so any version in that range works without additional patches.
Users can generate wallets with native MMGen seeds, BIP39 mnemonics, or new-style Monero mnemonics. Dieroll methods and N-of-N XOR splitting are also available for air-gapped creation.
Fee selection is exposed during transaction construction for every supported coin, including Monero. The interface lets you set custom values before the offline signing step completes.
Python 3.11 is the minimum. The project explicitly tests up to 3.15 in the August 2026 release, so newer interpreters remain compatible without code changes.
Reinstall the software on a fresh offline system, then import the original seed or mnemonic through the standard wallet-creation command. Subwallets and compatibility mode restore automatically once the seed is loaded.