Install
macOS / Linux / FreeBSD:
|
Windows (PowerShell):
iwr https://harmoniis.com/wallet/install.ps1 -UseB | iex
From source (requires Rust 1.86+):
Quick Start
# alias: hrmw identity claim --nick alice
Upgrade
Contract Usage
Buyer flow:
Seller/holder flow:
Transfer custody safely:
replace rotates witness state: the old secret is invalid after replacement.
Webcash Usage
Voucher Usage
- Voucher outputs are bearer secrets; keep exported voucher secrets if you may need to rebuild the voucher wallet.
hrmw voucher recoverreports the current deterministic voucher-proof recovery limitation.
Payment Rails
- Payment for paid commands is sourced from the local wallet automatically.
- Webcash rail uses
X-Webcash-Secretwithwats. - Voucher rail uses
X-Voucher-Secretwithcredits. - Bitcoin rail uses
X-Bitcoin-Secretwithsats. - In ARK mode,
X-Bitcoin-Secretmust beark:<vtxo_txid>:<amount_sats>. - Backend ARK mode verifies incoming VTXOs via ASP/wallet state before settlement.
- Clients may send
X-Payment-Railon the unpaid probe;402responses publishpayment.rail_details, and/api/infomirrors the same acquisition metadata underpayment_rails. - Rail lock is strict per listing inception rail:
- comments on a post must pay with that post rail,
- ratings on a post must pay with that post rail,
- contract buy must pay with the reference post rail.
- Contract pickup is free and does not take a payment header.
- Wrong rail on paid descendants returns HTTP
402withcode: payment_rail_mismatch. - Client API exposes payment-header abstractions so either rail can be used cleanly.
CLI rail flags:
# default (webcash)
# voucher rail from local wallet
# bitcoin rail from local ARK wallet
ARK helper commands (Arkade ASP):
Command semantics:
deposit: show the ARK deposit address (send on-chain BTC here).boarding: finalize deposited on-chain BTC into ARK offchain balance.settle: settle ARK offchain sats back to this wallet on-chain address.settle-address: settle ARK offchain sats to any on-chain BTC address.
Generic 402 Requests
hrmw can perform custom paid requests against Harmoniis or another HTTP 402 service:
Alias: hrmw 402 ...
Inspection and safety commands:
hrmw req losseshrmw req blacklist listhrmw --payment-rail bitcoin req blacklist clear --url https://harmoniis.com/api --endpoint /timeline --method POST
Deterministic Bitcoin Wallet
The wallet derives a deterministic Bitcoin slot (bitcoin[0]) from the root key and exposes:
- Taproot (
BIP86) as the primary receive path. - SegWit (
BIP84) as compatibility fallback for payers without Taproot support.
# show descriptors + deterministic address and sync balances
# explicit sync settings
# deterministic taproot address at index N
# deterministic segwit fallback address at index N
Notes:
- This is deterministic reconstruction support (no separate seed file needed).
hrmw bitcoin infoandhrmw bitcoin syncreport both Taproot and SegWit next receive addresses.- On-chain addresses are funding rails; ARK tokens are settlement inputs and must be backend-verified.
- Default esplora endpoints are auto-selected by network and can be overridden with
--esplora.
Mining
Foreground (recommended for live logs):
Backend order in auto: CUDA -> Vulkan/wgpu -> CPU.
Examples:
Accepted mined keeps are inserted into wallet with replace semantics (old secret invalidated).
If insert fails after acceptance, pending keeps are stored in miner_pending_keeps.log.
Key Model
The wallet stores one BIP39 master mnemonic/entropy pair and derives every slot using hardened BIP32 paths:
RGB identity key(wallet contract identity)Webcash master secretBitcoin deterministic slot keyGeneric vault root slot(for app-scoped vault key derivation)PGP-style signing identities(multiple, labeled, selectable)
PGP identities are managed with labels:
hrmw identity register signs with the active PGP label by default.
Master key backup / restore:
Password manager storage:
# During initial setup
# Change setting on an existing wallet (idempotent — safe to re-run)
Modes:
required(default): fails if no supported password manager is available.best-effort: continue if password-manager storage fails.off: remove credentials from OS store (or skip storage on first run).
Re-running hrmw setup on an existing wallet is safe: it never destroys key material, contracts, or identities. It only updates the password manager setting. To re-import a master key, use hrmw key import --force instead.
After switching to off, back up your master key immediately:
Supported credential stores:
| Platform | Backend |
|---|---|
| macOS | Keychain (with optional iCloud sync) |
| Linux | Secret Service (secret-tool) |
| Windows | Credential Manager (cmdkey) |
Deterministic slot map:
pgp[i]fori=0..999(identity scan range)webcash[0]deterministic webcash masterrgb[0]deterministic RGB identity rootbitcoin[0]deterministic Bitcoin slot seed materialvault[0]deterministic vault root seed material (backward-compatible alias:harmonia-vault[0])
This allows reconstruction from only the master mnemonic (or entropy hex) plus server discovery.
Derived vault material (for any consumer app) is exposed by src/vault.rs:
use ;
let wallet = open
Database model:
master.dbstores root material metadata, slot registry, and PGP identity registry.rgb.dbstores wallet-level contract/certificate/local timeline state.webcash.dbstores Webcash balance state.bitcoin.dbstores Bitcoin/ARK wallet persistence (including ARK boarding outputs).
Important:
- RGB contract state is wallet-scoped (
rgb.db), not partitioned by active PGP key label. - PGP identities are signing keys derived from master key slots; switching active PGP label does not switch to a different RGB state database.
Default Paths
All wallet data lives under ~/.harmoniis/:
| File | Purpose |
|---|---|
~/.harmoniis/master.db |
Root material metadata, slot registry, PGP identity registry |
~/.harmoniis/rgb.db |
Wallet-level contract, certificate, and local timeline state |
~/.harmoniis/webcash.db |
Webcash balance state |
~/.harmoniis/bitcoin.db |
Bitcoin/ARK wallet persistence (including ARK boarding outputs) |
~/.harmoniis/miner.log |
Miner daemon log |
~/.harmoniis/miner_status.json |
Miner status snapshot |
~/.harmoniis/miner_pending_keeps.log |
Pending mined keeps (fallback if insert fails) |
Backup and Restore
Backup the entire wallet directory:
Restore:
Then validate:
If you accidentally pass --wallet .../webcash.db, hrmw now auto-corrects to the sibling master.db path.
For deterministic restore on a new machine:
Build and Test
Credits
- Webminer architecture/perf direction inspired by
maaku/webminer. - RGB smart-contract model built on
RGB-WG/rgbwith Harmoniis witness-backed bearer state and arbitration service. - Witness custody/replace flow inspired by Webcash server semantics (replace invalidates old secret).