After shipping a pure-Zig address library, the next natural step for me was tooling that talks to a live node. zebra-utils.zig is a Zig toolkit for calling a running Zebra instance over its JSON-RPC interface.
The core is a small library (JSON helpers, RPC client, typed responses, config) plus zebra-cli: a general-purpose CLI for the sorts of calls you use when operating or debugging a node - chain info, tip, blocks, transactions, mempool, peers, network, treestate, ping and sendrawtransaction. Output can be table, JSON, or compact, with optional color and ~/.config/zebra-utils/config.toml defaults. Builds target Zig 0.14.x; binaries are linked without libc, same philosophy as the address work.
Tests use fixtures and mock HTTP under src/rpc/, so zig build test does not require a daemon. Point --node at Zebra when you want to exercise it for real.
Next Steps:
Planned binaries include zebra-watch, zebra-rpc-diff, zebra-scan, and zebra-checkpoint.
If you run Zebra in production or hack on light clients, I’d especially like feedback on which RPC surfaces matter most for CLI tooling.
To briefly summarize it once again, following my earlier post on bringing Zig into the Zcash ecosystem (starting with zcash-addr.zig):I chose Zig mainly for its ability to produce static, dependency-free binaries, strong C interop, and suitability for constrained environments like hardware wallets. Its native WASM support and smaller output sizes also make it appealing for browser-based tooling.The goal isn’t to replace the existing Rust/C++ stack, but to complement it with an independent implementation for broader accessibility and cross-language verification. And there is also a purpose in learning and utilizing Zig right now.