bitcold

A lightweight CLI for generating Bitcoin cold wallets, managing keys, and signing transactions offline.

$ npm install -g bitcold

$ Quick Start

terminal
Connecting to terminal...
1

Install

$ npm install -g bitcold
2

Create a wallet

$ bitcold wallet create my-wallet
3

Sign a transaction

$ bitcold tx sign --from my-wallet@account_0 --to bc1q... --amount 50000 --fee 1500 --utxo <txid:vout:value>

# Features

Offline-first & Encrypted

Generate wallets and sign transactions entirely offline. Wallet data is encrypted locally with AES-256-GCM, keys derived via scrypt.

Wallet Standards

BIP39 mnemonic phrases, native SegWit (BIP84) addresses, and SLIP-39 recovery shares.

Multi-account

Derive multiple accounts per wallet with custom aliases and independent derivation indices.

Transaction Signing & QR

Preview, construct, and sign raw Bitcoin transactions with full UTXO control. Export signed tx as terminal QR codes for air-gapped transfer.

# Documentation

Wallet Management

Create, import, view, rename, and delete wallets. Manage multiple derived accounts per wallet with custom aliases and derivation indices.

Transactions

Sign raw transactions with full UTXO control and export via terminal QR code for air-gapped transfer.

> Command Reference

wallet create <alias>

$ bitcold wallet create [wallet-alias] [options]
  • --mnemonic — import an existing BIP39 mnemonic phrase
  • --mnemonic-length — word count (12 | 15 | 18 | 21 | 24, default 12)
  • --passphrase — BIP39 passphrase for derivation preview only (never saved, for plausible deniability)
  • --show-mnemonic — display the mnemonic after creation
  • -e, --entropy <entropy> — supply your own entropy as hex (0x...) or binary (0b...)
  • --from-slip-39 — recover from SLIP-39 shares
  • --share <share> — provide a SLIP-39 share (repeatable; prompts or stdin when omitted)
Examples
Create a wallet with alias
$ bitcold wallet create my-wallet
Import from mnemonic with passphrase
$ bitcold wallet create imported --mnemonic "word1 word2 word3 ..." --passphrase "my-passphrase"
Generate 24-word mnemonic and display it
$ bitcold wallet create secure-wallet --mnemonic-length 24 --show-mnemonic
Create from custom entropy
$ bitcold wallet create dice-wallet -e 0x339610718cf57261ad03a0590742dae8
Create from binary entropy
$ bitcold wallet create coin-wallet --entropy 0b10110100...
Recover interactively from SLIP-39 shares
$ bitcold wallet create restored-wallet --from-slip-39
Recover from SLIP-39 shares via stdin
$ printf '%s\n%s\n' "$SHARE_1" "$SHARE_2" | bitcold wallet create restored-wallet --from-slip-39
Note Your wallet data is stored locally in ~/.bitcold/ and encrypted using AES-256-GCM. The derivation keys are protected via scrypt. Never share your passphrase or the files in this directory.

wallet show <alias-or-address-ref>

$ bitcold wallet show wallet[@account[:index]] [options]
  • -p, --private — reveal private keys
  • -m, --mnemonic — reveal mnemonic phrase
  • -e, --entropy — reveal mnemonic entropy as hexadecimal
  • --slip-39 — show SLIP-39 shares for the wallet mnemonic
  • --threshold <n> — SLIP-39 recovery threshold
  • --shares <n> — SLIP-39 share count
Examples
Show wallet with private keys
$ bitcold wallet show my-wallet --private
Show specific account
$ bitcold wallet show my-wallet@savings
Show specific address details
$ bitcold wallet show my-wallet@account_0:5 --private
Show entropy and mnemonic
$ bitcold wallet show my-wallet -e --mnemonic
Show SLIP-39 shares
$ bitcold wallet show my-wallet --slip-39 --threshold 2 --shares 3

wallet receive / receive <account-ref>

$ bitcold receive wallet@account[:index] [options]
  • --change — use change chain
  • Display a receive address and its QR code.
  • Shortcut for bitcold wallet receive.
Examples
Standard receive address
$ bitcold receive my-wallet@account_0
Reference with index
$ bitcold receive my-wallet@account_0:5

wallet list

$ bitcold wallet list
  • List all saved wallets and their accounts.

wallet rename <alias> <new-alias>

$ bitcold wallet rename old-name new-name
  • Rename an existing wallet.

wallet remove <alias>

$ bitcold wallet remove my-wallet [options]
  • --yes — skip confirmation prompt
Examples
Remove with confirmation prompt
$ bitcold wallet remove my-wallet
Skip confirmation
$ bitcold wallet remove my-wallet --yes

wallet account add / account add <wallet> [account]

$ bitcold account add my-wallet savings [options]
  • -i, --index — BIP84 account index
  • Shortcut for bitcold wallet account.
Examples
Add account with auto-generated alias
$ bitcold account add my-wallet
Add with custom alias and derivation index
$ bitcold account add my-wallet savings --index 5

wallet account remove / account remove <wallet> <account>

$ bitcold account remove my-wallet savings [options]
  • --yes — skip confirmation prompt
  • Shortcut for bitcold wallet account.
Examples
Remove with confirmation
$ bitcold account remove my-wallet savings
Skip confirmation
$ bitcold account remove my-wallet savings --yes

tx sign

$ bitcold tx sign --from wallet@account[:index] --to bc1q... --amount 50000 --fee 1500 --utxo <txid:vout:value> [options]
  • --from — sender as wallet@account[:index]
  • --to — recipient address or wallet@account[:index] reference
  • --amount — amount in satoshis
  • --fee — fee in satoshis
  • --utxo — UTXO input as txid:vout:value (repeatable)
  • --qr — display signed tx as terminal QR code
  • -y, --yes — skip confirmation after transaction preview
  • Shows a transaction preview before signing.
Examples
Basic transaction signing
$ bitcold tx sign --from my-wallet@account_0 --to bc1q... \ --amount 50000 --fee 1000 \ --utxo abc123...:0:60000
Multiple UTXOs
$ bitcold tx sign --from my-wallet@account_0 --to bc1q... \ --amount 1500 --fee 500 \ --utxo abc123...:0:1000 \ --utxo def456...:0:500 \ --utxo 789abc...:0:500
Output as QR code for air-gapped transfer
$ bitcold tx sign --from my-wallet@account_0 --to bc1q... \ --amount 50000 --fee 1000 \ --utxo abc123...:0:60000 --qr
Skip the preview confirmation
$ bitcold tx sign -y --from my-wallet@account_0 --to bc1q... \ --amount 50000 --fee 1000 \ --utxo abc123...:0:60000
Send to another local wallet
$ bitcold tx sign --from my-wallet@account_0 --to other-wallet@savings \ --amount 50000 --fee 1000 \ --utxo abc123...:0:60000

> Configuration