The software way
Your 12 words sit in browser memory. One piece of malware and the wallet is drained.
single point of failure
Marmo splits your
Sui wallet into three shards across a cheap drive, a non-custodial
co-signer, and your Google login. Spend with any two. The full private key never exists,
so a stolen laptop or a stolen drive gets a thief exactly nothing.
SuiYour 12 words sit in browser memory. One piece of malware and the wallet is drained.
single point of failureA $150 proprietary box, shipped to your door, locked to one vendor's chip.
expensive & proprietarySplit the key across hardware you already own. Math replaces the secure element.
sovereign & freeAn encrypted shard written to any standard flash or hard drive. Cold by default, portable by nature. Unplug it and the wallet sleeps.
A non-custodial server that holds exactly one shard and confirms each transaction. Fully hacked, it still cannot move a single coin on its own.
A zkLogin identity behind your Google account. Lose the drive and your login plus the co-signer bring the wallet back. No seed phrase to misplace.
The app composes your transaction and hands the bytes to your shards.
The drive signs, then the co-signer signs after you approve. Two of three.
The partial signatures merge into one multisig signature.
Sui validates the quorum and finalizes. A single shard would be rejected.
Recovery rides on your Google login through zkLogin, not twelve words on a sticky note.
Sui,
Marmo is built on
Sui native multisig, a protocol-level primitive. The threshold is
enforced by validators, not by a script we wrote. No hand-rolled cryptography stands
between you and your funds.
Marmo ships as an open SDK. Split a wallet into shards, sign across machines, and submit, in a handful of lines. Build your own self-custody product on top.
View on GitHubimport { Shard, MarmoWallet, signAndSubmit } from "@marmoxyz/sui-kit";
const drive = Shard.create("drive");
const server = Shard.create("server");
const recovery = Shard.create("recovery");
const wallet = MarmoWallet.twoOfThree(drive, server, recovery);
// spend with any two shards
await signAndSubmit(client, wallet, tx, [drive, server]);
Detecting your platform…
All builds and checksums on the releases page.