Zenroom is a secure language interpreter of the domain-specific Zencode, making it easy to execute fast cryptographic operations on any data structure.
The Zenroom VM is very small, has no external dependency, is fully deterministic and is ready to run end-to-end encryption on any platform: desktop, embedded mobile, cloud micro-services, and web browsers. Zenroom works inside applications written in Javascript, Python3, Rust or Golang.
Zencode has a no-code approach. It is a domain-specific language (DSL) similar to human language. One can process large data structures through complex cryptographic and logical transformations.
Zencode helps developers to empower people who know what to do with data: one can write and review business logic and data-sensitive operations without learning to code.
- 2017 - Proof of Concept
- 2018 - Prototype and Alpha release series
- 2019 - Stable release series
v1
(now EOL) - 2022 - Stable release series v2 until LTS
v2.22.1
- 2023 - Stable release series v3 until LTS
v3.23.4
- 2024 - Stable release series v4 until LTS
v4.47.0
- 2025 - Current stable
v5
(latest HEAD)
This software has zero dependencies. If you chose to use it in your project be assured that we intend to support the same code to still run in 20 years from now on any target platform.
Continue to the developer website
or
Read the Zencode whitepaper
or
Visit the product website for a friendly introduction to the love we put in craftsmanship.
For many quick running examples visit the ApiRoom online IDE powered by Zenroom.
Zenroom is licensed as AGPLv3; we are open to grant exceptions on a commercial basis.
Many applications already include Zenroom and use the Zencode language.
- CREDIMI: EUDI-ARF wallet certification
- DIDROOM: EUDI and W3C VC wallet, verifier and issuer dashboard
- W3C compatible Distributed Identity did:dyne
- Global Passport Project
- Keypairoom mnemonic deterministic and private keypairs
- Simple Android app to show how to use Zenroom libs
- Zexec safe remote execution of signed commands
- Micro-service to produce ECDSA signed unix timestamps
- Sawroom Transaction Processor for Hyperledger Sawtooth
- RedRoom Crypto module for Redis
- Lotionroom Tendermint / Cosmos proof of concept with Zenroom
- ZenSchnorr API for Schnorr signatures
- Great Dane DNSSEC as a AV store for Zenroom
- Zen-Web-Ext Web extensions encapsulating Zenroom functionality
- Planetmint by the IPDB foundation
To quickly try out Zenroom using the Zencode language with some examples navigate to ApiRoom and start typing into the browser.
The Zenroom VM runs locally in your browser (needs WASM) and ApiRoom provides various examples to show operational crypto flows.
ApiRoom is also an IDE (Integrated Development Environment) and by signing in with a username and password you can save your contracts and download them as a Dockerfile micro-service ready to deploy.
Dependencies: makefile, cmake, gcc, libreadline-dev, xxd
Optional: musl-libc, emscripten for wasm builds
There are various build targets, just type make to have a list:
✨ Welcome to the Zenroom build system
🛟 Usage: make <target>
👇🏽 List of targets:
posix-exe Dynamic executable for generic POSIX
posix-lib Dynamic library for generic POSIX
linux-exe Dynamic executable for GNU/Linux
linux-lib Dynamic library for GNU/Linux
debug-asan Address sanitizer debug build
debug-gprof Address sanitizer debug build
musl Static executable for Musl
win-exe Executable for Windows x86 64bit
win-dll Dynamic lib (DLL) for Windows x86 64bit
osx-exe Executable for Apple MacOS
osx-lib Library for Apple MacOS native
ios-armv7 Libraries for Apple iOS native armv7
ios-arm64 Libraries for Apple iOS native arm64
ios-sim Libraries for Apple iOS simulator on XCode
node-wasm WebAssembly (WASM) for Javascript in-browser (Emscripten)
check Run tests using the current binary executable build
check-js Run tests using the WASM build for Node
check-osx Run tests using the OSX binary executable build
Copyright (C) 2017-2025 Dyne.org foundation
Designed and written by Denis "Jaromil" Roio with the help of Puria Nafisi Azizi and Andrea D'Intino.
Includes code contributions by Alberto Lerda, Matteo Cristino, Danilo Spinella, Luca Di Domenico, Rebecca Selvaggini, Filippo Trotter, Nicola Suzzi, Giulio Sacchet.
Reviews and suggestions contributed by: Richard Stallman, Daniele Lacamera, Enrico Zimuel, Sofía Celi, Sebastian Blichfeld, Adam Burns, Thomas Fuerstner, Jürgen Eckel, Massimo Romano
Zenroom complies with the REUSE license specification and redistributes:
- Lua 5.4 - Copyright © 1994–2025 Lua.org, PUC-Rio.
- Apache Milagro Crypto Library (AMCL)
- Various Lua libraries released under Apache/MIT/CC0 license
Special thanks to our colleagues in the DECODE project whose research has inspired the birth of this project: Francesca Bria, George Danezis, Ola Bini, Mark de Villiers, Ivan Jelincic, Alberto Sonnino, Jim Barritt, Christian Espinoza, Samuel Mulube and Nina Boelsums.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.