Installation
Venus is distributed as a self-contained monorepo and is built from source via the top-level Makefile. This page walks through the prerequisites and the canonical install flow.
System Requirements
Venus currently supports Linux x86_64 and macOS platforms (see note below).
Note: On macOS, proof generation is not yet optimized, so some proofs may take longer to generate.
Required Tools
Ensure the following tools are installed:
For GPU-accelerated proving, you also need:
- An NVIDIA GPU with a driver matching the installed CUDA toolchain.
- The CUDA Toolkit.
Installing System Dependencies
Ubuntu
Ubuntu 22.04 or higher is required.
sudo apt-get install -y xz-utils jq curl build-essential qemu-system libomp-dev libgmp-dev nlohmann-json3-dev protobuf-compiler uuid-dev libgrpc++-dev libsecp256k1-dev libsodium-dev libpqxx-dev nasm libopenmpi-dev openmpi-bin openmpi-common libclang-dev clang gcc-riscv64-unknown-elf
Venus uses shared memory to exchange data between processes. The system must be configured to allow enough locked memory per process:
A way to achieve this is to edit /etc/systemd/system.conf and add the line DefaultLimitMEMLOCK=infinity. Reboot for changes to take effect.
macOS
macOS 14 or higher is required.
You must have Homebrew and Xcode installed.
brew reinstall jq curl libomp protobuf openssl nasm pkgconf open-mpi libffi nlohmann-json libsodium riscv-tools
Installing Venus
1. Clone the Repository
2. Run make setup
The top-level Makefile drives the entire install pipeline -- building the Venus tools, installing the Rust zkVM toolchain, generating the proving key, and preparing the bundled zec-reth guest:
This is equivalent to the following sub-targets, run in order:
| Step | Target | What it does |
|---|---|---|
| 1 | build |
Builds Venus with GPU support (cargo build --release --features gpu -p cargo-zisk --bin cargo-zisk). |
| 2 | install-toolchain |
Installs the Rust zkVM toolchain (cargo-zisk sdk install-toolchain) if not already present. |
| 3 | check-key -> generate-key |
Builds and generates the proving key under ./build/provingKey (this step takes ~30-45 minutes). |
| 4 | build-guest |
Compiles the bundled zec-reth guest ELF. |
| 5 | rom-setup |
Generates ROM setup files for the guest. |
| 6 | compile-key |
Validates the proving key against the ROM (check-setup). |
The generate-key step runs the bundled PIL pipeline:
npm installinsidepil2-compiler/andpil2-proofman-js/.- Generates fixed data (
arith_frops_fixed_gen,binary_basic_frops_fixed_gen,binary_extension_frops_fixed_gen). - Compiles
pil/zisk.pilintopil/zisk.pilout. - Runs
main_setup.jsto producebuild/provingKey.
Once make setup finishes, the Venus CLI binary lives at target/release/cargo-zisk and the proving key is at build/provingKey.
3. Verify the Installation
Optional: Add Venus to your PATH
If you would like to use the CLI from outside the repository, install the binaries to ~/.zisk/bin and add it to your PATH:
mkdir -p $HOME/.zisk/bin
cp target/release/cargo-zisk target/release/ziskemu target/release/riscv2zisk target/release/zisk-coordinator target/release/zisk-worker target/release/libziskclib.a $HOME/.zisk/bin
PROFILE=$([[ "$(uname)" == "Darwin" ]] && echo ".zshenv" || echo ".bashrc")
echo "export PATH=\"\$PATH:$HOME/.zisk/bin\"" >> $HOME/$PROFILE
source $HOME/$PROFILE
Note: On Linux x86_64 the assembly emulator also needs the following files copied to
~/.zisk/zisk/:
Common Build Issues
stddef.h not found on Ubuntu
If you encounter:
--- stderr
/usr/lib/x86_64-linux-gnu/openmpi/include/mpi.h:237:10: fatal error: 'stddef.h' file not found
resolve it as follows:
-
Locate
stddef.h: -
Set the include paths (example for GCC 13):
-
Re-run
make setup.
Building from Toolchain Source
cargo-zisk sdk install-toolchain installs the Rust zkVM toolchain from prebuilt binaries. If you prefer to build it from source, first ensure you have the Rust build dependencies, then run:
Cleaning Up
make clean # remove ./target, ./tmp, and guest build artifacts
make purge # also remove ./build/provingKey, ./pil/zisk.pilout, and node_modules