Open source air-gapped Bitcoin signer
Built to be checked, not to be trusted.
nullroute turns a Raspberry Pi and the official 7 inch touchscreen into a Bitcoin signing device with no network of any kind. Roll dice for your seed, move transactions by QR code, and read every one on the device before it signs.
Pre-release and unaudited. Hardware bring-up on a Pi 5 and a Pi 4 is next.

Why nullroute
Every claim is one you can check.
Most hardware wallets ask you to trust a chip and a company. nullroute is built from parts you can buy, code you can read, and a seed you can recompute by hand.
- No network, at allNo Wi-Fi, Bluetooth, cellular or NFC driver is on the card. Transactions cross the gap as QR codes you can see.Learn more
- Dice you can checkYour seed is the SHA-256 of your dice rolls. Reproduce it on any computer with one command.Learn more
- Read before you signEvery output, the fee and the change on the device’s own screen. A suspicious transaction is held until you override it.Learn more
- Multisig across devicesRun several devices as one quorum. Each re-derives its own key and refuses a quorum it is not part of.Learn more
- One number to compareThe lock screen shows the hash of every file that ships. Build from source and compare it before you type a PIN.Learn more
- An open standardA draft signer profile and conformance kit that any air-gapped signer, not only this one, can be tested against.Learn more
How it works
From dice to a signature.
Your wallet software on a networked computer prepares transactions. The device holds the keys, shows you what you are signing, and has no network to reach.
01Roll the dice
A hundred rolls of an ordinary die become your seed, by arithmetic you can repeat on any computer.
02Write the words once
The 24 words are shown once. On paper they are your backup, and they restore in other wallets too.
03Review, then sign
Scan your wallet’s QR code with a USB webcam. The device lays out what it would sign, refuses what it should not, and hands back a signed QR code.
Don’t trust, verify
One hash for every line of code that ships.
Before it asks for a PIN, the device shows the SHA-256 of a plain listing of all 438 files it runs. Build the source, run one command with standard tools, and compare. If the two differ, do not enter your PIN.
$ git clone https://github.com/Xaxis/nullroute && cd nullroute$ sha256sum MANIFEST.lockf08ead186b9eb2a84e77e5850cccad26b7eb7486757d0911558ff296113e7d0c MANIFEST.lock
This build’s root, read from the repository when this site was built. Nothing has been released yet, so there is no published value to compare against.
$ printf '%s' '1234561234561234561234561234561234561234561234561234561234561234561234561234561234561234561234561234' | sha256sume56403e8522ddeae1b44a1e8148b1ba4d3b4c626ccf20980056eedcc7e0c0f35 -The seed rule with no code of ours: a hundred public example rolls from the entropy document, recomputed when this site was built. Never use these rolls for money.
- module specifications
- 39module specifications
- invariants, each bound to tests
- 354invariants, each bound to tests
- tests in the suite
- 1376tests in the suite
- files under one hash
- 438files under one hash
What you need
Off-the-shelf parts, roughly $100 to $120.
No secure element and nothing exotic. The device needs a 64-bit Raspberry Pi, the 800x480 touchscreen it is laid out for, a webcam and an SD card.
- BoardRaspberry Pi 4 (4GB)
- Board, in bring-upRaspberry Pi 5
- ScreenOfficial Raspberry Pi 7 inch touchscreen
- Storage16GB+ A2 SD card
- DiceOne d6
- CameraA USB (UVC) webcam
- Case, PSUAnything, official PSU
For every signer
Not just a device: an open standard.
The signer profile says what any air-gapped signer must show you and refuse to do: 63 requirements, with 116 portable test cases in a conformance kit that runs against any signer through an adapter.
Where it stands
Honest about what is not done.
Phases 1 to 4 of 7 are built, apart from signing and publishing a release, and hardware bring-up is next. It has not been audited, so keep real money off it until bring-up and an outside review are both done.
- Phase 1, builtSpec system, entropy, BIP-39/32, daemon, lock screen, networks
- Phase 2, partly builtDescriptors, addresses, PSBT review, signing. Provisioning tier 0.
- Phase 3, builtEncrypted store, passphrase, multisig, cosigner registration, tier 1 boot attestation
- Phase 4, builtBIP-322 message signing, BIP-85 child seeds, BIP-329 labels
- Phase 5, not startedWallet layer, optional and lower assurance
- Phase 6, not startedBridge companion, runs on a networked machine
- Phase 7, not startedMiniscript, taproot script paths, SeedXOR. Tier 2.
Build one, or start by reading the code.
MIT licensed, built in the open, and written to be read by people who do not trust its author.