Zenroom logo

Zenroom is a secure language interpreter of both Lua and its own Zencode language to execute fast cryptographic operations using elliptic curve arithmetics.

The Zenroom VM is very small, has no external dependency, is fully deterministic and ready to run end-to-end encryption on any platform: desktop, embedded, mobile, cloud and even web browsers.

Zencode is the name of the language executed by Zenroom: it is simple to understand and can process large data structures while operating cryptographic transformations on them.

software by

This documentation focuses on 3 main use cases:

  1. How to program Zencode using human language
  2. How cryptographers can work using Lua scripting
  3. How to adopt Zenroom embedding it in your application

More documentation is available on:


Whitepaper: Zencode by Jaromil

Blog post: Smart contracts for the English speaker

Blog post: Data integrity in a multiplatform environment

Blog post: Why Zenroom? Algorithmic Sovereignty


Available targets:

  • Portable source code (C99)
  • Javascript (WebAssembly)
  • Linux (Android, ARM and x86)
  • Windows (EXE and DLL)
  • Apple (OSX and iOS)

Download from

History of changes

Anyone planning to use Zenroom to store and access secrets should not use the latest development version in Git, but use the stable releases on

Before releasing we make sure Zenroom works as expected by running various tests, plus we note down all changes in the log above.

The development version in Git should only be used by contributors to report bugs, test new features and develop patches.


How to program

Zenroom brings simplicity to distributed systems development and allows programmers to work in parallel. System integrators need just to adopt the VM embedding it in their application, security researchers and cryptographers can provide Zencode or Lua scripts.

Zencode: programming smart contracts in human language

Crypto scheme implementation using Zenroom and Lua

Zenroom scripting in Lua: reference documentation

How to adopt

How to execute scripts with Zenroom

How to embed Zenroom in your application

How to build Zenroom from the source code

Zenroom with JavaScript: node.js (part 1)

Zenroom with JavaScript: browser (part 2)

Zenroom with JavaScript: React (part 3)



Online interactive demo

Web encryption demonstration and benchmark


Redroom: fast execution of Zencode in Redis

Sawroom: blockchain integration with Sawtooth


Random quality measurements


Project funded by the European Commission

The Zenroom VM and the Zencode language are proudly developed in Europe and have receiving funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement nr. 732546 (DECODE).

DECODE project

Zenroom is Copyright (C) 2017-2020 by the foundation For the original source code and documentation go to This notice must be displayed and explicitly agreed by any user at boot.

Zenroom is designed, written and maintained by Denis "Jaromil" Roio

With contributions by Puria Nafisi Azizi and Daniele Lacamera.

Go bindings by Christian Espinoza and Samuel Mulube.

JS bindings by Jordi Coscolla and Puria.

Special thanks to Francesca Bria for leading the DECODE project and to George Danezis, Ola Bini, Mark de Villiers, Ivan Jelincic, Alberto Sonnino, Richard Stallman, Enrico Zimuel, Jim Barritt, Samuel Mulube, Nina Boelsums, Andrea D'Intino and Sofía Celi for their expert reviews.

This software includes software components by: R. Ierusalimschy, W. Celes and L.H. de Figueiredo (lua), Mike Scott and Kealan McCusker (milagro-crypto-c), Mark Pulford (lua-cjson), Daan Sprenkels (randombytes), Salvatore Sanfilippo (cmsgpack), Tilen Majerle (lwmem), Sean Barrett (stb_c_lexer), Jeff Roberts (stb_sprintf), Kim Alvefur (cbor)

Some Lua extensions included are written by: Kyle Conroy (statemachine), Enrique García Cota (inspect and semver).

Zenroom is Licensed under the terms of the Affero GNU Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

Software contained include Lua 5.3.5, Copyright (C) 1994-2019, PUC-Rio licensed with an MIT style license. Also included Milagro, Copyright 2016 MIRACL UK Ltd licensed with the Apache License, Version 2.0 (the "License").

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License.