# Specter Desktop: a Bitcoin Core GUI built for hardware wallets

> Specter Desktop puts a web interface in front of Bitcoin Core with a focus on multisignature setups and airgapped signing devices, supporting SeedSigner, Coldcard, Keystone, Trezor, Ledger and others. It is MIT licensed and installable as a pip package or a desktop app, but the project itself warns that it should be used at your own risk.

**cryptoadvance/specter-desktop** — A desktop GUI for Bitcoin Core optimised to work with hardware wallets

- Repository: https://github.com/cryptoadvance/specter-desktop
- Stars: 852 · Forks: 260
- Language: Python
- License: MIT
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/cryptoadvance-specter-desktop

## Why a GUI around Bitcoin Core at all

Bitcoin Core already has a capable command line interface and a daemon, and since the introduction of PSBT and HWI it can already work with hardware wallets. The stated problem is not capability but ergonomics. The README calls the existing workflow too linux-way, and says the same applies to multisignature setups.

Specter Desktop is the answer to that: a convenient and user friendly interface around Bitcoin Core with a focus on multisignature setup with airgapped signing devices, which the project calls hardware wallets. The audience is therefore two groups. The first is a technical user who already runs a node and wants a graphical client instead of bitcoin-cli. The second is someone setting up a multisig wallet with several signing devices, which is exactly the case where a command line becomes painful fast.

The README opens with a line from the Crypto Anarchist Manifesto, which tells you the project's tone and its politics. It is also candid about its own status. The disclaimer states that the software might be ready to be used but at your own risk, and directs users to open an issue or ask in the Telegram support group when something does not work. The project describes itself as a small team on a tiny budget.

Documentation lives at docs.specter.solutions, and there is a video walkthrough linked from the README for people who would rather watch than read.

## The hardware wallet list and the airgapped signing modes

The device support is the concrete feature list, and it is long. Specter Desktop works with SeedSigner, Specter DIY which is optionally airgapped using QR codes, Blockstream Jade, Coldcard optionally airgapped using an SD card, BitBox02, Passport, Electrum optionally airgapped if it runs on an airgapped computer or phone, Keystone airgapped using QR codes, Trezor, Ledger, KeepKey and Keycard Shell.

Read the parenthetical notes carefully, because the airgap story differs per device. Coldcard communicates over an SD card, which is a different physical trust boundary from a USB cable, since the card can be moved to an offline machine. SeedSigner, Specter DIY and Keystone work over QR codes, which is the strongest airgap because no cable ever connects the signing device to an online host. Electrum is different again, it is airgapped only if you run it on a separate offline computer or phone. The rest, Trezor, Ledger, BitBox02, KeepKey and Jade, connect over USB.

That distinction determines what your threat model can be. If the goal is that a compromised host cannot ever reach the signing device, only the QR code path gives you that guarantee, and only if you never plug the device in. If the goal is convenience, USB is simpler.

The project also supports Bitcoin Core acting as a hot wallet by importing or generating a random BIP39 mnemonic, and it is explicit that this feature is experimental and not recommended at this stage. That disclaimer should be taken literally if you are evaluating this tool for funds you care about.

## Installing from pip and starting the local server

The easiest route is the desktop app from the GitHub release page, where you download the file for your operating system and install it like a normal desktop app. Debian buster is noted as only partially supported. Other installation routes are described in the installation guide.

The pip route is documented in full and has three prerequisites. Specter requires Python version 3.9 to 3.10. A Bitcoin Core node should be at least v0.19, and better if it is the latest release. Hardware wallet support through HWI requires libusb, with a command per distribution. On Ubuntu and Debian it is `sudo apt install libusb-1.0-0-dev libudev-dev python3-dev`, on macOS `brew install libusb`, on Arch `sudo pacman -Syu && sudo pacman -S libusb`, on Fedora and CentOS `sudo yum -y install libusb libudev-devel python3-devel`, and on Windows the README points to docs/windows.md.

With libusb in place, installing and running Specter is two commands:

```bash
pip3 install cryptoadvance.specter
```

```bash
python3 -m cryptoadvance.specter server 
```

After that the interface is available at http://127.0.0.1:25441/. Upgrades use the same package manager:

```bash
pip3 install cryptoadvance.specter --upgrade
```

Note the loopback binding. Specter serves on 127.0.0.1 only, which is the right default for a wallet interface, and it means that if you want to reach it from another machine on your network you need to change that yourself. The README also mentions running it over Tor and providing SSL certificates for https, with https called out as especially important.

## Verifying the download yourself instead of trusting PyPI

The README is unusually direct about the trust problem in the pip route. It says the installation method is quite easy but you have to trust pypi, and then offers a sequence for verifying the software completely yourself while still installing via pip3.

The idea is to fetch the release tarball, the SHA256SUMS file and its detached GPG signature from the GitHub release, check the sums, verify the signature, then install the dependencies with hashes required so pip refuses any package whose hash does not match:

```bash
sha256sum --ignore-missing --check SHA256SUMS
```

```bash
gpg --verify SHA256SUMS.asc
```

```bash
pip3 install -r cryptoadvance.specter-1.7.0/requirements.txt --require-hashes --upgrade
```

The requirements file itself is generated with pip-compile and every pinned package carries its hashes, which is what makes the --require-hashes install meaningful rather than decorative.

