📈 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

Linux virtual machine that runs entirely in the browser via WebAssembly, hosting the source for webvm.io.

Why you might care

Gives you an unmodified Debian environment with native dev toolchains in a browser tab, with no server or setup required. Built on the CheerpX x86-to-WebAssembly engine, and supports Tailscale networking for reaching private networks from the VM.

Categories

Alternatives

jslinuxv86Docker Playground
+1
stars, 24h · #13,855
+14
stars, 7 days · #9,713
+~20
stars, 30 days · #22,057
17k
★ total · +0% this week
3.3k
forks · 12 open issues

Star history (as recorded here)

2026-10-20 · 17,440 ★ 2026-10-23 · 17,442 ★
LanguageSvelte
LicenseApache-2.0
Created2022-01-31 (4y ago)
Last push16d ago
Watchers109
OwnerOrganization

Seen on GitHub Trending

  • 2026-10-23 — #1 daily in svelte · +2 ★
  • 2026-10-23 — #7 weekly in svelte · +14 ★
  • 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

Blurb generated by claude-haiku-5-5 today. Star deltas marked ~ are extrapolated from partial history.