Repolode
leaningtech

leaningtech/webvm

A Linux virtual machine that runs entirely in the browser, using CheerpX to execute x86 code via WebAssembly.

Stars
17,441
Forks
3,339
Open issues
12
Last commit
14 days ago

What is it?

WebVM is a server-less Linux virtual environment that runs fully client-side in HTML5 and WebAssembly. It is designed to be Linux ABI-compatible and runs an unmodified Debian distribution, including many native development toolchains, directly in a browser tab.

The virtual machine is powered by the CheerpX engine, which provides an x86-to-WebAssembly JIT compiler, a virtual block-based file system, a Linux syscall emulator, and sandboxed client-side execution. The web interface uses xterm.js as its terminal emulator.

The repository hosts the source for webvm.io and supports forking to GitHub Pages or building custom ext2 disk images from a Dockerfile. It also offers Tailscale networking, with optional exit nodes and self-hosted Headscale control servers, and a Claude AI integration panel.

Key features

  • 01Runs an unmodified Debian distribution in the browser via x86-to-WebAssembly translation.
  • 02Provides a virtual block-based file system and Linux syscall emulation.
  • 03Integrates Tailscale networking, including exit nodes and Headscale support.
  • 04Lets you build custom ext2 disk images from a Dockerfile and deploy them to GitHub Pages.
  • 05Includes a Claude AI integration panel that stores the API key locally in the browser.

Use cases

  • Trying out a Linux shell or development toolchain without installing anything locally.
  • Building a browser-based REPL, such as a Python environment, from a custom Dockerfile.
  • Hosting an interactive Linux demo or tutorial environment on a static site.
  • Experimenting with CTF challenges in an isolated sandbox.

Quick start

  1. 1

    Clone the repository

    git clone https://github.com/leaningtech/webvm.git
  2. 2

    Install dependencies

    npm install
  3. 3

    Build the project

    npm run build
  4. 4

    Start Nginx and open WebVM at http://127.0.0.1:8081 (after placing a disk image in custom-disk-images/)

    nginx -p . -c nginx.conf

Things to know

  • The public CheerpX deployment is free only for individuals and exploration; organizations need a commercial license.
  • Some low-level networking such as ICMP ping is not available inside the VM.
  • Users have root privileges by default and sudo is not installed.

Topics

FAQ

What is webvm?
A Linux virtual machine that runs entirely in the browser, using CheerpX to execute x86 code via WebAssembly. WebVM is a server-less Linux virtual environment that runs fully client-side in HTML5 and WebAssembly. It is designed to be Linux ABI-compatible and runs an unmodified Debian distribution, including many native development toolchains, directly in a browser tab.
Is webvm free to use? What license does it have?
webvm is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
Is webvm still maintained?
Actively maintained. The last commit to webvm was on Oct 7, 2026.
What can I use webvm for?
Trying out a Linux shell or development toolchain without installing anything locally. Building a browser-based REPL, such as a Python environment, from a custom Dockerfile. Hosting an interactive Linux demo or tutorial environment on a static site. Experimenting with CTF challenges in an isolated sandbox.
How do I install webvm?
Clone the repository: git clone https://github.com/leaningtech/webvm.git Install dependencies: npm install Build the project: npm run build Start Nginx and open WebVM at http://127.0.0.1:8081 (after placing a disk image in custom-disk-images/): nginx -p . -c nginx.conf
Where can I get webvm?
The source code and installation instructions are on GitHub: https://github.com/leaningtech/webvm

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects