Skip to main content

Prerequisites

Jolt requires Rust nightly version 1.88 with RISC-V target support.
1

Install rustup

If you don’t have Rust installed, get rustup from rustup.rs:
After installation, restart your terminal or run:
2

Clone the Jolt repository

Clone the repository to access the CLI source:
The repository includes a rust-toolchain.toml file that automatically configures the correct Rust version and targets when you run cargo commands.
3

Verify the toolchain

Check that rustup has activated the correct toolchain:
You should see output indicating:
  • Rust channel: 1.88
  • Targets: riscv32imac-unknown-none-elf, riscv64imac-unknown-none-elf
The RISC-V targets are automatically installed when needed. You don’t need to manually add them.
4

Install the Jolt CLI

Build and install the jolt command-line tool:
This compiles the Jolt CLI and places it in ~/.cargo/bin/. The installation may take a few minutes.
After pulling updates from the Jolt repository, reinstall the CLI with cargo install --path . --locked to ensure guest builds work correctly.
5

Verify installation

Confirm the CLI is available:
You should see version information with a git hash and build date.

Jolt CLI Commands

The Jolt CLI provides several commands for working with zkVM projects:

jolt new

Creates a new Jolt project with the specified name:
This generates a workspace with:
  • src/main.rs - Host program that compiles, proves, and verifies the guest
  • guest/ - Guest program directory containing provable functions
  • Cargo.toml - Workspace configuration with Jolt dependencies
  • rust-toolchain.toml - Rust toolchain specification
Use the --wasm flag to generate WASM-compatible project files:

jolt build

Builds a guest program for the Jolt zkVM:
This command:
  • Compiles guest code to RISC-V ELF binaries
  • Applies Jolt-specific optimizations (-Copt-level=3, -Cpasses=lower-atomic)
  • Configures the custom linker script for zkVM memory layout
  • Strips symbols by default (use JOLT_BACKTRACE=1 to preserve them)

jolt run

Runs an ELF binary on the Jolt emulator:
This executes the program using Jolt’s RISC-V tracer without generating a proof. Useful for quick testing and debugging.

jolt generate

Generates target specifications or linker scripts:

Environment Variables

Customize Jolt’s behavior with these environment variables:

Next Steps

Quickstart Guide

Create your first provable function

Examples

Explore example projects