NVX: An Ultra-Light Micro-VM Sandbox
NVX is an ultra-light micro-VM sandbox for running untrusted workloads with hardware-enforced isolation. It is built on top of OpenVMM and runs Linux as a guest.
NVX was jointly developed by the MSR Systems Research Group and Azure Research - Systems, building on research results from the Nanvix system.
This repository includes version pins for Linux, OpenVMM, and the Rust guest toolchain, along with the patches, guest source files, build tools, and benchmarks needed to use NVX. Alpine, Ubuntu, and Azure Linux ship the nine static guest binaries from nvx-rs at their common /sbin/nvx-* paths.
Quick Start
Python 3.10 or newer is required. The commands below download the prebuilt NVX package for the selected platform from the cloned revision’s release when available, or from its nearest released first-parent ancestor otherwise, so no local build is required. A successful boot prints NVX-GUEST-BOOT-OK: alpine and opens a root shell. Select Ubuntu or Azure Linux userland with the same NVX kernel by passing --guest ubuntu or --guest azurelinux.
Exit cleanly from the guest with /sbin/nvx-exit 0. See the setup and run guides for detailed prerequisites and runtime options.
ℹ️ For direct OpenVMM integration without the
scripts/nvx.pyruntime harness, see Run OpenVMM directly.
Linux / KVM
Requires KVM configured with read/write access to /dev/kvm.
git clone https://github.com/microsoft/nvx.git && cd nvx
python3 scripts/nvx.py download
python3 scripts/nvx.py run
Linux / MSHV
Requires MSHV configured with read/write access to /dev/mshv.
git clone https://github.com/microsoft/nvx.git && cd nvx
python3 scripts/nvx.py download --hypervisor mshv
python3 scripts/nvx.py run --hypervisor mshv
Windows / WHP
Requires Windows Hypervisor Platform enabled.
git clone https://github.com/microsoft/nvx.git; Set-Location nvx
python scripts\nvx.py download
python scripts\nvx.py run
Documentation
Usage
- Setup - Instructions for setting up your environment.
- Build - Instructions for building NVX.
- Run - Instructions for running NVX.
- Benchmark - Instructions for benchmarking NVX.
- Command-line reference - Complete
scripts/nvx.pycommand and option reference. - Rust API - The
aci_edge_sandboxescrate for driving the sandbox lifecycle from Rust. - NVX Rust crate - The
nvx-rscrate that holds the NVX mechanics: the OpenVMM control protocol and the launch, policy lowering, and supervision of NVX microVMs.
Development
- Design - Architecture of the NVX microVM and its single-workload guest runtime.
- Ubuntu guest support - How NVX runs Ubuntu userland on its own kernel.
- Azure Linux guest support - How NVX runs Azure Linux userland on its own kernel.
- Project structure - Overview of the NVX repository layout.
- Continuous integration - Instructions for running and maintaining NVX CI.
- Copilot-driven adversarial testing - Bounded adaptive stress and containment campaigns.
- Package and source delivery - Instructions for packaging and distributing NVX.
- Contributing - Guidelines for contributing to NVX.
- OpenVMM upstream roadmap - Plan for upstreaming the OpenVMM fork’s microVM commits.