Cargo Features

risc0-zkvm = { version = "1.0.2", default-features = false, features = ["client", "cuda", "dual", "metal", "disable-dev-mode", "docker", "getrandom", "std", "prove", "seq"] }
default = client

The client feature is set by default whenever risc0-zkvm is added without default-features = false somewhere in the dependency tree.

client default prove? = std

Enables bincode, bonsai-sdk, bytes, prost ^0.12, and tempfile

cuda = prove

Enables cuda of risc0-circuit-recursion, risc0-circuit-rv32im, and risc0-zkp

metal = prove

Enables metal of risc0-circuit-recursion, risc0-circuit-rv32im, and risc0-zkp


This flag uses the docker environment to build test guests such as multi-test to ensure accurate cycle and segment counts. Tests that have been gated on this flag measure cycles and segments. Without this flag, the rust build system will generate binaries that not identical across all architectures.
While this is acceptable for most tests, the tests counting cycles and segments will fail intermittently. It does not effect non-test code.


The zkVM exposes a getrandom implementation that panics by default. This will expose a getrandom implementation that uses the sys_random ecall.

Enables getrandom of risc0-zkvm-platform

std client prove?

Enables std of anyhow, hex, risc0-binfmt, risc0-groth16, risc0-zkp, serde, and sha2


Provide impls for common standard library types like Vec<T> and HashMap<K, V>.
Requires a dependency on the Rust standard library.

Affects risc0-zkvm::is_dev_mode

prove cuda? metal? = client, std

Enables rustc-demangle, tempfile, and typetag, addr2line ^0.22, bincode, bytes, elf, lazy-regex, nvtx, prost ^0.12, rand, and rayon, prove of risc0-circuit-recursion, risc0-circuit-rv32im, risc0-groth16, and risc0-zkp

Affects merkle::ALLOWED_CODE_MERKLE_DEPTH, merkle::MerkleGroup


Enables seq of risc0-circuit-rv32im