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.
curl -fsSL https://raw.githubusercontent.com/zeugmaster/pecan/main/install.sh | bashTwo 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/mintdimage) 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.orgFirst 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 | uninstallBackups, 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 backuparchives 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/.