Construir SandpackVM: Cómo construir una máquina virtual ligera

Descubre cómo crear una máquina virtual ligera con SandpackVM. Aprende a construir y optimizar tu propio entorno virtual paso a paso.

28 oct 2025 • 3 min de lectura • Equipo Q2BSTUDIO

Construyendo SandpackVM: Cómo crear una máquina virtual ligera

TL;DR Estoy construyendo SandpackVM, una máquina virtual JavaScript ligera que permite que Workers aislados invoquen funciones del host de forma segura usando funciones proxy, TypeScript y mensajería asíncrona. En este artículo explico cómo convertí una limitación técnica en un patrón de diseño práctico.

El problema que lo inició todo es común: cuando ejecutas código no confiable en un playground, un sistema de plugins o un REPL no puedes simplemente pasar funciones del proceso padre al sandbox. Workers y worker_threads serializan datos pero no pasan closures ni funciones. La comunicación se reduce a mensajes y serialización, lo que complica mucho la experiencia de desarrollo.

La idea central de SandpackVM fue sencilla: si no podemos enviar funciones, vamos a simularlas. Creamos funciones proxy dentro del Worker que convierten llamadas locales en mensajes postMessage hacia el host. El host actúa como un enrutador RPC que ejecuta la función real, captura resultados o errores y responde al Worker para resolver o rechazar Promises.

Por qué TypeScript. Construir una VM exige control de tipos, contratos de API y experiencia de IDE. TypeScript aporta seguridad en tiempo de compilación y documentación implícita de las interfaces públicas, además de generar JavaScript limpio que corre en cualquier entorno.

Arquitectura de alto nivel: el código del usuario en el Worker llama await log(hello). Esa llamada invoca una función proxy que crea un ID único, registra resolvers en pendingCalls y envía un mensaje al padre. El proceso padre recibe el mensaje, ejecuta la función real registrada en apis, y responde con un mensaje que contiene resultado o error. El Worker recibe la respuesta y resuelve la Promise correspondiente. Así se mantiene aislamiento con un puente controlado.

Implementación por pasos. Paso 1: generar dinámicamente el código proxy para cada API disponible. Paso 2: en el proceso padre escuchar los mensajes tipo apiCall, localizar la función en el mapa de apis y ejecutar con manejo de errores, luego enviar apiResult con resultado o error. Paso 3: en el Worker escuchar apiResult y resolver o rechazar la llamada pendiente. Con este protocolo se crea un canal RPC asíncrono robusto sobre postMessage.

Principios que surgieron. 1 Asincronía no es negociable: la frontera exige promesas, por eso todas las APIs expuestas son awaitables. 2 El patrón proxy es clave: facilita control de acceso, observabilidad, validación de argumentos y trazabilidad mediante IDs únicos. 3 Comunicación basada en Promises es clara y elegante: cada llamada es simplemente una Promise con un canal lateral para la respuesta.

Qué puede mejorar: APIs anidadas como fs.readFile, cuotas de recursos para CPU y memoria, capa de observabilidad para timeline y métricas, protección contra bucles infinitos mediante heartbeats y límites y endurecimiento de seguridad para bloquear fetch, importScripts o acceso a filesystem no autorizado.

Aplicaciones reales. Este enfoque es crucial en documentación interactiva, sistemas de plugins, agentes de IA que ejecutan código generado por usuarios, entornos educativos con REPLs aislados y sandboxes de desarrollo en la nube. SandpackVM facilita ejecutar snippets arbitrarios sin perder flexibilidad ni seguridad.

Sobre Q2BSTUDIO. En Q2BSTUDIO somos una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, con experiencia en inteligencia artificial, ciberseguridad y servicios cloud aws y azure. Diseñamos soluciones seguras y escalables que integran servicios de inteligencia de negocio y Power BI para ofrecer analítica avanzada. Si buscas crear una solución a medida para tu negocio descubre nuestro servicio de desarrollo de aplicaciones a medida y conoce cómo aplicamos técnicas de sandboxing y ejecución segura en entornos productivos. También ofrecemos consultoría en inteligencia artificial para empresas, agentes IA y automatización para mejorar procesos y reducir riesgos.

Palabras clave integradas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.

Conclusión. SandpackVM demuestra que el aislamiento y la conectividad no son incompatibles. Con proxies, mensajería asíncrona y tipos claros podemos ofrecer una experiencia de sandbox que es segura, observable y extensible. Si quieres hablar sobre cómo aplicar estas ideas en tu proyecto o explorar servicios de ciberseguridad o integración cloud, en Q2BSTUDIO podemos ayudarte a diseñar la arquitectura adecuada.

¿UNA PAUSA?

Juega un momento antes de irte

NUESTROS SERVICIOS

Cómo podemos ayudarte

Inteligencia artificial

Agentes de IA, chatbots y asistentes inteligentes que automatizan tareas y atienden a tus clientes 24/7 para mejorar la eficiencia de tu negocio.

Más info

Desarrollo de software

Aplicaciones web, móviles y de escritorio, intranets, e-commerce, SaaS y plataformas de gestión diseñadas para las necesidades concretas de tu empresa.

Más info

Servicios cloud

Migración, infraestructura, hosting gestionado, alta disponibilidad y seguridad en Microsoft Azure y Amazon Web Services para que tu negocio escale sin límites.

Más info

Ciberseguridad y pentesting

Auditorías de seguridad, test de intrusión (pentesting) y protección de aplicaciones, datos e infraestructura on-premise y cloud, con hacking ético y cumplimiento normativo.

Más info

Business Intelligence

Cuadros de mando y análisis de datos con Power BI: integramos tus fuentes, diseñamos dashboards y KPIs y convertimos tus datos en decisiones.

Más info

Automatización de procesos

Automatizamos tareas repetitivas y conectamos tus aplicaciones con n8n, Power Automate, Make y RPA, eliminando trabajo manual y aumentando la productividad.

Más info

Formación para empresas

Formamos a tus equipos en tecnología con criterio: desarrollo web, bases de datos, Git, buenas prácticas y seguridad, automatización con n8n, inteligencia artificial para empresas y creación de soluciones de IA con Azure AI Foundry.

Más info

Auditoría de código

Auditamos el código que creas tú, tu equipo o una IA: te decimos qué está bien y qué mejorar, lo securizamos y lo dejamos listo para producción, web o app.

Más info

Generación de imágenes con IA

Creamos por ti las imágenes que necesita tu negocio con inteligencia artificial: producto, redes, publicidad, ilustración y avatares. Tú nos dices qué quieres y te lo entregamos listo para usar.

Más info

Generación de vídeos con IA

Creamos por ti vídeos con inteligencia artificial: promocionales, para redes, presentadores virtuales, doblaje y animaciones. Nos cuentas la idea y te lo entregamos montado y listo para publicar.

Más info

Avatares conversacionales con IA

Creamos avatares conversacionales con IA —humanos digitales con cara y voz— que atienden a tus clientes y equipos con el conocimiento de tu empresa, en tu web, monitores interactivos, WhatsApp o Teams.

Más info

Marketing Online e IA

Google Ads, Meta Ads, LinkedIn Ads y posicionamiento en motores de IA (GEO/AEO): captamos clientes y hacemos que tu marca aparezca donde te buscan, también en ChatGPT, Gemini y Perplexity.

Más info

¿Tienes un proyecto en mente?

Cuéntanos tu visión y la convertimos en una solución de software. Sea cual sea el alcance, hacemos realidad tu idea.