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)
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
- GitHub: github.com/leaningtech/webvm
- Homepage: https://webvm.io
- Releases · Issues · Hacker News mentions
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