Skip to main content
For the complete documentation index, see llms.txt

Wallet reference

Reference material for the community wallets covered in the overview: the full functionality matrix, troubleshooting, a security checklist, broader ecosystem compatibility, and a glossary.

Functionality matrix

These are the granular tie-breakers, for once the matrix and the per-wallet profiles have narrowed your choice. Legend: Yes; No; Partial (caveats below); Not documented (not publicly documented as of June 2026); and n/a.

Platforms and availability

WalletBrowser extensionMobile appMidnight-nativeOpen source
LaceYes (Chrome/Edge)No (Midnight)NoYes
1AMYes (Chrome, Firefox)Yes (beta)YesNo
KuiraNoYes (Android, alpha)YesPartial (source jars; repo private)
urbleNoYesYesNot documented
DynamicNo (SDK)Via SDKNoNo
CtrlYes (Chrome)YesNoNo
GeroYesYesNoNo

Privacy and assets

WalletNIGHTDUSTShielded txnsUnshielded txnsShielded by defaultSelective disclosure
LaceYesYesYesYesNoNot documented
1AMYesYesYesYesYesYes
KuiraYesYesYesYesNot documentedNot documented
urbleNot documentedNot documentedYesNot documentedYesYes
DynamicNoNoNoNoNoNo
CtrlYesNot documentedNot documentedNot documentedNoNot documented
GeroYesNot documentedNot documentedNot documentedNot documentedNot documented

Proving and fees

WalletIn-browser / on-device provingLocal prover neededgetProvingProviderGas sponsorship
LaceNoYesNoNo
1AMYes (WASM; Halo2/BLS12-381)NoYesNot documented
KuiraYes (on-device, mobile)Non/aNot documented
urbleNot documentedNot documentedNot documentedNot documented
DynamicNon/aNot documentedYes (non-Midnight)
CtrlNot documentedNot documentedNot documentedNot documented
GeroNot documentedNot documentedNot documentedNot documented

Developer integration

WalletDApp ConnectorsignDataDedicated SDKDApp browserHardware walletCardano / multi-chainStaking
LaceYes (mnLace)NoNon/aYes (Cardano)YesYes (Cardano)
1AMYes ('1am')Not documentedAnnounced / Not documentedYesNot documentedNoNot documented
KuiraNot documentedNot documentedYes (Android, public docs)n/aNot documentedNoNot documented
urbleNoNot documentedNoNoNot documentedNoNo
DynamicNoNot documentedYes (non-Midnight)n/aNoNo (other chains)No
CtrlPartialNot documentedNoYesYes (Ledger/Trezor)YesYes
GeroNot documentedNot documentedNoNot documentedNot documentedYesNot documented

Notes:

  • Ctrl's DApp Connector is Partial: a connector the vendor states, so feature-detect it at runtime.
  • Gero's cells are Not documented and vendor-stated, pending public documentation; Gero is a valid Cardano-side NIGHT claim wallet.
  • Dynamic's cells reflect its lack of documented Midnight support.
  • 1AM gas sponsorship is not documented (see the note in 1AM).
  • 1AM announced a dedicated SDK but has not documented it. The advertised "Proof Station SDK" has no published package or docs (see 1AM), so integrate 1AM through the standard connector.
  • Kuira's proving is on-device on Android, counted in the proving column above, not browser WASM.
  • Kuira's dedicated SDK is the one mobile SDK with public docs (see Kuira).

Developer experience

While building, the daily question is which wallet gives the best development loop. The table below scores four capabilities:

  • a local network (undeployed, a disposable Midnight-in-Docker stack with no faucets);
  • custom servers;
  • reproducible test wallets from a known seed;
  • headless CI runs, with no human clicking approve.
WalletLocal network (undeployed)Custom serversReproducible test walletsHeadless / CI
wallet CLIYes (localnet up)Yes (config set)Yes (seed-based wallet generate)Yes (serve --approve-all)
LacePartial (local proof server)Partial (proof-server URL)No (UI-generated seed)No (manual pop-up approval)
1AMNot documentedNot documentedNoNo (manual approval)
KuiraNot documentedNot documentedPartial (wallet-seed module)No (mobile, biometric approval)

