Examples you can run in this tab.
Eight small projects across NanoVM's four runners — Node.js on the host JS engine, BusyBox on the RISC-V VM, a wasm32-wasip1 CLI and the Boa sandbox. Each page explains the example, shows its source and runs it end to end when you press Run. Nothing is downloaded before that.
All examples
Hello, Node.js — in the browser
Pure Node.js, zero dependencies — run with nano.node() in this tab.
node · host JS engineOpen and run →cli-toolkitAn npm-package CLI (commander + chalk) on the real Node.js
commander + chalk from a lockfile, run by the real Node.js on the RISC-V VM.
riscv · RISC-V VMOpen and run →json-apiA Node.js HTTP server + dashboard, previewed in the page
A Node http server with a JSON API, previewed in an iframe.
node · host JS engineOpen and run →react-studioA Vite-built React 19 app, served from NanoVM
React 19 + Vite build, served by Node into a live preview.
node · host JS engineOpen and run →flow-studioReact Flow + Tailwind + shadcn/ui, served from NanoVM
React Flow + Tailwind v4 + shadcn/ui, built with Vite, served by Node.
node · host JS engineOpen and run →photonImage processing with a wasm32-wasip1 CLI
A Rust image CLI on the wasm runner: JPEG in, filtered PNG out.
wasm · wasm32-wasip1Open and run →boa-sandboxSandboxed JavaScript with capability grants (Boa)
Untrusted JS in the Boa interpreter, with explicit capability grants.
boa · sandboxed JSriscv · RISC-V VMOpen and run →cross-tierThree runners, one filesystem: a cross-tier handoff
Node writes, BusyBox on RISC-V reads, Boa reads — one shared VFS.
node · host JS engineriscv · RISC-V VMboa · sandboxed JSOpen and run →Built from source, checked in CI.
Every example lives in demos/<id>/ of the website repository. Dependencies are pinned by each example's package-lock.json; the files the pages load from /demo-files/<id>/ are generated from those sources, and a fresh build must match them byte for byte.
# in a checkout of the website repo
npm ci
npm run demos:build # npm ci + build every demos/<id>/ → public/demo-files/<id>/
npm run demos:verify # fresh install + build, compared with the committed output