- Sandbox ligero para la ejecución de código de agentes de IA, que ofrece una velocidad de arranque 100 veces mayor y una eficiencia de memoria entre 10 y 100 veces superior frente a los contenedores
- Basado en la tecnología de isolates del motor JavaScript V8, inicia en pocos milisegundos y usa solo unos pocos megabytes, lo que permite crear y descartar un sandbox nuevo en cada solicitud
- Con el enfoque Code Mode, donde el agente escribe y ejecuta código TypeScript directamente en lugar de hacer llamadas a herramientas, el uso de tokens se reduce hasta en un 81%
- También ofrece bibliotecas de seguridad y utilidades como filtrado HTTP, inyección de credenciales y sistema de archivos virtual, para construir un ecosistema de desarrollo de agentes
- Supera los límites de costo, latencia y escalabilidad de los sandboxes basados en contenedores, habilitando una transición de infraestructura que hace posibles los servicios de agentes a escala de consumo
Antecedentes: el problema de seguridad en la ejecución de código por agentes
- Para que un agente (o un servidor MCP) ejecute código generado al instante por una IA, ese código debe ejecutarse en un entorno seguro
- Si se ejecuta directamente dentro de la app con
eval(), un usuario malicioso puede insertar vulnerabilidades mediante prompt injection
- Se necesita un sandbox aislado de la aplicación y del mundo exterior, y solo se deben permitir las funciones específicas a las que el código necesita acceder
Limitaciones del enfoque tradicional con contenedores
- Actualmente, la mayor parte de la industria usa contenedores basados en Linux como sandbox
- Los contenedores tardan cientos de milisegundos en arrancar y consumen cientos de megabytes de memoria al ejecutarse
- Para evitar latencia, es necesario mantenerlos en estado warm, y reutilizar un contenedor existente para múltiples tareas reduce la seguridad
- A escala de consumo, donde cada usuario final tiene un agente y cada agente escribe código, los contenedores no son suficientes
Dynamic Worker Loader: sandbox ligero
- API que permite que un Cloudflare Worker genere al instante un nuevo Worker dentro de su propio sandbox, especificando el código en tiempo de ejecución
- Se presentó como función experimental el pasado septiembre en una publicación sobre Code Mode, y ahora está disponible en beta abierta para todos los usuarios pagos de Workers
- Al crear un Worker, el código se define con
compatibilityDate, mainModule y modules, se pasan stubs de RPC con env, y con globalOutbound se puede bloquear o interceptar el acceso a Internet
100 veces más rápido
- Dynamic Workers se basa en V8 isolates, el mismo mecanismo de sandboxing que la plataforma Cloudflare Workers ha usado durante 8 años
- Un isolate es una instancia del motor de ejecución JavaScript V8 que también usa Google Chrome
- Arranca en pocos milisegundos y usa unos pocos megabytes de memoria, por lo que es unas 100 veces más rápido y entre 10 y 100 veces más eficiente en memoria que un contenedor
- Es posible crear un isolate nuevo para cada solicitud de usuario, ejecutar un fragmento de código y descartarlo después
Escalabilidad ilimitada
- Muchos proveedores de sandboxes basados en contenedores imponen límites al número global de sandboxes concurrentes y a la velocidad de creación
- Dynamic Worker Loader no tiene esas limitaciones porque es una API de la misma tecnología que ha impulsado la plataforma
- Puede procesar millones de solicitudes por segundo, cargando en paralelo un sandbox Dynamic Worker separado para cada solicitud
Latencia cero
- Los Dynamic Workers de un solo uso normalmente se ejecutan en la misma máquina y el mismo hilo que el Worker que los creó
- No hace falta comunicarse globalmente para encontrar un sandbox warm; se ejecutan justo donde llega la solicitud
- Es compatible en cientos de ubicaciones globales de Cloudflare
Entorno de ejecución solo para JavaScript
- La única limitación frente a los contenedores es que el agente debe escribir JavaScript
- Técnicamente, Workers también soporta Python y WebAssembly, pero para pequeños fragmentos de código generados al vuelo por un agente, JavaScript carga y se ejecuta mucho más rápido
- Los LLM dominan todos los lenguajes principales, y los datos de entrenamiento de JavaScript son enormes
- Por la naturaleza de la web, JavaScript es un lenguaje diseñado para el sandboxing
API de herramientas definidas con TypeScript
- MCP solo define un esquema plano de llamadas a herramientas, y OpenAPI expresa APIs REST, pero tanto el esquema como el código de llamada son verbosos
- Para las APIs expuestas a JavaScript, TypeScript es la mejor respuesta única
- Las interfaces TypeScript pueden describir una API con precisión usando muchos menos tokens que una especificación OpenAPI equivalente
- El Workers Runtime configura automáticamente un puente Cap'n Web RPC entre el sandbox y el código host, para que el agente pueda invocar la API como si fuera una biblioteca local
Filtrado HTTP e inyección de credenciales
- Con la opción
globalOutbound se puede registrar un callback para todas las solicitudes HTTP, permitiendo inspeccionar, reescribir, inyectar claves de autenticación o bloquear solicitudes
- La inyección de credenciales (token injection) permite agregar credenciales a las solicitudes salientes cuando el agente accede a servicios autenticados por HTTP, de modo que el agente no conozca las credenciales secretas
- Esto es útil cuando APIs conocidas forman parte de los datos de entrenamiento del agente o cuando se ejecutan bibliotecas basadas en APIs REST dentro del sandbox
- Aun así, si no se requiere compatibilidad, la interfaz RPC en TypeScript es mejor que HTTP: consume menos tokens, produce código de llamada más simple y facilita limitar con precisión la superficie de la API
Arquitectura de seguridad probada
- Los sandboxes basados en isolates tienen una superficie de ataque más compleja que las máquinas virtuales de hardware, y los bugs de seguridad de V8 son más frecuentes que los de un hipervisor típico
- Cloudflare tiene cerca de 10 años de experiencia asegurando una plataforma basada en isolates
- Despliega parches de seguridad de V8 en producción en cuestión de horas, más rápido que Chrome
- Aplica una segunda capa de sandbox personalizada y cordonado dinámico de tenants basado en evaluación de riesgo
- Extiende el sandbox de V8 con funciones de hardware como MPK
- Colabora con TU Graz para desarrollar nuevas técnicas defensivas, incluyendo defensas contra Spectre
- Opera sistemas de escaneo automático de patrones maliciosos y de bloqueo o sandboxing adicional
Bibliotecas auxiliares
Code Mode (@cloudflare/codemode)
- Biblioteca que simplifica ejecutar, mediante Dynamic Workers, el código generado por el modelo contra herramientas de IA
- Su pieza central es
DynamicWorkerExecutor(), que maneja errores comunes de formato mediante normalización de código y puede acceder directamente al fetcher globalOutbound
codeMcpServer({ server, executor }) envuelve un MCP Server existente y reemplaza la superficie de herramientas con una sola herramienta code()
openApiMcpServer({ spec, executor, request }) recibe una especificación OpenAPI y un ejecutor, y construye automáticamente un MCP Server completo con herramientas search() y execute()
Bundling (@cloudflare/worker-bundler)
- Genera los módulos preempaquetados que esperan los Dynamic Workers
- Si se proporcionan archivos fuente y
package.json, resuelve dependencias npm, empaqueta con esbuild y devuelve el mapa de módulos que espera Worker Loader
- Mediante
createApp, soporta apps full-stack que empaquetan juntos el Worker del servidor, JavaScript del cliente y assets estáticos
- Incluye servicio de assets integrado con manejo de content type, ETag y enrutamiento SPA
Manipulación de archivos (@cloudflare/shell)
- Proporciona al agente un sistema de archivos virtual dentro de un Dynamic Worker
- Con métodos tipados del objeto
state, permite read, write, search, replace, diff, glob, consultas/actualizaciones JSON, archivado y más
- El almacenamiento se respalda en un Workspace persistente (SQLite + R2), conservando archivos entre ejecuciones
- Operaciones a gran escala como
searchFiles, replaceInFiles y planEdits minimizan los viajes de ida y vuelta por RPC: una sola llamada en vez de bucles por archivo
- Las escrituras por lotes son transaccionales por defecto: si una falla, las anteriores se revierten automáticamente
- Ofrece declaraciones de tipos TypeScript preconstruidas y plantillas de system prompt
Casos de uso
Uso de Code Mode
- En vez de hacer llamadas secuenciales a herramientas, el agente escribe una sola función TypeScript que encadena múltiples llamadas a API, la ejecuta en un Dynamic Worker y devuelve solo el resultado final
- Como solo la salida entra en la ventana de contexto y no los pasos intermedios, disminuyen tanto la latencia como el uso de tokens
- El servidor MCP de Cloudflare está construido así: expone toda la API de Cloudflare con solo 2 herramientas (
search, execute) y menos de 1,000 tokens
Construcción de automatizaciones personalizadas
- Zite está construyendo una plataforma de apps con la que los usuarios interactúan mediante una interfaz de chat
- El LLM escribe TypeScript en segundo plano para crear apps CRUD, conectar Stripe, Airtable y Google Calendar, y ejecutar lógica de backend
- Cada automatización se ejecuta en su propio Dynamic Worker, con acceso solo a los servicios y bibliotecas específicos necesarios para ese endpoint
- Antony Toron, CTO de Zite: entre todas las plataformas evaluadas, fue la mejor en velocidad y soporte de bibliotecas como una “capa de ejecución inmediata, aislada y segura”, y actualmente procesa millones de solicitudes de ejecución al día
Ejecución de aplicaciones generadas por IA
- Puede usarse para construir plataformas que generan aplicaciones completas con IA
- Cada app se genera bajo demanda y luego se guarda en cold storage hasta que vuelva a invocarse
- El tiempo de arranque rápido facilita la vista previa de cambios durante el desarrollo activo
- Se puede bloquear o interceptar el tráfico de red del código generado para garantizar la ejecución segura de apps creadas por IA
Precios
- Los Workers cargados dinámicamente se cobran a razón de $0.002 por carga única de Worker al día (además del tiempo de CPU y las llamadas de Workers normales)
- En los casos de uso de “Code Mode” generado por IA, como todos los Workers son de un solo uso, el costo es de $0.002 por carga, normalmente insignificante frente al costo de inferencia para generar el código
- Durante la beta, se exime el cobro de $0.002
Aún no hay comentarios.