📈 GH Trending Explorer 🎲 Surprise me

← all repos

leaningtech / webvm

git clone https://github.com/leaningtech/webvm.git ext2_image · 3y ago 🔥 on GitHub Trending today

Virtual Machine for the Web

+1
stars, 24h · #7,671
+~7
stars, 7 days · #8,337
+~30
stars, 30 days · #14,302
17k
★ total · +0% this week
3.3k
forks · 12 open issues

Star history (as recorded here)

2026-10-20 · 17,440 ★ 2026-10-22 · 17,441 ★
LanguageSvelte
LicenseApache-2.0
Created2022-01-31 (4y ago)
Last push15d ago
Watchers109
OwnerOrganization

Seen on GitHub Trending

  • 2026-10-22 — #6 daily in svelte · +1 ★
  • 2026-10-21 — #2 daily in svelte · +2 ★
  • 2026-10-20 — #2 daily in svelte · +4 ★

GitHub topics

Links

README excerpt
# WebVM
This repository hosts the source code for https://webvm.io, a Linux virtual machine that runs in your browser.
Try out the new Alpine / Xorg / i3 graphical environment: https://webvm.io/alpine.html
## What is WebVM?
WebVM is a server-less virtual environment running fully client-side in HTML5/WebAssembly. It's designed to be Linux ABI-compatible and runs an unmodified Debian distribution including many native development toolchains.
WebVM is powered by the **CheerpX** virtualization engine, which provides:
- x86-to-WebAssembly JIT compiler
- Virtual block-based file system
- Linux syscall emulator
- Safe, sandboxed client-side execution
## Table of Contents
- Networking
- Development & Customization
 - Deploy to GitHub Pages
 - Local Serving & Image Configuration
- Claude AI Integration
- Community & Support
- Learn More
- License
> [!NOTE]
> Visit https://webvm.io to get started immediately in your browser. No setup required.
>
> For local setup, custom image builds, and fork/deploy guidance, see Development & Customization.
## Networking
WebVM supports **Tailscale** integration. So your browser VM can reach your private network and, with an exit node, the public internet too.
> [!NOTE]
> Some low-level networking operations (especially ICMP used by `ping`) are not currently available in this environment. For connectivity checks, use `curl` or `wget`.
### Local network
1. Open the "Networking" panel from the sidebar
2. Click "Connect to Tailscale"
3. Log in (create a free account at tailscale.com if needed)
4. Click "Connect" when prompted
WebVM now has access to all machines in your Tailscale network!
### Internet Usage Tips
> [!TIP]
> On slower connections there may be a short delay before initialisation. Connection status is shown as a colored dot on the button: orange = local network, green = global/internet. The button text shows your Tailscale IP address once connected.
To access the public internet from WebVM, set up an **Exit Node** on another device in your Tailscale network:
1. Follow the Tailscale Exit Node quickstart (sections: "Advertise a device as an exit node")
2. WebVM automatically uses the exit node once advertised
### Using an Auth Key
As an alternative to interactive login, add your Tailscale auth key to the URL fragment:
 [code] 
This is equivalent to Tailscale's `--login-server` option.
> [!TIP]
> If you also need a custom control server, add `controlUrl` in the same URL fragment and separate values with `&`, for example: `#authKey=...&controlUrl=...`.
### Self-Hosting Tailscale with Headscale
We also support headscale, a selfhosted open source implementation of the Tailscale control server.
Because Headscale does not add CORS headers by default, you will need a proxy in front of it. See the Headscale reverse proxy setup docs for an example.
Once ready, add the following line to your `location /` block in your nginx config file.
 [code] 
Then access WebVM with:
 [code] 
## Development & Customization
> [!NOTE]
> Us