Skip to content

An air-gapped wallet for Bitcoin SV

Built on a Raspberry Pi Zero 2 WH, a 1.3" TFT bonnet, and a Pi Camera Module 3. Your seed phrase never touches a network. The companion PWA in your phone or laptop talks to the chain; the Pi just signs.

Launch wallet ↗ Read the docs

Alpha software

PiWalletSV is in active development. There is no warranty and no custodial backup. Read the Disclaimer and Security briefing before storing real funds on a device you built from this code.

How it works

The system is intentionally split into two pieces that never share a trust boundary:

flowchart LR
  subgraph air["Air-gapped signer (Pi)"]
    seed["BIP39 seed<br/>encrypted vault"]
    verify["verify_proposal<br/>(BEEF + Merkle + anchors)"]
    sign["sign_transaction"]
    seed --> verify --> sign
  end

  subgraph online["Online companion (PWA)"]
    woc["WhatsOnChain<br/>or other backend"]
    select["UTXO + coin selection"]
    proposal["unsigned_proposal<br/>builder"]
    broadcast["broadcast"]
    woc --> select --> proposal
    broadcast --> woc
  end

  proposal -- "QR (PW1 multipart)" --> verify
  sign -- "QR (PW1 multipart)" --> broadcast

The Pi has no Wi-Fi, no Bluetooth, no Ethernet — nothing reaches the network from the device that holds the keys. The companion runs in your existing browser at the companion and ferries transactions to the Pi over animated QR codes. Every input the companion proposes is cryptographically re-verified on the Pi (BEEF proofs anchored to user-displayed block headers) before the device signs anything.

Three reasons it's different

  • Public key only on the network

    The companion sees only your public xpub and pre-signed transactions. The seed phrase, the encrypted vault, and every signing key live exclusively on the Pi.

  • Open spec, not a black box

    The wire format, QR transport, derivation rules, and SPV requirements are documented as an open protocol spec. Anyone can build a compatible signer or companion.

  • Off-the-shelf parts

    Raspberry Pi Zero 2 WH, Adafruit 1.3" TFT bonnet, Pi Camera Module 3. No proprietary hardware, no soldering, no signed firmware to trust.

Want to use it?

  • Get started

    Bring up the bonnet, install the signer, run the companion in a browser. Start here if you've just got the hardware.

  • Companion (live)

    Open the PWA. Pair a wallet, scan an unsigned proposal, broadcast a signed transaction. Works on any phone, tablet, or laptop with a camera and a modern browser.

  • User manual

    Pairing, receiving, sending, broadcasting, restoring — the same journey a normal user takes.

  • Security briefing

    Plain-language operator-facing trust model: what's on the network, what isn't, and why the PIN-encrypted vault is not magic.

Want to understand it?

  • Architecture

    The two-host design, the trust boundary, the data flow, and why everything that crosses the air gap is gzipped CBOR over animated QR.

  • Build & deploy

    Take a blank Pi from a freshly-flashed SD card to an autostarting bonnet kiosk under systemd, with bounded journald logs.

  • Operate

    Day-to-day ops: logs, exit codes, vault stewardship, factory reset, updates, and troubleshooting the deployment itself.

  • CLI reference

    Every piwallet subcommand with options, exit codes, and pipe-friendly examples.

  • Develop

    Repo layout, dev setup, testing matrix, fixture regeneration, release checklist.

  • Protocol spec

    The wire formats, QR transport, derivation rules, and SPV requirements that any compatible companion (or signer) must follow.

  • Prior art

    How PiWalletSV's design choices compare to existing air-gapped BSV setups, and what that comparison tells us about future scope.

  • BRC alignment

    What of BRC-100 / BRC-95 / BRC-74 PiWalletSV implements, and what it deliberately doesn't.

Project status

Phase Scope Status
1 Offline core (mnemonic, derivation, envelope, vault, verify, sign, CLI) done
2 Pi-side bonnet UX (display, joystick word entry, first-boot disclaimer) in progress
3 Python + TypeScript PW1 multipart transport done
4 Companion PWA (pairing, receive, UTXO scan, proposal, broadcast, terms) done
7 Documentation site + protocol spec + v0.1 release this site
8 Enclosure, tamper-evidence, first-boot hardening, signed SD image planned