Crossbill Wallet

A wallet for Bitcoin (XBT) on the BLAKE2b chain that runs on your own StartOS server, holds no seed words, and has every send signed on your Krux.

The BLAKE2b chain is the one that changed Bitcoin's proof of work to BLAKE2b and signs with the unified opt-in signature hash (0x21). Crossbill is open source under Apache 2.0 and not audited. There is also an iPhone app with the same screens.

Install on StartOS Source on GitHub

Crossbill Wallet logo: a red low-poly crossbill in front of a shield

How it works

You open Crossbill in a browser on a computer or a phone. Crossbill runs on your StartOS server and uses your own Bitcoin Knots node: wallets live in the node's cormorant watch-only wallet, the same one the iPhone app and desktop Shrike use, so an existing wallet opens with no rescan. The server never holds seed words. Every send goes to your Krux to be signed, by QR code or microSD.

How Crossbill on StartOS fits together Your browser, on a computer or phone, connects to Crossbill on your StartOS server. Crossbill uses your Bitcoin Knots node on the BLAKE2b chain. Lightning Fork is optional and sits beside the node. Your Krux signs every send, passing codes to and from the browser by QR code or microSD. Krux signs every send Your browser computer or phone QR or microSD Your StartOS server https:// Crossbill watch-only, no seed words Bitcoin Knots BLAKE2b chain, cormorant Lightning Fork optional
Solid lines are required. The dashed line is optional: Crossbill reaches Lightning Fork through StartOS when it runs on the same server.

What you need

  • StartOS 0.4.0 or later.
  • Bitcoin Knots on the BLAKE2b chain, installed from this registry:
    https://start9.mempool.guide
    Crossbill refuses a node on another chain.
  • A Krux with Paperclip's firmware. Paperclip's K210 Krux Hardware Wallet with Paperclip's BLAKE2b firmware. Standard Krux firmware refuses unified signatures.
  • Optional: Lightning Fork, for Lightning balances, activity, invoices and payments.

Install in six steps

  1. Add the Finchly6819 registry

    In StartOS, open the Marketplace, click the registry name at the top left, then + Add, and enter:

    https://start9.crossbillwallet.com
    The registry's icon
  2. Install Crossbill

    Switch to the Finchly6819 registry and install Crossbill.

  3. Run the setup tasks

    Run Set Password on Crossbill and copy the password into your password manager. It is shown only once. If StartOS also asks you to run Auto-Configure on Bitcoin, run it: it turns on the node's wallet, which Crossbill keeps its watch-only wallets in.

  4. Start Crossbill and sign in

    Start Crossbill, open its Web UI at its https:// address, and sign in with the password. The camera only works on an https:// address, or on an onion address in Tor Browser.

  5. Add your Krux wallet

    On the Krux, show its key's QR code. In Crossbill, choose Scan the Krux's key and hold the code up to the camera. Or save the key to microSD and choose Open the key file from microSD. Check the balance and the first receive address match what you expect.

  6. Try a small send

    Build a send for a small amount and sign it on your Krux, as shown below.

Lightning, if you run Lightning Fork: in its dashboard, open Mobile app, then Pair a phone. In Crossbill, open Settings, Node and Lightning, Lightning, and choose Scan. The code works once, for five minutes. Payments stay off until you run Turn On Lightning Payments on Crossbill in StartOS.

Signing a send with your Krux

Signing a send with your Krux Five steps. One: build the send in Crossbill. Two: the Krux reads Crossbill's codes with Load from camera. Three: you check the send on the Krux's screen and sign with Sign to QR code. Four: in Crossbill, choose Scan the Krux's signed codes. Five: Crossbill checks the signatures and sends it through your node. In Crossbill On the Krux 1. Build the send Crossbill shows its codes 2. Krux reads the codes Load from camera 3. Check, then sign Sign to QR code 4. Read the signed codes Scan the Krux's signed codes 5. Sent through your node

At step 3, check the address, amount, change and fee on the Krux's screen, not only in the browser. Before sending, Crossbill checks that the transaction is the one it built and that every signature verifies.

With a microSD card instead: choose Save for microSD instead, sign the file on the Krux, then choose Open the signed file.

StartOS or iPhone?

Both share the same screens and the same cormorant wallet on your node, so you can use both.

Crossbill on StartOS compared with the Crossbill iPhone app
TopicCrossbill on StartOSiPhone app
Seed words Only on your Krux. The server never holds them and refuses to store them. In the iPhone Keychain behind Face ID, or only on a linked Krux.
Signing On the Krux, by QR code or microSD. On the iPhone, with Face ID (or the app PIN) and the two-factor code when it's on. Or on the Krux, which needs neither.
Signing in One password, made by the Set Password action. Two-factor is available, but the page checks the code, so the password is what keeps others out. Face ID, with an optional app PIN and duress PIN. Two-factor codes are checked on the iPhone.
Notifications and widgets None in this version. Notifications (off by default) and Home Screen and Lock Screen widgets.
Lightning Through your Lightning Fork node: balances, activity and invoices. Payments once you turn them on with a StartOS action. Through your Lightning Fork node. Every payment needs Face ID (or the app PIN) and the two-factor code when it's on.
Camera scanning The camera of the device the page is open on, on an https:// or onion address. You can also open a picture of a code or paste its text. The iPhone's camera.
Getting it From the Finchly6819 registry, as above. In testing: TestFlight by invitation, or sideload a release build (see TESTERS.md). Not on the App Store. To ask for a TestFlight invitation, email finchly6819@crossbillwallet.com.

Good to know

Watch-only
There is no screen for seed words, and the server refuses to store them. Wallets come from a Krux's key, and every send is signed on the Krux.
Not audited
Use it at your own risk, under the Apache 2.0 terms. Start with a small amount.
Two-factor on the server
You can turn two-factor on in Crossbill's Settings, and it asks for the code before sends. On the server the page checks the code, and anyone signed in can read its key. It guards against a slip, not against someone who has the password. Guard the password itself. Once Lightning payments are on, anyone who can sign in can pay.
The XBT price
The only outside service the server contacts is Neoxa Exchange's public API, for the live XBT price, through Tor when Tor is installed on your server and the page asks for it. Everything else goes to your own nodes.
Backups
A StartOS backup of Crossbill brings back the password, two-factor, the Lightning Fork pairing, and every wallet's public data, labels and contacts. The node's cormorant wallet is Bitcoin's data, not Crossbill's, so it is in Bitcoin's backup instead. A restored Lightning pairing works only while Lightning Fork still lists it.
Current limits
  • No sign-out button in the page. Running Set Password signs out every session.
  • Mainnet only.
  • Paperclip's Krux is the only hardware wallet.
  • Untested on a pruned node.
  • No notifications or widgets. Those are part of the iPhone app.

Help and source

Source and docs

Report a problem

Never post seed words, passwords, node addresses or screenshots that show them.