WebVM is a server-less virtual Linux environment running client-side

Architecture & Networking

  • WebVM runs x86 Linux userland binaries in the browser via CheerpX, which emulates Linux syscalls (ring 3 only), not a full kernel.
  • Networking is implemented via Tailscale plus an embedded lwIP stack; some glue code is not yet open-sourced.
  • This approach avoids needing a traditional network interface in the browser and works with custom headscale/DERP setups.
  • It supports fork() (e.g., bash works), but /proc is not fully available (uptime fails, /proc must be mounted).

Performance

  • Mixed impressions: some users say it feels sluggish and “slow and sluggish for interactive use.”
  • Benchmarks show it can outperform other in-browser VMs (e.g., Mandelbrot, Python loop vs v86), but others see very slow Node.js execution for trivial scripts.
  • Some report it being “ungodly slow” on Apple Silicon.

Use Cases & Roadmap

  • Suggested use cases: education, live docs and sandboxes, preservation of historical software/games, running legacy Windows apps, and dev environments for web IDEs.
  • GUI support is actively being worked on, with plans for a full desktop environment and later 3D graphics.
  • Some imagine future browser-as-container-platform scenarios; WebVM images can already be built from Dockerfiles via a GitHub Action.

UX & Browser Support

  • Several reports of unreliable keyboard input and screen freezes; sometimes resolved by pressing backspace.
  • Copy/paste is tricky due to Ctrl-C mapping to SIGINT. Menu-based copy works; paste via Ctrl+Shift+V; alternative shortcuts (Insert-based) are discussed.
  • Mobile support is inconsistent: some browsers work, others duplicate keystrokes or fail to respond, and detection/error messaging for unsupported setups is requested.

Persistence & Offline Behavior

  • Filesystem state is cached client-side via IndexedDB and persists across reloads until cleared by the user.
  • Full offline use is limited by the need to avoid downloading the full ~2GB disk image.

Licensing, Openness & Alternatives

  • Core engine (CheerpX) is not open source and cannot currently be self-hosted, which disappoints some; free use is limited to non-commercial exploration.
  • Other in-browser VMs/emulators (v86, JSLinux, PCjs, Mac emulators, WebContainers) are mentioned for comparison.

Other Questions & Limitations

  • Root password is trivial (“password”).
  • man is missing; apt-get install of extra packages can hang.
  • Running containers inside WebVM, NFS/network filesystems, and browser-exposed webservers are discussed but remain largely exploratory/unclear.