NanoVM
A multi-tier platform for running programs in the browser — no server required. A shared kernel routes each program to the right runner: an RV64GC RISC-V Linux VM, Node.js on the host engine, wasm32-wasip1 commands, or sandboxed JS.
NanoVM is a shared kernel (a bus, a virtual filesystem, a process router, networking, capabilities and services) plus a set of peer runners that each execute one kind of program on a different engine. The historic RISC-V VM is one of those runners — the slow, high-fidelity oracle the faster tiers are validated against.
The runners
- riscv — RV64 ELF (busybox, node) on an emulated CPU (Rust → wasm). The fidelity oracle; slow but exact.
- node — Node.js on the host JS engine. Trusted and fast.
- wasm — wasm32-wasip1 commands on the host wasm engine. Capability-scoped and fast.
- boa — untrusted JS on the Boa interpreter (Rust → wasm). Sandboxed.
Runners are peers: each imports only from the kernel and never from another runner — cross-tier work goes through the router, the bus and the shared VFS.
What the RISC-V runner runs
- BusyBox — echo, cat, ls, sort, grep, head, tail and the rest of the coreutils.
- Node.js v25 — a full runtime with require, fs, path, crypto, http, streams, Buffer, EventEmitter and async/await.
- The npm toolchain — the TypeScript compiler, ESLint and Prettier, all unmodified.
It emulates an RV64GC RISC-V CPU with roughly eighty Linux syscalls — enough of the kernel surface to load real ELF binaries and execute them unmodified, instruction by instruction — handling memory management (brk / mmap), file I/O via an in-memory POSIX filesystem, sockets, epoll, timerfds, futex-based threading and ELF loading, all behind a minimal host boundary.
Where to go next
- New here? Start with the Quick start.
- Embedding it in a web app? The SDK (@userland-run/nano-sdk) is the supported way in — start with the SDK overview.
- Just want Node in the browser? See running Node.js + dev tools in the browser.
- Building on the RISC-V VM directly? See the CLI & JS API and Host API.
- Curious how it works? Read the Architecture page for the platform shape, then the RISC-V runner, Syscalls and Performance pages.