OpenVM

The modular zkVM framework

Ready for your application’s unique use cases
Optimized for maximum performance and extensibility

why openvm?

ZK built around your needs

Customize OpenVM for your application
Optimize for performance
No lock-in to a single vendor for ZK and provers

before openvm

Existing zkVMs

Current zkVM solutions are monolithic and vertically integrated

Vendor lock-in
Developers are tied to vertically integrated zkVMs.
Limited customization
Adding new features requires forking the upstream, increasing maintenance burden.

After openvm

Modular OpenVM approach

OpenVM introduces a new modular approach

No-CPU architecture
A novel zkVM architecture without a CPU trace, enabling efficiency and modularity.
Custom opcodes and extensions
Extend the VM to support new ISAs or program-specific extensions without modifying the core OpenVM libraries.
Achieving the best performance via flexibility
Give developers performance and customization simultaneously.

applications

OpenVM is modular, giving you the flexibility to adopt ZK regardless of language and stack, or optimize for every last bit of performance.

Most zkVMs replicate the design of physical processors – we reimagined the zkVM from first principles for modularity.

No-CPU architecture

A no-CPU architecture built for ZK, not physical computers

Traditional zkVMs were based on the constraints of physical processors, not ZK. OpenVM’s composable design allows for execution traces to be distributed across different circuits, minimizing redundant computations and allowing modular extensions.

VM extensions for modularity

Extensions for anything you need

All functionality in OpenVM, including RISC-V execution, proof aggregation, and elliptic curve operations, is implemented through VM extensions. Developers can use existing extensions like RV32IM, Keccak, SHA2, bigint, or elliptic curve arithmetic, or implement their own VM extensions without forking.

Features

Fully-featured, out-of-the-box

OpenVM is MIT-licensed and production-ready

Prove arbitrary Rust programs

Compile Rust to OpenVM assembly using our RISC-V toolchain

Fast and efficient

Prove Ethereum mainnet blocks for under $0.001 per transaction

VM extensions to accelerate key primitives

VM extensions for Keccak, SHA2, BigInt, Modular arithmetic, Weierstrass and Edwards curves (ECDSA, ed25519, pairings on BLS12-381, and BN-254)

Prove unbounded executions

Continuations and proof aggregation to prove large executions in parallel

Efficient onchain verification

Verify onchain using the Solidity SDK

Customize for your needs

Add custom VM extensions without forking or modifying the core OpenVM libraries

contributors

Built together with a community of contributors

Launched by Axiom, built by teams across crypto

Advancing zkVM and proof system research. Building ZK-enabled products built on OpenVM

Building OpenVM-enabled rollup applications and using OpenVM in the Euclid mainnet upgrade

Building compiler and security tools for OpenVM

Get started with OpenVM

OpenVM is MIT/Apache-2.0-licensed and production-ready

Quickstart

Prove your first Rust program with OpenVM.

Developer book

A comprehensive developer guide for OpenVM.

Design spec

Learn more about the OpenVM architecture.

Developer chat

Chat with other developers using OpenVM.