$ JIT engine
~2–4× over interpreted
Translates x86 to WebAssembly on the fly; hot blocks stay cached so loops run near-native.
// ~/zerovm $ ./boot --headline
ZeroVM is a full x86 virtualization sandbox that boots unmodified Linux binaries client-side — no plugins, no install, no backend VMs. Untrusted code executes inside the browser's WASM sandbox on the end user's device, so it never touches your servers and their data never leaves the machine. Drop in the SDK and you have a Linux box on a web page in under ten lines.
Boots Debian to a shell in <900ms · JIT x86→WASM · runs offline after first load.
// ~/zerovm $ man architecture
Zero-trust isn't a policy you bolt on. It's the architecture. Your page hands a binary to the sandbox; everything after that boundary runs on your user's hardware. There is no network path back to your servers — by construction, not by configuration.
// ~/zerovm $ ls -la /capabilities
~2–4× over interpreted
Translates x86 to WebAssembly on the fly; hot blocks stay cached so loops run near-native.
persists across reloads
A copy-on-write overlay over a read-only base image; writes land in IndexedDB and survive refreshes.
50MB+, streamed on demand
Boot from a remote rootfs without downloading it whole; blocks fetch lazily as the VM reads them.
WebSocket / tunnel
Outbound networking via a WebSocket gateway or Tailscale-style tunnel — opt-in, off by default.
snapshot & resume
Freeze a running machine to disk and resume it later, exactly where the user left off.
real PTY + ANSI
A complete pseudo-terminal: job control, signals, colors, and curses apps just work.
// ~/zerovm $ cat example.{js,ts,jsx}
Install the SDK, point it at a disk image, run a binary, and pipe it to your terminal of choice. That's the whole integration.
import { ZeroVM } from "@zerovm/sdk";
const vm = new ZeroVM({ image: "https://cdn.zerovm.io/debian-12.img" });
await vm.boot(); // streams + JITs on demand
const term = vm.attach(document.getElementById("term"));
await vm.run("/bin/bash", { tty: term }); // a real shell, on the user's machine
import { ZeroVM, BootOptions } from "@zerovm/sdk";
const opts: BootOptions = { image: "https://cdn.zerovm.io/debian-12.img" };
const vm: ZeroVM = new ZeroVM(opts);
await vm.boot(); // streams + JITs on demand
const term = vm.attach(document.getElementById("term")!);
await vm.run("/bin/bash", { tty: term }); // a real shell, on the user's machine
import { useZeroVM } from "@zerovm/react";
export function Sandbox() {
const { ref, ready } = useZeroVM({ image: "/debian-12.img", boot: "/bin/bash" });
return <div ref={ref} className="term" data-ready={ready} />;
}
// ~/zerovm $ ps aux | grep use-case
// ~/zerovm $ ./bench --honest
<900ms
cold boot to interactive shell
~2–4×
JIT throughput vs. interpreted x86
0 bytes
of user data sent to our servers
* Measured on an M2 / Chrome 124 with a warm CDN cache, from page load to an interactive shell prompt.
// ~/zerovm $ cat /security/posture.md
We don't claim certifications we don't hold yet.