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]
  • --mnemonicimport an existing BIP39 mnemonic phrase
  • --mnemonic-lengthword count (12 | 15 | 18 | 21 | 24, default 12)
  • --passphraseBIP39 passphrase for derivation preview only (never saved, for plausible deniability)
  • --show-mnemonicdisplay the mnemonic after creation
  • -e, --entropy <entropy>supply your own entropy as hex (0x...) or binary (0b...)
  • --from-slip-39recover 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, --privatereveal private keys
  • -m, --mnemonicreveal mnemonic phrase
  • -e, --entropyreveal mnemonic entropy as hexadecimal
  • --slip-39show 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]
  • --changeuse 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]
  • --yesskip 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, --indexBIP84 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]
  • --yesskip 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]
  • --fromsender as wallet@account[:index]
  • --torecipient address or wallet@account[:index] reference
  • --amountamount in satoshis
  • --feefee in satoshis
  • --utxoUTXO input as txid:vout:value (repeatable)
  • --qrdisplay signed tx as terminal QR code
  • -y, --yesskip 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