bitcold — A Lightweight CLI for Bitcoin Cold WalletsWebsite: https://bitcold.devGitHub: https://github.com/Drincann/bitcoldnpm: https://www.npmjs.com/package/bitcoldLicense: WTFPL
Why I Built This As a developer who holds Bitcoin, I spent a significant amount of time trying to find a proper tool for cold storage — something lightweight, transparent, and fully offline. I looked at many existing solutions, but none of them felt right. I decided to build it myself. bitcold is the tool I wished existed — minimal, auditable, standards-compliant, and designed to run on an air-gapped machine with nothing but Node.js.
What is bitcold? bitcold is a lightweight, open-source command-line tool for generating Bitcoin cold wallets, managing HD keys, and signing transactions — all completely offline. It's designed for users who want full control of their keys without relying on GUI wallets or third-party services.
No network requests. No external APIs. Just your keys, on your air-gapped machine like raspberry pi.
Try It Now — Live in Your Browser You can try bitcold right now without installing anything. Visit
https://bitcold.dev and click the terminal on the page — it will connect you to an isolated shell running on a Linux machine with the latest version of bitcold pre-installed. You can create wallets, derive addresses, and explore all commands directly from your browser.
Key Features- BIP39 Mnemonic Generation — Generate 12/15/18/21/24-word mnemonics, or supply your own entropy
- BIP84 Native SegWit (P2WPKH) — Derives bc1... addresses following the standard m/84'/0'/account'/change/index path
- HD Wallet with Multi-Account Support — Create multiple accounts under a single mnemonic, each with its own address space
- BIP39 Passphrase Support — Optional passphrase for an extra layer of security on top of your mnemonic
- Offline Transaction Signing — Build and sign raw transactions with specified UTXOs, output as hex or QR code
- AES-256-GCM Encrypted Storage — Wallet data is encrypted at rest using scrypt-derived keys (N=2^18, r=8, p=1)
- QR Code Output — Display signed transactions as QR codes for easy transfer to an online device
- Mainnet / Testnet / Regtest — Full support for all Bitcoin networks
Quick Start# Install
npm install -g bitcold
# Create a wallet
bitcold wallet create
# Show wallet info
bitcold wallet show my-wallet
# Derive a receive address
bitcold receive my-wallet@account_0
# Sign a transaction (offline)
bitcold tx sign \
--from my-wallet@default:0 \
--to bc1qexampleaddress... \
--amount 50000 \
--fee 1000 \
--utxo txid:vout:amount
How It Works1.
Generate or import a BIP39 mnemonic on an air-gapped machine
2.
Derive addresses using standard BIP84 HD paths
3.
Receive bitcoin to your derived addresses (share via QR or copy)
4.
Sign transactions offline by providing UTXO details manually
5.
Broadcast the signed raw transaction from any online device
All wallet data is encrypted with AES-256-GCM before being written to disk. The encryption key is derived from your CLI passphrase using scrypt.
Security Model- Zero network access — designed for air-gapped environments
- CLI-level passphrase encrypts all wallet data on disk
- Optional BIP39 passphrase adds a second layer of key derivation security
- Open source — audit the code yourself
Technical Stack- TypeScript / Node.js (ES Modules)
- bitcoinjs-lib, bip32, bip39, tiny-secp256k1
- No external API calls, no telemetry
Feedback, questions, and code audits from the Bitcointalk technical community are highly appreciated!
GitHub Issues:
https://github.com/Drincann/bitcold/issuesThe project is currently in its early stage. Please be aware that the underlying APIs, command structures, and functionalities may change constantly as development continues.
If you find this useful, feel free to star the repo. Thanks for checking it out.