pecan

Pecan

Processor and Ecash Console for Alternative Numeraires

A cash counter for a Cashu mint. It lets a mint issue ecash for a unit of your choice (a local currency, a voucher, a community token), settled in person: the wallet creates a quote, the teller matches it by the short code on the customer’s screen, cash changes hands, done.

One command on a Linux server (amd64/arm64)
curl -fsSL https://raw.githubusercontent.com/zeugmaster/pecan/main/install.sh | bash

Two pieces: a processor that plugs into a cdk mint over the stock payment-processor interface, and a web console — a match-first teller page plus an operator view with a live attachment checklist, an end-to-end self-test, and account management.

Install

The guided installer asks what this server should run:

  • Processor + a new mint — pick a unit and the mint’s hostname; the mint (official cashubtc/mintd image) is configured, connected, and verified by the time the installer finishes. Its seed is shown once — write it down.
  • Processor only — attach a mint you already run afterwards, in the console’s Mint tab. Pecan never touches that mint’s seed, database, or keysets; it verifies the attachment and says exactly what to fix.

Then choose how the server is reached: a domain with automatic HTTPS (have DNS A records ready — the installer shows exactly which), behind your own reverse proxy, or plain HTTP on a trusted LAN. The console forces a password change at the first sign-in. Every question has a flag twin for automation (mintctl install --help):

mintctl install --yes --with-mint --unit ora \
  --console-domain console.example.org --mint-domain mint.example.org

First steps

With a bundled mint: write down the seed, let the checklist confirm itself, add teller accounts in the Access tab. Attaching your own mint: set unit and mint URL in the Mint tab, apply the generated snippet to your mintd (cdk-mintd config apply), restart it, and watch the checklist settle green.

Day to day

mintctl status | logs | update | domain | backup | restore | start | stop | uninstall

Backups, restore drills, server migration, proxy setups, and bundled-mint operations live in docs/operations.md.

Good to know

  • Needs cdk-mintd v0.18.0-rc.0 or later — the first release containing cashubtc/cdk#2295. The protocol is checked at connect time and the console names the required release. Wallet developers: docs/wallet-integration.md.
  • Deposits are only accepted on wallet-locked quotes (NUT-20), and every settlement is cross-checked with the mint first.
  • mintctl backup archives hold password hashes and the ticket ledger — and, with a bundled mint, its database and SEED. Store them encrypted.

Development

docker compose up --build from a checkout — console on http://localhost:9090 (demo admin/admin). Frontend in web/, processor in processor/, installer in mintctl/; CI tests every PR and publishes multi-arch images to ghcr.io/zeugmaster/pecan. The upstream research and rescope record live in docs/.