This is the strongest thing in the repository for anyone who cares about supply chain risk, and it is unusual to see spelled out. The tradeoff is that it is manual, it pins you to a specific version, and you have to redo it on every upgrade. The cryptography here also depends on trusting the GPG key that signed SHA256SUMS, which the sequence verifies but does not help you obtain.

## What the code base looks like under the hood

The pyproject.toml describes the project as a GUI for Bitcoin Core and Electrum optimised to work with airgapped hardware wallets, and the classifiers list Flask as the framework. It requires Python 3.9 up to but not including 3.13, which is a narrower window than the README text suggests since the README says 3.9 to 3.10 while the packaging metadata allows a wider range. It is built with setuptools plus setuptools_scm, so the version is derived from the git tags rather than written by hand.

Dependencies are pinned with hashes, generated by pip-compile with Python 3.10, and the file includes a comment for each package naming the chain that pulled it in, so flask-apscheduler is visible as the source of apscheduler and flask-babel as the source of babel. Translations are compiled at install time by a custom setuptools install command that calls compile_catalog from babel, which is how the .mo files end up in the package data.

The test setup is also worth noting. Pytest is configured with a default bitcoind version of v27.2.0 and an elementsd version of v0.21.0.2, and the marker list includes jade_hardware for tests that require a real Jade device and an operator, opt-in only through a flag. There are also markers for slow, elm, bottleneck and threading tests, and the norecursedirs setting excludes the bitcoin and elements directories from the default recursion.

The repository also ships a Dockerfile, a docker directory, a pyinstaller directory for packaging the desktop app, Cypress end to end tests with a gulp based dev workflow, and Tailwind CSS for the styles.

## What the README leaves open about configuration and security

Several things a careful evaluator would want are not answered by the documentation reviewed here, and it is worth naming them rather than guessing.

The README lists a table of contents with sections for connecting to the Bitcoin network, adding a new device, creating a new wallet and the wallet interface, and it links to a tips and tricks page with detailed instructions plus a FAQ. The content of those pages is not reproduced here, so the specifics of how a device is added, whether it is over USB or QR, and what the wallet interface offers are not confirmed by the documentation reviewed here.

The most important gap is the security model around the Bitcoin Core connection and the wallet files. The project serves a wallet interface over http on loopback by default, supports https with user provided certificates, and warns about using the hot wallet feature. What it does not spell out in the README is how the interface authenticates, whether it is a single user local application, how it stores or encrypts the Bitcoin Core wallet, or how the multisig coordinator behaves when one of the signing devices is unavailable. Those are the questions to answer from the installation guide and the FAQ before you point it at coins.

There is also a packaging oddity worth flagging: the JavaScript package.json in the root, which exists for the Cypress test harness, declares its license as ISC while the Python project and the LICENSE file are MIT. That is a tooling artifact rather than a relicensing, but it is the kind of detail that makes automated licence scanners report two different answers.

## Conclusion

Adopt Specter Desktop if you are running your own Bitcoin Core node and want to sign with airgapped hardware wallets or a multisignature setup without living in the command line. Do not adopt it as a custodial solution for other people, since the project ships it at your own risk and calls the hot wallet feature experimental. Verify first that your Python version is 3.9 or 3.10, that Bitcoin Core is at least v0.19, that libusb is installed for hardware wallet access, and that your device is on the supported list before you move funds.

## FAQ

### Which hardware wallets does Specter Desktop support?

The README lists SeedSigner, Specter DIY, Blockstream Jade, Coldcard, BitBox02, Passport, Electrum, Keystone, Trezor, Ledger, KeepKey and Keycard Shell. Several of them have an optional airgapped mode, with Coldcard using an SD card and SeedSigner, Specter DIY and Keystone using QR codes.

### How do I install Specter Desktop with pip?

Install the package with `pip3 install cryptoadvance.specter` and start it with `python3 -m cryptoadvance.specter server`, then open http://127.0.0.1:25441/. The README requires Python 3.9 to 3.10, Bitcoin Core v0.19 or later and libusb for hardware wallet support.

### Can I use Specter Desktop without a hardware wallet?

Yes, Bitcoin Core can act as a hot wallet by importing or generating a random BIP39 mnemonic, but the README describes that feature as experimental and says it is not recommended at this stage.

### Can I verify the Specter Desktop download instead of trusting PyPI?

Yes. The README gives a sequence that downloads the release tarball with SHA256SUMS and its GPG signature, checks them with sha256sum and gpg, then installs the requirements with the --require-hashes option so pip verifies every pinned dependency.

### What license is Specter Desktop released under?

MIT. The pyproject.toml declares it and the LICENSE file at the repository root holds the text, although the separate JavaScript package.json used for the Cypress tests carries an ISC license field, which is a test harness artifact rather than a second licence for the application.

## Sources

- [cryptoadvance/specter-desktop on GitHub](https://github.com/cryptoadvance/specter-desktop)
- [Issues](https://github.com/cryptoadvance/specter-desktop/issues)
- [License: MIT](https://github.com/cryptoadvance/specter-desktop/blob/master/LICENSE)
- [README](https://github.com/cryptoadvance/specter-desktop/blob/master/README.md)
- [Releases](https://github.com/cryptoadvance/specter-desktop/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/cryptoadvance-specter-desktop
