A HarmonyOS app that runs a full arm64 Linux environment with an Alpine shell on phones, tablets and 2in1/PC devices.
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
Clone the repository
git clone https://github.com/leaningtech/webvm.git - 2
Install dependencies
npm install - 3
Build the project
npm run build - 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
Warp is an agentic development environment built out of the terminal, with a built-in coding agent or support for your own CLI agents.
Termux is an Android terminal app and Linux environment that runs a shell with installable packages on your phone.
Fast, native, feature-rich terminal emulator with platform-native UIs and GPU rendering, plus a libghostty library for embedding terminals.
An open-source, AI-integrated terminal for macOS, Linux and Windows that supports BYOK and local models, durable SSH sessions and inline file previews.
A terminal UI for Linux that lists listening network ports and lets you inspect or kill the owning processes.