Skip to content

Run Linux programs in a browser tab

The OxideVM SDK runs unmodified x86-64 Linux programs, such as shells, Node.js, Bun and Python, inside the browser tab of your own web app. No server runs your users’ code: the programs, their files and their processes live in your users’ browsers.

You choose one of two modes. Userspace runs Linux programs directly, without booting a kernel, so a shell is ready almost at once. System boots an unmodified Linux kernel on the same engine. Your app always names the mode, and the SDK never switches to the other one on its own.

This is a real Linux shell running in this page. Nothing downloads until you press the button.

Linux shellUserspaceNot started
oxidevm:~$ uname -m && node --versionx86_64v24.18.1oxidevm:~$ 
Downloads Linux into this tab when you click.

Once it’s running, type any command. Good first tries are ls / and cat /etc/os-release.

Create a VM, write a file into its workspace and read it back with a Linux program:

main.ts
import { createVM } from "@oxidevm/sdk";
const vm = await createVM({ mode: "userspace", runtime: { hosting: "frame" } });
try {
await vm.workspace.writeText("hello.txt", "Hello from Linux\n");
const result = await vm.exec({ command: "cat", args: ["hello.txt"] });
console.log(new TextDecoder().decode(result.stdout)); // Hello from Linux
} finally {
await vm.dispose();
}

runtime: { hosting: "frame" } runs the engine in a hidden frame from https://run.oxidevm.dev, so your site serves only your own app. createVM resolves when the VM is ready, so files and processes work right away. The quickstart sets this up in an app from the first install.

Userspace System
mode "userspace" "system"
What runs Linux x86-64 programs, without a kernel An unmodified Linux kernel and its programs
Start A shell is ready almost at once Boots Linux first
Files, processes, terminals Yes Yes
Restore points Yes Yes

Choosing a mode explains when to use which.

  • Quickstart: install the SDK, serve the right headers and run your first command.
  • Run commands: short commands with exec, long-running ones with spawn.
  • Examples: small, complete apps built on the SDK.