A research platform for
air-gapped Bitcoin signing on the ESP32-P4

Kern explores what new hardware can do for Bitcoin self-custody. Bitcoin only, written in plain C: a maxCmalist signer, built to experiment, not to sell.

What this project is

Kern is a research platform and intends to stay one. It is not on a path to becoming a product.

🔬 New hardware

What a modern application processor like the ESP32-P4 can and cannot do for a signer: camera, display, storage, and the security hardware that comes with it.

🧪 Self-custody ideas

Descriptors, miniscript, encrypted backups and signed firmware updates over SD card, implemented on real hardware, tested, and documented with their limits.

📖 Results in the open

Findings, trade-offs and security limits are documented in detail in the repository, including the threat model and the risks it leaves open.

Security plan →

Supported hardware

Five off-the-shelf boards. Each one needs a MIPI CSI camera module.

BoardTargetDisplayCamera
Waveshare ESP32-P4 4B wave_4b720×720 MIPI DSISold separately
Waveshare ESP32-P4 3.5″ wave_35320×480 SPIOV5647, included
Waveshare ESP32-P4 5″ wave_5720×1280 MIPI DSIOV5647, included
Waveshare ESP32-P4 4.3″ wave_43480×800 MIPI DSIOV5647, included
Waveshare ESP32-P4 7B wave_7b1024×600 MIPI DSIOV5647, sold separately
CrowPanel Advanced 7″ / 10.1″ crowpanel1024×600 MIPI DSISC2336, included

Kern drives both the OV5647 and the SC2336 and probes for whichever one is attached at boot, so either sensor works on any of the boards. The 4B is the one board sold without a camera: pair it with an OV5647 module carrying a DW9714 voice coil motor, which is the only combination that gets autofocus.

These boards carry an ESP32-C6 radio co-processor alongside the P4. Kern does not use it and holds it in reset mode. Users can remove or physically disable it if desired.

Get started

From an unflashed board to a working research device in a few minutes.

  1. Get a supported board with a MIPI camera

    Any of the five boards above. All but the 4B come with a camera in the box; for the 4B, add an OV5647 module with autofocus.

  2. Flash it from your browser

    The web flasher writes the latest build over USB using Web Serial, with no toolchain to install. Requires Chrome or Edge 89+.

  3. Create or restore a key

    Generate a mnemonic from dice rolls or the camera, or restore one you already have by typing it or scanning a QR code. Switch the network to testnet to experiment without risking funds.

Documentation

Full user documentation is not written yet. For now, these live in the repository.

📖 README

Hardware, prerequisites, building from source, flashing releases and SD-card updates.

Read →

🗺️ Roadmap

What works today and what is still missing, feature by feature.

Read →

🔐 Security plan

The staged plan for secure boot, flash encryption and anti-rollback, with the current status of each phase.

Read →

🤝 Contributing

Project layout, coding conventions and how to get changes merged.

Read →

Community

Questions, testing reports and development chat.

💬 Telegram

The main discussion group for users and contributors.

t.me/kern_custody →

🐙 GitHub

Source, issues and pull requests. Bug reports very welcome.

odudex/Kern →