Cloudflare launches Kitesurf, a lightweight browser built for AI agents

The Rust-based beta cuts CPU and memory use in Cloudflare's tests, while accepting slower loads and narrower web compatibility.

By · Published

Why it matters

Browser access is one of the costliest tools to provide at agent scale. Kitesurf gives Cloudflare a lighter execution path for short web tasks and ties those workloads directly to Workers.

Cloudflare launches Kitesurf, a lightweight browser built for AI agents — The Rust-based beta cuts CPU and memory use in Cloudflare's tests, while accepting slower loads and narrower web compatibility.

Cloudflare launched Kitesurf on August 6th, a browser engine built to give AI agents isolated access to websites without assigning each task a full Chromium instance. Kitesurf runs entirely on Cloudflare Workers and is available free in beta through Cloudflare's Browser Run service.

The engineers behind Kitesurf are Celso Martinho, Ruskin Constant, Rui Figueira, and Luis Duarte. Constant is a senior engineering manager at Cloudflare, Figueira is a senior systems engineer, and Duarte is a systems engineer. In Cloudflare's launch post, the group said Cloudflare had repeatedly considered building a browser before agent workloads gave the project a narrower technical and commercial purpose.

That purpose is density. An agent may need a browser to execute JavaScript, inspect a document object model, capture a screenshot, or submit a form, yet much of Chromium exists to serve a human sitting in front of a screen. Tabs, extensions, synchronization, high-frame-rate scrolling, and exact visual rendering consume resources without necessarily improving an agent's result. Handing a separate Chromium process to every agent becomes expensive as concurrent tasks multiply.

Kitesurf strips the browser down around the operations models and automation systems use. It is written primarily in Rust, compiled to WebAssembly, and split across Workers isolates. An Engine component exposes Chrome DevTools Protocol, or CDP, endpoints and holds session state. Separate PageScript isolates execute page code and maintain the DOM, while a stateless PageRenderer converts the computed page into screenshots, PDFs, or other output. Cloudflare's Workers RPC system connects those components.

The architecture lets Cloudflare create disposable browser resources for each request rather than maintain a large pool of fully loaded Chromium processes. Every page load begins in a clean environment, and the network-fetching component is separated from the rest of the browser. Cloudflare said the isolation model assumes every page and script is untrusted input, an important constraint when agents can be directed toward arbitrary sites.

The project began roughly 12 weeks before the launch. Cloudflare drew its initial inspiration from Obscura, an open-source Rust browser for automation, and used an AI coding agent while adapting an early prototype to Workers. The engineers then relied on the Web Platform Tests suite, integration tests, and visual comparisons with Chromium to constrain the generated code and measure browser compatibility.

Cloudflare's documentation says Kitesurf passes more than 235,000 Web Platform Test subtests. It reports 97% coverage for DOM and SVG tests, 96% for HTML, 99% for selection and encoding, and 95% for CORS and XHR. Those figures measure standards tests rather than compatibility with every production website, and Cloudflare directs developers to test individual sites in the Kitesurf playground.

The efficiency trade

Cloudflare's own benchmark compared the median of five Kitesurf and warm-pool Chromium runs across 14 URLs. For screenshot tasks, Kitesurf used 380 milliseconds of CPU and 57.8 MiB of memory, compared with 1,173 milliseconds and 271 MiB for Chromium. For HTML extraction, Kitesurf used 229 milliseconds of CPU and 39.4 MiB of memory, versus 877 milliseconds and 273.7 MiB for Chromium.

Kitesurf was slower in elapsed time. Screenshots took 1,148 milliseconds with Kitesurf and 637 milliseconds with Chromium. HTML extraction took 820 milliseconds with Kitesurf and 472 milliseconds with Chromium. Cloudflare attributes the gap to Chromium's warm just-in-time compiler and Kitesurf's cold software rendering path.

The benchmark supports a specific use case: large numbers of short, independent tasks where compute and memory consumption matter more than completing each request a few hundred milliseconds earlier. It does not establish Kitesurf as a general Chromium replacement.

Kitesurf cannot yet play video, render WebGL, reproduce the TLS fingerprints needed for some bot challenges, or maintain long authenticated sessions that require persistent state. Its CDP implementation also covers only a subset of the protocol, and its screenshots are not guaranteed to match Chromium pixel for pixel. Cloudflare recommends its Chromium-powered Browser Run service for those jobs.

Cloudflare makes switching a parameter change

Cloudflare built Kitesurf behind the same interfaces developers already use for browser automation. Puppeteer, Playwright, chrome-remote-interface, and agents using MCP can connect through CDP. Existing Browser Run customers can select Kitesurf by adding browser=kitesurf to a CDP or Quick Action endpoint. Quick Actions cover one-shot operations including screenshots, PDFs, HTML extraction, and scraping.

That compatibility lowers the cost of testing Kitesurf against an existing workload. Developers can keep their current automation client and route compatible tasks to Kitesurf, while retaining Chromium for video, complex graphics, persistent logins, and sites that fail Kitesurf's narrower implementation.

The beta is subject to Browser Run's per-account limits. Cloudflare also says it intends to open-source Kitesurf and allow customers to deploy their own copies in their Cloudflare accounts. That would turn the browser from a managed feature into another runtime component developers can place beside their agents, while giving Cloudflare a direct route to make Workers the execution layer for browser-heavy agent workloads.

Reader comments

Conversation for this story loads after sign-in.