Mientras medio mundo mueve sus cargas a la nube, otro frente muy interesante avanza en sentido contrario: llevar entornos completos de ejecución al navegador, sin servidores, sin instalación y sin plugins. Ahí es donde encaja WebVM, un proyecto open source que permite ejecutar una distribución Linux x86 completa directamente en el navegador usando WebAssembly.
No es un “terminal simulado” ni una demo limitada: es una máquina virtual Linux real, basada en Debian, que corre de forma aislada en el cliente y es capaz de ejecutar binarios x86 sin modificar.
¿Qué es exactamente WebVM?
WebVM es un entorno virtual 100 % del lado del cliente, escrito en HTML5/WebAssembly, diseñado para ser compatible a nivel de ABI con Linux.
En la práctica, esto significa que:
- Se ejecuta en cualquier navegador moderno.
- No necesita backend propio para la ejecución (no hay servidor que procese tus comandos).
- Carga una imagen de disco (por ejemplo, un Debian “mini”) y la ejecuta sobre un motor de virtualización en WebAssembly.
- Puedes usar herramientas nativas de desarrollo (compiladores, utilidades, shells…) como si estuvieras en una máquina Linux real.
La pieza clave es CheerpX, el motor de virtualización desarrollado por Leaning Technologies, que incluye:
- Un JIT x86 → WebAssembly.
- Un sistema de ficheros virtual basado en bloques.
- Un emulador de syscalls de Linux.
Sobre esta base se construye WebVM, que ofrece la interfaz web, el terminal y el resto de componentes alrededor de esa VM “embebida” en el navegador.
Red en el navegador: integración con Tailscale (y headscale)
Uno de los grandes retos de ejecutar máquinas virtuales dentro del navegador es la conectividad de red, porque los navegadores no permiten usar TCP/UDP de forma directa.
WebVM resuelve esto integrándose con Tailscale, una red VPN basada en WireGuard que, en este caso, aprovecha WebSockets como capa de transporte. El flujo es:
- Abres el panel de “Networking” en WebVM.
- Pulsas “Connect to Tailscale”.
- Inicias sesión con tu cuenta (o usas una auth key).
- Una vez conectado, la VM del navegador forma parte de tu red Tailscale.
Con este enfoque puedes:
- Acceder a máquinas de tu propia red privada Tailscale.
- Enrutar tráfico a Internet a través de un exit node.
- Usar también headscale, la implementación open source del servidor de control de Tailscale, añadiendo
#controlUrl=<tu-url>a la URL de WebVM.
Para automatizar el alta, es posible añadir un authKey en el fragmento de la URL:
https://webvm.io/#authKey=<tu-clave>
Lenguaje del código: HTML, XML (xml)
(Se recomienda que la clave sea efímera.)
Es decir, tu “Linux del navegador” puede hablar con tu infraestructura real de forma controlada y segura.
Fork, despliegue y personalización: WebVM en tu propia infraestructura
Aunque existe la instancia pública en webvm.io, el proyecto está pensado para que cualquiera pueda clonarlo, desplegarlo y personalizarlo fácilmente:
- Fork en GitHub del repositorio
leaningtech/webvm. - Activar GitHub Pages con el workflow de Actions incluido.
- Ejecutar el workflow “Deploy” para que genere la build y la publique en tu página.
- A partir de ahí, puedes modificar:
- Los Dockerfiles (por ejemplo
dockerfiles/debian_mini). - La imagen de disco usada.
- El comando por defecto que se ejecuta dentro de la VM.
- Los Dockerfiles (por ejemplo
Si quieres ir un paso más allá, puedes descargar y servir localmente una imagen de disco Debian “mini”:
- Descargas la imagen
.ext2. - Editas
config_public_terminal.jspara que apunte a tu ruta local (/disk-images/...ext2) y cambias el tipo de disco a"bytes". - Compilas el frontend con
npm install+npm run build. - Configuras Nginx para servir tanto la build como las imágenes de disco.
Resultado: tu propio WebVM local accesible, por ejemplo, en http://127.0.0.1:8081.
Ejemplo práctico: convertir WebVM en un REPL de Python
Una de las ventajas del diseño basado en Dockerfiles es que puedes orientar la VM a casos de uso concretos simplemente cambiando el comando por defecto.
El README propone un ejemplo mínimo: transformar la VM en un REPL de Python 3. Basta con modificar la línea CMD del Dockerfile de Debian mini, pasando de:
CMD [ "/bin/bash" ]
Lenguaje del código: CSS (css)
a:
CMD [ "/usr/bin/python3" ]
Lenguaje del código: CSS (css)
Con este cambio, la “consola” de WebVM ya no abre un shell Bash, sino un intérprete de Python 3 listo para uso inmediato. Ideal para:
- Enseñar programación en un entorno totalmente aislado.
- Ofrecer labs interactivos sin instalaciones locales.
- Crear demos embebibles para webs o plataformas educativas.
Integración con Claude AI desde WebVM
Otro punto interesante es que WebVM ya documenta cómo integrarse con Claude AI (Anthropic) desde la propia interfaz:
- El usuario obtiene una API key desde el Anthropic Console.
- Dentro de WebVM, abre el panel de integración (icono del robot).
- Introduce la clave, que se almacena solo en el navegador del usuario.
- A partir de ahí, puede lanzar tareas del tipo:
“Solve the CTF challenge at
/home/user/chall1.bin. Note that the binary reads from stdin.”
De este modo, la combinación WebVM + Claude permite crear escenarios de:
- CTF y formación en seguridad donde la IA ayuda a analizar binarios dentro de la VM.
- Asistentes de programación que trabajan directamente contra el entorno Linux del navegador.
Todo ello manteniendo clave y lógica en el lado del cliente.
Casos de uso: de la educación al hacking controlado
WebVM abre un abanico de usos muy atractivo para desarrolladores, docentes y equipos de seguridad:
- Laboratorios educativos
Talleres de Linux, scripting, redes o compilación sin pedir al alumnado que instale nada. Solo un navegador moderno. - CTF y retos de seguridad
Distribuir binarios, desafíos y herramientas dentro de una VM en el navegador, con aislamiento fuerte y sin exponer tu infraestructura. - Demos técnicas y documentación viva
Mostrar ejemplos ejecutables directamente desde documentación o landing pages técnicas: “abre esta terminal y prueba”. - Homelabs y pruebas rápidas
Lanzar una Debian mini desde el navegador para probar comandos, herramientas o scripts, sin tocar el sistema local. - Entornos de experimentación en empresas
Permitir que empleados experimenten con herramientas Linux sin darles acceso directo a servidores internos.
Licencia y modelo de uso
WebVM se distribuye bajo Apache 2.0, lo que permite:
- Usar el código.
- Modificarlo.
- Redistribuirlo, también de forma comercial, respetando la licencia.
Sin embargo, el despliegue público de CheerpX (el motor de virtualización que hay debajo) tiene matices importantes:
- La instancia pública está disponible “tal cual” para exploración tecnológica, pruebas y uso individual.
- Cualquier otro uso por parte de organizaciones (empresas, universidades, sector público, etc.) requiere licencia comercial.
- Descargar un build de CheerpX para alojarlo por tu cuenta no está permitido sin esa licencia.
Si se quiere construir un producto sobre CheerpX/WebVM, Leaning Technologies invita a contactar directamente con ellos: [email protected].
Un Linux “de bolsillo” en cada pestaña
En un momento en que los navegadores son prácticamente un sistema operativo dentro del sistema operativo, WebVM demuestra hasta qué punto se puede llegar con WebAssembly y virtualización en cliente: un Linux completo, ejecutando binarios x86 reales, dentro de una pestaña.
Para desarrolladores, docentes o equipos de seguridad, supone una forma elegante de desplegar entornos reproducibles, aislados y fácilmente accesibles, manteniendo el control sobre el código y sin comprometer el equipo local. Un proyecto a seguir muy de cerca para cualquiera que esté explorando nuevos modelos de distribución de herramientas y laboratorios técnicos en la web.