For the inner development loop, the wallet CLI covers every column: a local network, reproducible fixtures, and no human in the way (see Develop and test without a wallet). The browser and mobile wallets are end-user surfaces. Build and test against the CLI, then let users connect with Lace or 1AM, or ship Kuira embedded.

Troubleshooting and error reference

Symptom, then cause, then fix. The ledger and connector errors come first, then the CLI JSON error contract (--json returns {error, code, message, exitCode}).

Symptom / errorLikely causeFix
BalanceCheckOverspend (138)Not enough DUST for feesWait for DUST (about 12 hours on a fresh Lace; about 5 minutes locally) or designate more NIGHT; read getDustBalance() first
Authorize pop-up never appears, or connect hangsconnect() not called synchronously on clickCall connect() directly in the click handler; do not await or setTimeout before it
window.midnight is undefinedExtension not installed or enabled, or injected after loadPrompt to install, then refresh; for auto-reconnect, poll before connecting
getProvingProvider is not a function (Lace)Lace does not implement itFeature-detect and use a local proof server (forum)
signData "Method not implemented" (Lace)Unimplemented on LaceAvoid signature-based auth on Lace; feature-detect first (Lace issues)
Proof generation fails, or prover unreachableLocal proof server down, or Brave Shields blocking itStart it on localhost:6300; disable Brave Shields for the origin
Network mismatchDApp and wallet on different networksReconcile to getConnectionStatus().networkId via setNetworkId(...)
1AM first proof very slowA few MB of WASM cold-startPre-warm, or show a "loading prover" state
Deploy fails before it startsWallet not fully syncedWait for wallet sync to complete before deploying
CLI DUST_REQUIRED (exit 5)No DUSTmidnight dust register, then retry once DUST generates
CLI INSUFFICIENT_BALANCE (exit 5)Not enough NIGHTFund the wallet (faucet on testnets; airdrop only on undeployed)
CLI NETWORK_ERROR (exit 4)Connection refused, timeout, or DNSCheck node and indexer endpoints
CLI PROOF_TIMEOUT (exit 6)ZK proof timed outEnsure the proof server is healthy; retry; reduce circuit complexity
CLI STALE_UTXO (exit 6)UTXOs consumed by another transactionmidnight cache clear, then rebuild
CLI TX_REJECTED (exit 6)Node rejected the transaction (TTL or validity)Inspect the message and rebuild with current state

