AirWallet Docs

Other wallets and hardware

Use AirWallet's offline device as the QR signer for Sparrow, MetaMask, Solflare, Zodl, Feather and Cake, and drive QR hardware wallets from the online copy.

AirWallet speaks the QR codes that other wallet apps use for air-gapped signers. That works in two directions:

  • Your offline device as another app's signer. Sparrow, MetaMask, Solflare and others watch your wallet and build the transactions; the offline device checks and signs them, as a hardware wallet would.
  • A hardware wallet as your online copy's signer. AirWallet's online copy watches a QR hardware wallet (Keystone, SeedSigner, Jade or Passport) and sends it transactions to sign.

Your offline device as another app's signer

AppCoinStatus
Sparrow, BlueWallet, NunchukBitcoinChecked against the codes Sparrow makes; not yet with every app itself
MetaMask, RabbyEthereum and its networksChecked against the codes MetaMask makes; not yet with every app itself
Solflare, BackpackSolanaNew (October 2026), not yet tried with the real apps
ZodlZcashNew, not yet tried with the real app
Feather, Cake WalletMoneroAll four codes, checked against Monero's own wallet library (October 2026); not yet with the real apps

Connect an app

The connection codes are on the offline device, for recovery-phrase wallets, single Solana keys and Monero-only (Polyseed) wallets:

  1. Open the wallet and select Receive.
  2. Select Use with another app….
  3. Pick the app's tab: Bitcoin apps, MetaMask, Solflare, Feather · Cake or Zodl. Each tab says where to scan the code in that app.
  4. Scan the code with the app. Copy as text gives the same code as text.

After that, the app builds transactions and shows them as QR codes. On the offline device, open Scan to sign, scan the app's code, check the review and select Sign. Then scan the offline device's answer with the app, which sends it.

Warning

The Bitcoin and Ethereum connection codes hold your accounts' public keys (xpubs). Anyone holding one of those and one of the wallet's single private keys can work out every key of the account. Never share both. Once you've shown a connection code, the wallet's private-key export says so.

Sparrow, BlueWallet and Nunchuk (Bitcoin)

  • Connect: Bitcoin apps tab. Sparrow: File → New Wallet → Airgapped Hardware Wallet → Scan. BlueWallet, Nunchuk and others: import a watch-only wallet by QR. The code holds your SegWit (bc1q) and Taproot (bc1p) accounts; Copy as text gives them as output descriptors.
  • Sign: the app sends a PSBT. The offline device signs each coin with the key at the path the PSBT gives, but only after checking that key really is the coin's. It shows every payment, the change and the fee. It returns the PSBT with its signatures; the app finishes and sends it.
  • Fees: for SegWit coins, Sparrow doesn't include the earlier transactions they came from, so the review says "The fee is the app's claim". AirWallet remembers each coin it has signed and the amount claimed for it, and refuses a later request that claims a different amount for the same coin. Sign these coins on this device only.
  • Limits: all coins from one wallet, standard signature types only, at most 100 inputs or outputs.

For a Bitcoin multisig, see Multisig.

