Cloudflare abre el código de Kitesurf, su navegador para agentes

Cloudflare ha abierto el código de Kitesurf, un navegador pensado para agentes de IA, con licencia Apache 2.0. El código está en GitHub y la página del proyecto es kitesurf.dev. El navegador se ejecuta sobre Cloudflare Workers y no necesita contenedores de navegador para analizar HTML, procesar CSS y ejecutar JavaScript.

El objetivo que plantea Cloudflare es directo:

"Our main goal is to give AI agents a lightweight, efficient browser — one that can load websites, execute JavaScript, and interact with pages while using less CPU and memory than a full browser like Chromium."

En otras palabras: dar a los agentes un navegador ligero que abra páginas web, ejecute scripts e interactúe con ellas, con un consumo de CPU y memoria inferior al de navegadores completos como Chromium.

Del experimento de portado al código abierto: tres hitos

El punto de partida de Kitesurf es obscura, un motor headless de código abierto escrito en Rust que se presenta como “sin Chrome, sin Node.js, sin dependencias”. El equipo de Cloudflare primero pidió a un agente de IA que lo portara a Workers, con malos resultados al principio; solo después de redactar para el agente un plan detallado y criterios de éxito el prototipo funcionó, aunque a duras penas.

Según el blog de Cloudflare, pasaron 12 semanas desde que se decidió empezar hasta el lanzamiento oficial. En su primera aparición, Kitesurf se integró en Browser Run, el servicio de automatización de navegadores headless de Cloudflare, como beta gratuita; los desarrolladores podían cambiar añadiendo el parámetro browser=kitesurf a la API. Entonces Cloudflare prometió “abrir el código cuando esté listo” y, según algunos medios, la publicación no daba plazos. La apertura que ahora cuenta Phoronix cumple esa promesa.

En cuanto al método de desarrollo, el equipo usó las Web Platform Tests (el conjunto de pruebas de conformidad del W3C) como criterio de aceptación para el agente de IA, mientras las personas se encargaban de la arquitectura y la revisión. Cuando se publicó el blog, Kitesurf ya superaba unas 215.000 pruebas, y cada semana se suman varios cientos. Para cubrir la distancia entre las pruebas estándar y los sitios reales, también usaron Puppeteer para ejecutar Chromium y Kitesurf en paralelo sobre webs reales, comparando paso a paso las aserciones y las capturas renderizadas.

Illustration: a heavy truck and light sail carts symbolize the lightweight Cloudflare AI browser

Cómo está dividido por dentro

Kitesurf se divide en tres bloques:

  • Engine: el único componente expuesto hacia fuera; gestiona el protocolo Chrome DevTools (CDP) y guarda el estado de la sesión. Clientes como Puppeteer o Playwright funcionan apuntando a él.
  • PageScript: cada página se ejecuta en un aislamiento propio de Workers; el HTML y el CSS usan un módulo del motor de renderizado Blitz, escrito en Rust, y Stylo de Firefox; cuando aparece un eval, que Workers no admite de forma nativa, la ejecución pasa al motor JS Boa, también escrito en Rust.
  • PageRenderer: dibuja el objeto de la página en píxeles y produce JPEG, PNG o PDF; no guarda estado de página y, si se atasca, se termina y se reinicia.

Todas las peticiones a la red externa pasan por un único componente, SandboxOutbound, y las cookies de cada página van en un “tarro” aparte. La premisa de diseño de Cloudflare es tratar cada carga como entrada no fiable y empezar cada sesión desde cero, con la mirada puesta en riesgos propios de los agentes, como la inyección de prompts y la seguridad de las llamadas a herramientas.

Cuentas de memoria: cuántas sesiones caben en una máquina

Cloudflare ejecutó 5 rondas en cada una de 14 direcciones web y tomó la mediana. En la tarea de extracción de HTML, Kitesurf ocupa 39,4 MiB de memoria y el pool precalentado de Chromium, 273,7 MiB, una diferencia de 7 veces; en la tarea de captura de pantalla, la diferencia es de 4,7 veces.

Con las cifras de la captura de pantalla, una cuenta aproximada indica que 1 GiB de memoria acoge unas 17 sesiones de Kitesurf, frente a solo 3 o 4 con Chromium. En un despliegue real hay que sumar la sobrecarga de planificación y los picos, así que esta proporción debe tomarse como un techo. La propia Cloudflare señala que la memoria y la CPU son lo que decide la factura; en tiempo de reloj, Chromium es de 1,7 a 1,8 veces más rápido, con la diferencia concentrada en la rasterización y la codificación de imágenes, y seguirán optimizándolo.

Las limitaciones también están claras: por ahora Kitesurf no reproduce vídeo, no renderiza WebGL y no usa una huella TLS real para superar las verificaciones antibots. Entre las páginas que Cloudflare enumera como correctamente renderizadas figuran Wikipedia, Hacker News y TodoMVC en varias versiones de frameworks. Para los desarrolladores en China, con el código abierto es posible desplegarlo en su propia cuenta de Workers, sin pasar por las cuotas de Browser Run, pero la compatibilidad con sitios complejos habrá que probarla por su cuenta.

Fuentes: blog oficial de Cloudflare, Phoronix, CocoLoop, H2S Media; las medianas de CPU, memoria y tiempo del conjunto de pruebas de 14 direcciones y el número de pruebas WPT superadas se contrastaron con el blog de Cloudflare.