zinc-wallet-cli 0.3.0

Agent-first Bitcoin + Ordinals CLI wallet with account-based taproot ordinals + native segwit payment addresses (optional human mode)
<p align="center">
  <img src="./assets/zinc-cli-logo.gif" alt="zinc-cli logo" width="260" />
</p>

# zinc-cli

`zinc-cli` is an agent-first Bitcoin + Ordinals wallet CLI.

It uses an account-based model where each account has:
- a taproot address for ordinals
- a native segwit address for BTC payments

Default behavior is optimized for automation (`--agent` JSON envelopes).
Optional interactive dashboard mode is available via `--features ui`.

## Install

Cargo (available now):

```bash
cargo install zinc-wallet-cli
```

Cargo with human dashboard/TUI:

```bash
cargo install zinc-wallet-cli --features ui
```

Homebrew (after tap is published):

```bash
brew tap bitcoiner-dev/zinc-cli
brew install zinc-cli
```

## Agent Quick Start (60 seconds)

```bash
export ZINC_WALLET_PASSWORD='your-wallet-password'
zinc-cli wallet init --overwrite
zinc-cli --agent wallet info
zinc-cli --agent sync chain
zinc-cli --agent sync ordinals
zinc-cli --agent balance
```

Expected agent envelope:

```json
{
  "ok": true,
  "schema_version": "1.0",
  "command": "wallet info"
}
```

## Human Mode

The `ui` feature enables a basic terminal dashboard for humans that shows:
- account balance
- inscriptions
- ordinals/payment addresses per account

Even without `ui`, human command output can be tuned with:
- `--thumb` to force thumbnail rendering on
- `--no-thumb` to disable thumbnail rendering

Run dashboard:

```bash
zinc-cli dashboard
```

## First 5 Minutes Demo

```bash
./demo/scripts/run_demo.sh
./demo/scripts/benchmark.sh --runs 5
```

Reports are written to `demo/artifacts/`.

## What You Can Do

- wallet lifecycle: `wallet init|import|info|reveal-mnemonic`
- sync: `sync chain|ordinals`
- addresses and balance: `address taproot|payment`, `balance`
- transfers: `psbt create|analyze|sign|broadcast`
- advanced offers (hidden from top-level help): `offer create|publish|discover|accept|submit-ord|list-ord`
- accounts: `account list|use`
- waits and tx: `wait tx-confirmed|balance`, `tx list`
- operations: `snapshot save|restore|list`, `lock info|clear`, `doctor`

## Docs

- Usage guide: [USAGE.md]./USAGE.md
- Agent workflows: [AGENT_PLAYBOOKS.md]./AGENT_PLAYBOOKS.md
- Command contract: [COMMAND_CONTRACT_V1.md]./COMMAND_CONTRACT_V1.md
- JSON schemas: [SCHEMAS.md]./SCHEMAS.md
- Demo kit: [demo/README.md]./demo/README.md
- Reference clients: [examples/agent_client.py]./examples/agent_client.py, [examples/agent_client.ts]./examples/agent_client.ts

## Security Notes

- Prefer `ZINC_WALLET_PASSWORD` (default password env) or `--password-stdin`.
- Use `--password-env` only when you need a non-default env var name.
- In `--agent` mode, mnemonic output is redacted unless `--reveal` is set.
- See [SECURITY.md]./SECURITY.md.

## License

MIT. See [LICENSE](./LICENSE).