Cloudflare Kitesurf: The Agent-First Browser Running in V8 Isolates on Cloudflare Workers
> Cloudflare unveils Kitesurf — a stateless, highly scalable browser built from Rust, WebAssembly, and V8 isolates on Workers specifically for AI agents. 7x less memory and 3.8x less CPU than Chromium.
🎧 Listen — ~5 min
Ready · Cloudflare Kitesurf: The Agent-F
For over a decade, browser automation meant spinning up Chromium instances inside heavy Docker containers or virtual machines. Whether running Puppeteer, Playwright, or modern LLM browser agents (like browser-use or Claude Computer Use), engineers were forced to pay a steep tax: Chromium was engineered for humans, not AI agents.
A human user needs tab bars, extensions, 60fps smooth CSS transitions, GPU-accelerated canvas rendering, and cross-device sync. An AI agent needs none of those. An AI agent cares about token counts, cold-start latency, CPU cycles, memory overhead, and security isolation.
On August 6, 2026, Cloudflare unveiled Kitesurf: a stateless, highly scalable, agent-first browser engineered to run entirely inside V8 isolates on Cloudflare Workers. Built in Rust and WebAssembly, Kitesurf delivers 7x lower memory consumption and 3.8x lower CPU usage compared to Chromium, unlocking massive scale for agentic workflows.

Why Chromium is Bloated for AI Agents
When an AI model navigates a website to extract structured data, answer user queries, or fill out forms, running a 270+ MiB Chromium process per session creates massive operational friction:
- High Memory Overhead: Chromium consumes roughly ~270 MiB RAM even when warm, capping the number of simultaneous browser sessions an application can spawn.
- Heavy CPU Consumption: Parsing complex CSS layouts and calculating pixel-perfect paint commands drains compute on features an LLM will never visually perceive.
- Attack Surface: Desktop browsers maintain local file access, cookie stores, and shared process state that expose AI agents to prompt injection, cross-site leaks, and unsafe tool execution.
Kitesurf flips this paradigm. Instead of stripping down Chromium, Cloudflare built a headless browser engine from scratch designed specifically for V8 isolates and WebAssembly.
Technical Architecture: How Kitesurf Runs on Cloudflare Workers
Kitesurf operates as a composition of specialized, stateless Workers communicating over JavaScript Native RPC and Dynamic Workers.

Here is how a browser request moves through Kitesurf's isolated pipeline:
1. The Engine Worker (CDP & Session Handling)
The Engine Worker is the only public-facing component. It handles standard Chrome DevTools Protocol (CDP) WebSockets and REST endpoints, meaning standard client libraries like Puppeteer and Playwright work out of the box without code modifications. The Engine maintains session state while delegating rendering and execution to disposable workers.
2. SandboxOutbound (Isolated Outbound Networking)
Network fetches are among the most security-sensitive operations for headless browsers. In Kitesurf, pages cannot access the internet directly. All network requests (HTML, CSS, JS, fonts, images, fetch calls) are gated through SandboxOutbound. This component strictly enforces CORS, injects security headers, isolates cookie jars per session, and immediately blocks unsafe origins with HTTP 403 responses.

3. PageScript (Dynamic Workers, Rust & Wasm Engine)
For every page load or out-of-process iframe (OOPIF), Kitesurf uses Dynamic Workers to spin up an isolated V8 environment containing a clean globalThis and DOM document.
- HTML & CSS Parsing: Powered by Blitz (a modular Rust rendering engine) and Stylo (Firefox’s high-performance C++/Rust CSS engine compiled to Wasm).
- JavaScript & Wasm Execution: Script tags run directly inside the isolate. For unsafe or dynamic
eval()execution where isolate boundaries prevent native eval, Kitesurf embeds Boa JS (an ECMAScript engine written in Rust running inside WebAssembly).

4. PageRenderer (Frame Rasterization over RPC)
When an agent or client requests a screenshot, PDF, or visual representation, the Engine Worker calls renderFrame() on the PageRenderer Worker via Cloudflare's JavaScript Native RPC.
- PageRenderer uses blitz-paint and Parley to lay out text, calculate line breaks, rasterize the scene into an image buffer, and return a PNG or PDF stream.
- Because PageRenderer holds no session state, any stuck or hanging render call is instantly terminated and retried in milliseconds without dropping the active page session.
Benchmarks: Kitesurf vs. Chromium
In performance benchmarks across a 14-website test corpus, Kitesurf drastically outclasses Chromium in resource efficiency:
| Performance Metric | Kitesurf (V8 Isolates) | Chromium (Warm Pool) | Kitesurf Advantage |
|---|---|---|---|
| CPU (Screenshot) | 380 ms | 1,173 ms | 3.1x less CPU |
| CPU (HTML Extraction) | 229 ms | 877 ms | 3.8x less CPU |
| Memory (Screenshot) | 57.8 MiB | 271.0 MiB | 4.7x less RAM |
| Memory (HTML Extraction) | 39.4 MiB | 273.7 MiB | 7.0x less RAM |
While Chromium remains faster in wall-clock rendering time due to decades of GPU pipeline tuning, Kitesurf’s 700% lower memory footprint allows developers to run hundreds of concurrent browser agents on standard serverless tiers for a fraction of the cost.
Web Conformance & WPT Testing
Building a web browser requires handling millions of edge cases in HTML, CSS, and DOM specifications. Cloudflare automated Kitesurf's development by validating feature conformance against the official Web Platform Tests (WPT) suite.

Kitesurf currently passes over 215,000 WPT tests with comprehensive coverage across DOM parsing, CSS selection, SVG rendering, XHR, and Streams—making it fully capable of executing complex single-page apps (SPAs) and interactive forms.
How to Use Kitesurf with Cloudflare Browser Run
Kitesurf is available today in public beta within Cloudflare Browser Run. You can switch your Puppeteer or Playwright automation script to use Kitesurf by specifying the engine flag:
1import puppeteer from "@cloudflare/puppeteer";
2
3export default {
4 async fetch(request: Request, env: Env): Promise<Response> {
5 // Connect to Browser Run with Kitesurf engine
6 const browser = await puppeteer.launch(env.MY_BROWSER, {
7 engine: "kitesurf", // Use Kitesurf V8 isolate browser
8 });
9
10 const page = await browser.newPage();
11 await page.goto("https://essamamdani.com");
12
13 // Extract page content with 7x lower memory consumption
14 const content = await page.content();
15 const screenshot = await page.screenshot();
16
17 await browser.close();
18
19 return new Response(screenshot, {
20 headers: { "Content-Type": "image/png" },
21 });
22 },
23};Summary & The Road to Open Source
Cloudflare has announced plans to open-source Kitesurf, allowing developers to self-host their own agent-first browser engines inside any Cloudflare Workers account or local environment.
By replacing multi-hundred-megabyte Chromium containers with lightweight Rust+Wasm V8 isolates, Kitesurf marks the beginning of the Agentic Cloud era — where every AI agent can hold its own disposable web browser without breaking compute budgets.
- Try the Interactive Playground: kitesurf.cloudflare.app
- Original Cloudflare Announcement: blog.cloudflare.com/kitesurf
Keep reading
Related reading
⚡ Daily AI Model Drop — Get Kimi K3 benchmarks before Twitter
Join 2,400+ AI engineers. 1 email/day, no spam, unsubscribe anytime