NozyWallet Official Release — CLI Wallet

Hello Zcash family,

I’m announcing the first official production release of the NozyWallet CLI — an Orchard-first, shielded-only Zcash wallet for users who run their own node stack.

Release: v2.3.6 — Teriyaki Hot (CLI)
Repository: LEONINE-DAO/Nozy-wallet


What is NozyWallet?

NozyWallet is a wallet — not a full node. You run:

  • Zebra (zebrad, JSON-RPC, typically 8232)
  • lightwalletd (compact blocks, typically 9067)

The CLI (nozy) handles wallet create/restore, Orchard note scanning, transaction building, and shielded sends on mainnet NU6.2.

Design choice: send/receive flows are shielded-first (Orchard / unified u1). Transparent t1 addresses are rejected for those flows.


Download (CLI only)

Platform File
Windows nozy-windows.exe
Linux nozy-linux
macOS Apple Silicon nozy-macos-arm
macOS Intel nozy-macos-intel

Verify with HASHES.txt on the release page.

chmod +x nozy-linux # Linux/macOS

./nozy-linux --version # → 2.3.6 (Teriyaki Hot (CLI))


Quick start

  1. Start zebrad + lightwalletd (same network).
  2. nozy wallet create or nozy wallet restore
  3. nozy sync --to-tip
  4. nozy receive / nozy send --to u1... --amount 0.01
  5. nozy status — node tip, scan height, balance context

Command reference: COMMAND_HELP.md


