Installation
There are multiple ways to install the zallet binary. The table below has a summary of
the simplest options:
| Environment | CLI command |
|---|---|
| Debian | Debian packages |
| Ubuntu | Debian packages |
Help from new packagers is very welcome. However, please note that Zallet is currently BETA software, and is rapidly changing. If you create a Zallet package before the 1.0.0 production release, please ensure you mark it as beta software and regularly update it.
Choosing a chain backend
Zallet supports two chain backends. Each is a separate binary (built from its own cargo
workspace, so the two can track different zebra releases), and the zallet command is
a small launcher that runs whichever backend your config file names:
# zallet.toml — the default if the key is absent is "zebra"
backend = "zaino"
| Backend | Default | Platform | Reaches the chain via | Requires | Regtest |
|---|---|---|---|---|---|
zebra | Yes | Linux only | co-located zebrad’s state database (ReadStateService) | zebrad built with the indexer feature + [indexer.read_state_service] config + shared state dir | No |
zaino | No | Linux, macOS, Windows | co-located zebrad’s JSON-RPC endpoint (optionally reads state directly when [indexer.read_state_service] is set) | co-located zebrad JSON-RPC endpoint | Yes |
The zebra backend is the default. It reads finalized chain state directly from
a co-located zebrad’s state database and is the recommended choice for production
mainnet use on Linux. It only works against a zebrad built with the non-default
indexer feature.
The zaino backend fetches chain data over JSON-RPC. It is the only backend that
supports regtest and non-Linux platforms, and it does not require the zebrad
indexer feature — so it is the right choice when Zebra and Zallet run as separate
services/containers over JSON-RPC (for example, the stock zfnd/zebra images or the
z3 stack), or when you need regtest.
Pre-compiled artifacts (Docker image / Debian package)
The official Docker image and Debian package ship the launcher and both backends:
| Binary | Role | Notes |
|---|---|---|
zallet | launcher | the default command / image ENTRYPOINT; dispatches on the config’s backend key |
zallet-zebra | zebra backend | directly runnable |
zallet-zaino | zaino backend | directly runnable |
All three share the same CLI surface, config format, and subcommands; only the chain-data
backend differs, and you can bypass the launcher by running a backend binary directly (it
will refuse to run against a config whose backend key names the other backend). The
GitHub Releases page ships one signed tarball per platform,
zallet-<version>-linux-<arch>.tar.gz, containing all three binaries (zallet,
zallet-zebra, zallet-zaino) side by side — extract it and run whichever one you need
directly, or run zallet for config-driven dispatch.
Building from source with a chosen backend
Each backend is its own package in its own cargo workspace, so you install the one you want by name (plus the launcher, if you want config-driven dispatch):
# The zebra backend (Linux only, reads zebrad's state database)
cargo install --locked --git https://github.com/zcash/zallet.git zallet-zebra
# The zaino backend
cargo install --locked --git https://github.com/zcash/zallet.git zallet-zaino
# The launcher (optional; dispatches to whichever backend the config names)
cargo install --locked --git https://github.com/zcash/zallet.git zallet
Backend-independent features such as rpc-cli and zcashd-import are enabled per
backend package with --features as usual.
Pre-compiled binaries
WARNING: This approach does not have automatic updates.
Executable binaries are available for download on the GitHub Releases page.
Build from source using Rust
WARNING: This approach does not have automatic updates.
To build Zallet from source, you will first need to install Rust and Cargo. Follow the instructions on the Rust installation page. Zallet currently requires at least Rust version 1.88.
WARNING: The following does not yet work because Zallet cannot be published to crates.io while it has unpublished dependencies. This will be fixed before the 1.0.0 release. In the meantime, follow the instructions to install the latest development version.
Once you have installed Rust, the following command can be used to build and install Zallet:
cargo install --locked zallet
This will automatically download Zallet from crates.io, build it, and install it in
Cargo’s global binary directory (~/.cargo/bin/ by default).
To update, run cargo install zallet again. It will check if there is a newer version,
and re-install Zallet if a new version is found. You will need to shut down and restart
any running Zallet instances to apply the new version.
To uninstall, run the command cargo uninstall zallet. This will only uninstall the
binary, and will not alter any existing wallet datadir.
Installing the latest development version
If you want to run the latest unpublished changes, then you can instead install Zallet directly from the main branch of its code repository:
cargo install --locked --git https://github.com/zcash/zallet.git