MetaMask and Rabby (Ethereum)

  • Connect: MetaMask tab. MetaMask: Add account → Hardware wallet → QR-based → Continue, scan the code and pick account 1 (it's your AirWallet address). Rabby: Add address → Keystone, likewise.
  • Sign: the app sends a sign request. The offline device checks that the bytes it signs are the transaction it shows (including the transaction's number, its nonce), then signs:
    • payments of the network's coin, and token transfers, on AirWallet's eight networks
    • a plain payment on a network AirWallet doesn't know, naming its chain ID ("one AirWallet doesn't know"); contract calls there are refused
    • Safe multisig transactions (see Multisig)
  • Refused: other contract calls, giving an approval, typed data (logins, permits, orders), personal messages, and newer transaction types.
  • Send: in MetaMask, select Get signature and scan the offline device's answer.

Solflare and Backpack (Solana)

New in October 2026, and not yet tried with the real apps.

  • Connect: Solflare tab. Solflare: Add a wallet → connect a Keystone, scan the code and pick account 1. Backpack: Import → Keystone, likewise. The apps take the offline device for a Keystone and see 10 accounts.
  • Sign: a transaction is checked by the same rules as any Solana send from AirWallet (known instructions only, no lookup tables). A message is shown in full before you sign it; messages over 4 KB are refused.
  • Other apps that accept a Keystone for Solana use the same codes.

For a Squads multisig, see Multisig.

Zodl (Zcash)

New, and not yet tried with the real app.

  • Connect: Zodl tab. In Zodl, connect a Keystone hardware wallet and scan this code when it asks for the Keystone's. Zodl takes the offline device for a Keystone.
  • What Zodl sees: a viewing key for your transparent and Orchard/Ironwood coins (no Sapling, as with a real Keystone). It sees what the wallet receives and sends, memos included, and never its keys.
  • Sign: Zodl sends a partly built transaction (a PCZT). The offline device checks it against its own keys exactly as it checks AirWallet's own Zcash sends, signs, and answers with the signed PCZT.

Feather and Cake Wallet (Monero)

AirWallet works with Feather and Cake both ways round. Your offline AirWallet can sign for them, and your online AirWallet can use Feather's offline mode or Cupcake (Cake's signer app) as its signer. Both directions use the four codes Feather and Cake use: outputs, key images, the unsigned transfer and the signed one.

  • Connect: Feather · Cake tab. Feather: File → New wallet → Restore from keys; Cake Wallet: Restore → Scan a QR code. The code makes a view-only wallet there. It holds your Monero private view key: the app sees what arrives (private otherwise), and can't spend it.
  • Which coins are spent: before the first transfer, Feather and Cake show their outputs. Scan that code on the offline device. It answers with the wallet's key images, which tell the app which coins are already spent, and nothing else. Scan the answer with the app.
  • Sign: the view-only wallet makes the transfer. The offline device opens it, reviews it as one of its own transfers (recipients, amounts, fee, change), signs, and answers in the parts Cake's scanner reads. Scan the answer with Feather or Cake, which sends it.

If the app shows only its newest outputs, the offline device asks for all of them: in Feather, tick Export all outputs; in Cake, show the second code, Outputs (all).

Feather or Cupcake as your online copy's signer (Monero)

  1. In Feather (the offline wallet): Wallet → View-Only → Show QR. In Cupcake: its view-only code.
  2. On the online copy: + → Watch an address, and scan it. The wallet's Monero is watched with its view key, and its sends use Feather's and Cake's codes.
  3. Send as usual. The first time, and again whenever new coins have arrived since, the online copy first shows its outputs: scan them with the offline wallet, and scan its key images back. Then it shows the transfer to sign, and you scan the signed answer back to send it.

Feather's offline wallet leaves one list out of its signed transfers: the key images of the wallet's coins by position. Monero's wallet library refuses such a transfer since version 0.18.5.3 (Cake does too). AirWallet then fills that list in from the key images the same wallet gave it in the first step, which Monero's library checked one by one, and Monero's library checks the transfer again before sending it. If anything doesn't match, nothing is sent and the next transfer asks for the key images again.

Hardware wallets with the online copy

AirWallet's online copy can use a QR hardware wallet as its signer. It talks to the device only by QR code.

DeviceCoins
Keystone, SeedSigner, Jade, PassportBitcoin (SegWit and Taproot accounts) and Ethereum, whichever the device exports
KeystoneZcash too

These were checked with an offline AirWallet standing in for each device, not yet with every real device.

Watch the device

  1. On the online copy, select + → Watch an address.
  2. On the hardware wallet, show its account QR code: the one it shows for Sparrow or MetaMask (for Zcash, a Keystone's code for Zodl).
  3. Scan it, give it a name if you like, and select Add.

AirWallet watches the account's first address for each kind it exports. Each export becomes a wallet of its own, named after the device ("Hardware wallet · Bitcoin + Ethereum" if the code has no name). AirWallet never merges it with another wallet, so a hostile code can't swap a device's addresses. Scanning the same export again says "That wallet is already here."

Send with it

  1. Open the watched wallet and select Send as usual.
  2. AirWallet shows Sign on the hardware wallet: scan the code with the device, check the payment on its screen, and sign.
  3. Scan the device's answer on the online copy, review, and send.

For Ethereum, AirWallet matches the answer to the request it made, and refuses it unless it's signed by the watched address's key ("The hardware wallet signed it with another key: it won't be sent.").

To speed up a stuck payment from a hardware wallet, use the device (or the app it works with): AirWallet doesn't make the replacement for it.

For a Keystone's Zcash account, sends go to the device as a PCZT and come back the same way. Where the account's coins start isn't in its code, so AirWallet starts scanning from yesterday: use ⋯ (More) → Zcash: scan from a date… for older coins.

AirWallet documentation · updated 2026-10-15 · airwallet.tech