2.3.x highlights

  • NU6.2 mainnet — correct consensus branch ID for sends
  • ZIP-317 fees + optional --priority
  • Spend detection fix — second-send / double-spend edge case (#61)
  • Multi-note coin selection — fee/change from the note actually spent
  • Long unified addresses — valid ~106-char u1... addresses accepted

CHANGELOG


What this release is

Production today: nozy CLI only.


Notes for operators

  • Sync is incremental — scans to your node tip, not necessarily global tip.
  • Reliable sends need the node caught up through your anchor height and the wallet scanned through spendable notes.
  • Windows: many users run zebrad + lightwalletd in WSL and the CLI on Windows — see scripts/README.md.

Feedback welcome

Try it on mainnet and reply here or open a GitHub issue — especially sync/send results with zebrad + lightwalletd.

Thanks to early testers like @gilmore whose reports shaped v2.3.5 and v2.3.6.
Special thanks to Mark from shieled labs :zcash:

— NozyWallet / LEONINE-DAO

4 Likes

NozyWallet v2.3.6.1

Teriyaki Hot (CLI) is out. Patch fix for API send/balance: insufficient funds no longer returns HTTP 500; /api/balance excludes spent notes; Zebra-down returns 503. CLI binaries refreshed — nozy --version2.3.6.1 (Teriyaki Hot (CLI)) .

3 Likes

Just saw this now :sob: appreciate the mention.

Happy the testing and bug reports helped improve Nozy. It’s been fun stress-testing different flows and seeing fixes land quickly.

Looking forward to testing more and seeing where Nozy goes.

1 Like

Oh it’s ok.

Thanks for the extra detail — that helped. I tracked it to repeat /api/sync not returning the persisted cache when already caught up to tip.

Fix is in PR #75: fix(api): sync balance persistence + dynamic-fee speed-up by Lowo88 · Pull Request #75 · LEONINE-DAO/Nozy-wallet · GitHub

1 Like

I’m doing server-side Orchard note scanning via a reserve UFVK (read-only) over lightwalletd — same trial-decryption / sync territory you’ve clearly solved at the wallet layer.

For read-only UFVK scanning, did you go through zebrad’s JSON-RPC or lean on lightwalletd’s compact blocks?

I’ve hit the tradeoff and curious how you landed.

1 Like

Hello @mrnobody for Orchard note discovery / trial decryption (what /api/sync and nozy sync use for balance today), we go through zebrad JSON-RPC getblockhash + getblock verbosity 2, parse Orchard actions from the full block, then trial-decrypt with the wallet’s Orchard IVKs (external + internal). We do not trial-decrypt from the compact-block cache yet for that path.

lightwalletd compact blocks are a separate pipeline in our stack:

  • Zeaking (zeaking::lwd) downloads compact blocks over gRPC into local SQLite (lwd_compact.sqlite)
  • Exposed as nozy lwd sync-to-tip, POST /api/lwd/sync/compact*, desktop/extension companion LWD routes
  • That cache is for chain data / resume / future scan input it does not update balance or notes.json by itself

So today integrators can be in a split state: compact cache caught up, but balance still driven by an RPC note scan into notes.json. We fixed the worst bug there (sync overwriting vs merge + /api/balance reading the same store), but the architecture is still two steps until we finish the unified orchestrator.

The Landing:

For note scanning and balance, we use Zebrad JSON-RPC: one path to find notes and read balance, it works with Zebrad-only setups, witnesses and treestate come from the same RPC, and it’s simpler for integrators and deposit checks. The downside is it’s heavy on large rescans and isn’t ideal for server-side UFVK scanning at scale.

For compact blocks, we use lightwalletd only as a cache right now: less bandwidth, resumable SQLite, and the usual lightwalletd pattern that’s the long-term shape we want. The tradeoff is you need a separate lightwalletd service, and scanning plus witness replay from compact still isn’t fully wired on our side.

2 Likes

Interesting approach.

Do you see NozyWallet primarily as a power-user wallet for people running their own infrastructure, or do you eventually see it becoming something that can onboard less technical users as well?

Either way, it’s great to see more Orchard-first development happening in the ecosystem.

  • Crypto Epoch
1 Like

Thanks again — this clears up the tradeoff a lot. I’m wiring the same lightwalletd compact-block path into ZecPad’s reserve scanner, so your notes are well-timed. Will share how it goes once it’s tailing properly. Great to see more Orchard-first tooling here :folded_hands:

2 Likes

Hey @CryptoEpoch good question.

I’ll say both for Now: Nozy is Orchard-first and built for privacy power users running their own infrastructure (zebrad, local keys, optional compact/LWD cache) a privacy hub when you control the stack. CLI is production-ready for that today.

Next: The mobile app is for less technical users everyday send/receive and wallet flows. Once Crosslink ships, we expect voters and stakers to use mobile/lighter clients without running a node, while operators keep the full self-hosted path.

Thanks for the encouragement and more Orchard-native tooling is exactly what we’re aiming for.

-Lowo :zcash:

1 Like

Hello Zcash family,

NozyWallet v2.4.1.1 — Teriyaki Hot (CLI Lite) is out.

We’ve productized the production nozy CLI as CLI Lite for operators and power users next to Zebrad: uptime/health checks, data peeks, sync/send — without the desktop WebView. Same wallet files and crypto core as before; not a second wallet.

Release: Release v2.4.1.1 Teriyaki Hot (CLI Lite) · LEONINE-DAO/Nozy-wallet · GitHub
nozy --version2.4.1.1 (Nozy Lite (CLI))

What’s in this line

  • nozy health (exit codes + --json for cron/monitoring)
  • --json on status/balance
  • nozy tui / nozy status --watch
  • Continues the 2.4.x Ironwood (NU6.3) CLI work where your network supports it
  • Nym remote broadcast is opt-in via helper subprocess (NOZY_BROADCAST_VIA_NYM_MIXNET); local/LAN Zebrad stays direct

Desktop remains the GUI path (beta Release Desktop v1.0.0-beta.2 Hot Lemon (Ironwood WIP) · LEONINE-DAO/Nozy-wallet · GitHub). CLI Lite is the production operator surface.

Stack reminder: still a wallet, not a node — run zebrad + lightwalletd and point Nozy at them.

Downloads (Windows / Linux / macOS) and hashes are on the release page. Feedback welcome here or on GitHub.

— NozyWallet / LEONINE-DAO