An offline, hardware-encrypted personal ledger built specifically for the Ledger Nano X.
I wanted an actual useful custom app that I could sideload onto my Ledger Nano X. This is a secure, completely offline vault for tracking personal finances, secret stashes, and emergency reserves. By running this directly on the Ledger's Secure Element, the data is hardware-encrypted and never touches an internet-connected device.
- Basic project setup (Rust,
no_std,Makefile) - Set up state management and cryptography skeleton
- Integrate with Ledger SDK and compile to
.hex - Implement on-device UI screens using Ledger's graphics library
- Add APDU handlers for computer/companion app communication
- Implement persistent storage (NVM) to save entries across reboots
- Bind vault encryption securely to the Ledger's 24-word seed phrase
If you have Docker/Orbstack installed, you can build the application using the official Ledger toolchain:
make docker-buildThe Ledger Nano X firmware strictly prohibits sideloading custom, unsigned applications via APDU/developer tools (returning a 0x5120 Instruction Not Supported error). The Custom CA backdoor has been removed from recent Nano X firmware updates.
To test this application, you must use one of the following methods:
- Speculos Emulator: The official Ledger hardware emulator. It runs locally and provides a virtual display.
- Physical Nano S Plus: Ledger recommends using a Ledger Nano S Plus for physical hardware testing, as its firmware still supports the developer sideloading backdoor.
You can run the application locally using the Speculos emulator via Docker. It will host a web interface on port 5001 so you can view and interact with the virtual device.
make docker-build
make emulate