OpenVM
Modular zkVM framework
OpenVM: Modular zkVM framework. Kind: Modular zkVM framework. Arithmetisation / backend: Plonky3 AIR, chip extensions. Setup: Wrapper only. Maintained by: Axiom. Licence: MIT / Apache-2.0. Status: Production-recommended; externally audited. Choose it when: Teams needing custom instructions, domain-specific precompiles, or an application-specific VM, who want to build on an audited modular base rather than fork a monolithic zkVM.
What it is
A zkVM framework with a no-CPU architecture: rather than one central processing chip, functionality is composed of independent chips and extensions, so custom instructions and precompiles can be added without forking the core.
Strengths and tradeoffs
- The strongest extensibility story — custom chips and ISA extensions are a first-class mechanism, not a fork
- Explicit production recommendation backed by audit evidence, including an external audit and a public audit competition, alongside its own formal-verification work over the RISC-V instruction set
- Built on a widely shared proving substrate
- Modularity increases the configuration surface: your deployed security depends on which extensions you enable, so an audit of upstream does not fully cover your instantiation
- A critical soundness bug in an optimised pairing routine was assigned a CVE and fixed upstream — evidence the extension surface is where risk concentrates
- Younger than the two longest-running RISC-V zkVMs
Choose it whenTeams needing custom instructions, domain-specific precompiles, or an application-specific VM, who want to build on an audited modular base rather than fork a monolithic zkVM.
Related pages
Sources cited on this page · 2
All 45 sources for §02 are listed on the section page →
Cite this page
MarketComp (2026). OpenVM. The ZK Field Manual (Version 1.3). MarketComp. https://zkpick.com/frameworks/openvm/
@misc{zkfieldmanual-openvm,
title = {OpenVM — The ZK Field Manual},
author = {MarketComp},
year = {2026},
version = {1.3},
howpublished = {\url{https://zkpick.com/frameworks/openvm/}},
note = {Accessed: YYYY-MM-DD}
}