CLI codes are a documented contract (see the CLI's JSON-output reference). For canonical Midnight error and status codes, use the midnight-status-codes reference.

Security checklist

The connector hands your page data from an untrusted extension, so treat it accordingly:

  • Sanitize the wallet name, and render the icon with <img src>, never innerHTML (XSS).
  • Validate networkId: reconcile to getConnectionStatus().networkId and refuse mismatches.
  • Do not trust injected data as authority: rdns and name are for display and selection, not security decisions. Match the expected rdns, and tell users to install only from official stores.
  • Keep witness data local: prefer in-browser proving (1AM) or a local proof server (Lace). If you ever use a hosted prover, say so.
  • Confirm fee sponsorship: not all wallets sponsor fees, so verify on your target network before you promise a "no DUST needed" experience.
  • Guard agent (MCP) access hard: scope tools, cap spend per action and per day, allowlist destinations, and require human confirmation for anything irreversible. An agent with unbounded signing authority is the highest-risk cell on the grid.

Broader ecosystem compatibility

Beyond the wallets profiled in the overview, more Cardano wallets announced Midnight and NIGHT compatibility around the token generation event (TGE) and Glacier Drop. Most target claiming and holding NIGHT rather than deep DApp integration, adding entries to the self-custody browser and mobile cells:

  • Announced self-custody (pre-mainnet): Lace, SubWallet, NuFi, Vespr, Gero, Tokeo, Keystone, Yoroi, and Begin Wallet. These are forward-looking, so treat them as announced. (Midnight blog)
  • Glacier Drop claim wallets (Cardano side): Yoroi, Typhon, Gero, Vespr, Eternl (desktop), and NuFi. (compatibility)
  • Embedded / Wallet-as-a-Service: Dynamic (social and passkey login, TSS-MPC keys, gas sponsorship) lists EVM, Solana, Bitcoin, and Sui, but does not list Midnight or Cardano. It appears as dynamic_xyz in the catalog with no first-party Midnight support as of June 2026. Treat Midnight support as unconfirmed; for passkey onboarding on Midnight, use Wallet-IaaS or Smart Custody. (dynamic.xyz, TSS-MPC)
  • Institutional / MPC: Fireblocks for institutional custody of NIGHT, the MPC console and API cell. (Midnight and Fireblocks)

For the authoritative current list, see the ecosystem catalog (use the institutional-custody tag for the custody and MPC slice).

Glossary

Wallet-relevant terms.

  • Custody model: who controls the keys; the matrix rows (self-custody, custodial, account abstraction, and MPC).
  • Self-custody / custodial: keys on your device, where no third party can sign, versus a provider that holds the keys and signs.
  • Account abstraction (AA): the account is on-chain code with programmable authorization. Not native to Midnight as of June 2026.
  • MPC / threshold (TSS): the protocol splits the key into shares, and an m-of-n quorum signs without reconstructing a full key. The basis of institutional custody (Fireblocks for NIGHT).
  • Interface: how you reach the wallet; the matrix columns (browser, mobile, CLI, and MCP).
  • MCP (Model Context Protocol): a standard by which AI agents call tools, either wallet tools (move funds) or developer tools (help you build).
  • Midnight Passport: an announced first-party seedless, QR-onboarded consumer wallet (browser and mobile) from Input Output, with per-device hardware-resident keys and trusted-helper recovery. Input Output has not yet publicly detailed the exact scheme (MPC versus secure-enclave) (see Midnight Passport).
  • Sigil: Kuira's identity primitive, a passkey-derived DID minted by one biometric, with no seed phrase. The SDK exposes it as a swappable SigilIdentityProvider, and Kuira names Midnight Passport as a planned future backend.
  • On-device proving: generating a transaction's ZK proof on your phone (Kuira, Android) in seconds. No local proof server runs, and nothing leaves the device. The mobile counterpart to 1AM's in-browser WASM proving.
  • NIGHT / DUST: the native value token (public, and the source of DUST) versus a shielded, non-transferable, decaying fee resource with a balance and a cap.
  • Shielded vs unshielded: Midnight's dual ledger, private versus public state. 1AM and urble default to shielded; Lace is opt-in.
  • Selective disclosure / viewing key: reveal specific facts without exposing full data; a read-only key for auditors.
  • DApp Connector / CAIP-372: the standard by which a wallet injects an API under window.midnight.
  • rdns: the reverse-DNS wallet id used for discovery (mnLace, '1am').
  • Intent: an often unbalanced set of inputs and outputs; the building block for transfers and swaps.
  • Sealed vs unsealed tx: ready-to-submit (proofs plus binding) versus pre-binding.
  • Relayer: submits a transaction and pays its fees on your behalf; the basis of "gas sponsorship".
  • Proving provider: the abstraction (getProvingProvider) for delegating ZK proving to the wallet.
  • Bech32m: the address encoding the connector returns.
  • Local proof server: the native binary (localhost:6300) that generates ZK proofs for wallets that do not prove in-browser.
  • Wallet-IaaS / Smart Custody: Midnight infrastructure for delegated or embedded wallet provisioning, also called Wallet-as-a-Service (WaaS); the route for social and passkey onboarding.
  • DID (decentralized identifier): a self-owned identifier (for example did:key:…) not issued by a central authority. In Kuira, the wallet derives a DID from a passkey to form the Sigil.

Sources

DApp Connector and standard

Custody models and institutional

Midnight Passport: announced by Input Output; follow Midnight's official channels for updates.

Developer, AI, and agent tooling (MCP)

Lace

1AM

Kuira

urble, Dynamic, Ctrl, Gero

Broader compatibility and dev workflow

The Edda Labs midnight-starter-template (the wallet-widget module) implements the connect and discovery patterns from the integration guide, wiring Lace and 1AM through @midnight-ntwrk/dapp-connector-api v4.0.1.