Non-custodial · Multi-chain · Nothing on disk
Robin Vault
a wallet that only exists while you hold it.
EVM
BTC
SOL
DERIVING VAULT
argon2id is deliberately slow — this is on purpose
Why this is safe
Security is the whole point
The original design used the card's NFC UID alone as a salt. UIDs aren't secret — any reader can read one. Everything below exists because of that finding.
Non-custodial by construction
Your seed is derived from your card and PIN, then held only in RAM. Neither the app nor the server ever writes a private key, mnemonic, or PIN to disk — because neither side alone has enough to derive your wallet.
Read the full model →
The server never sees your PIN
Only a one-way hash of your card's UID and a random salt ever cross the network. The PIN, the derived entropy, and every private key stay client-side, always.
Read the full model →
TLS is non-negotiable
Without it, sniffing one salt response plus physical access to the card would defeat the entire scheme offline. This is the single most important operational requirement in the whole design.
Read the full model →
Escalating lockout, not a fixed limit
5 free requests, then a doubling lockout — 30s, 60s, 120s… capping at 30 days. Both allowed and denied attempts count, so there's no way to distinguish a locked account from one that never existed.
Read the full model →
One card, three wallets
Multi-chain from a single seed
One BIP39 seed, three independent chain derivations — materialized simultaneously, every time.
Ethereum & EVM chains
EVM- Derivation path
- m/44'/60'/0'/0/0
- Curve
- secp256k1
- Address format
- EIP-55 checksummed hex
Bitcoin
BTC- Derivation path
- m/84'/0'/0'/0/0
- Curve
- secp256k1 (BIP84)
- Address format
- Native segwit, bc1...
Solana
SOL- Derivation path
- m/44'/501'/0'/0'
- Curve
- ed25519 (SLIP-0010)
- Address format
- Base58 of raw pubkey
The whole app is a state machine
How it works
Robin Vault has no navigable menu structure. It exists in exactly one of four states at any moment — this is the real flow, not a simplified marketing version of it.
Scan
Hold your card to the back of your device. No button, no setup screen — there is only ever one thing to do.
PIN
Enter your 6-digit PIN. It's converted to bytes and never allowed to exist as a string past that first line of code.
Materialize
deriving vault
"The hook" — the single most important two seconds in the app. Argon2id runs, deliberately slowly, while your addresses scramble into view.
Vault
0x8f3a1b9c2d47e0a6f8b1c3d5e7a9b2c4d6e8f0a1
Your dashboard, live only for this session. Back the app out or wait 60 seconds, and every key is zeroed from memory.
Built on boring, auditable pieces
Tech stack
Read the technical documentation
Every derivation path, every rate-limit number, every API response shape — documented exactly as implemented, not summarized.