Kitesurf open source: Cloudflare's browser for AI agents
Cloudflare made Kitesurf open source. What the Workers-based browser for AI agents does, how to self-host it, benchmarks vs Chromium, and its current limits.
Cloudflare made Kitesurf open source on November 13, 2026. Kitesurf is the stateless browser for AI agents that Cloudflare launched in August, and it runs entirely on Workers. The code is now on GitHub under Apache 2.0, so you can read it, run it on your laptop, and deploy your own copy to your own Cloudflare account.
I care about this one more than most launch posts. Every agent I build ends up needing a browser, and the browser is usually the most expensive and fragile part of the stack.
What Cloudflare actually shipped
The announcement post is short. Cloudflare had promised to open source Kitesurf since the first launch, and now the repository at cloudflare/kitesurf is public.
Kitesurf parses HTML, applies CSS, runs page JavaScript, and renders screenshots with no browser container behind it. It is built from open-source Rust crates compiled to WebAssembly:
- Blitz for HTML parsing, the DOM, layout, and painting
- Stylo (Firefox's CSS engine) for CSS parsing and computed styles
- Boa for JavaScript in WebAssembly, used only as a last resort when the page script can't run in Dynamic Workers
- Linebender libraries for text layout and 2D graphics, and Krilla for PDF output
The engine has three parts. The Engine manages sessions and client connections, PageScript runs the page and its JavaScript, and PageRenderer draws the result. Each lives in its own folder under packages/, next to the Rust core, the DOM shims, and a CLI.
Why a browser for AI agents needs to be different
Chromium was built for people. It has tabs, extensions, video, WebGL, and pixel-perfect rendering, and a headless agent pays for all of that in CPU and memory even when it only wants the text of a page.
Cloudflare's original Kitesurf announcement from August 6 published benchmarks against a warm pool of Chromium:
| Task | Kitesurf | Chromium | Difference |
|---|---|---|---|
| Screenshot, CPU | 380 ms | 1,173 ms | 3.1x less |
| HTML extraction, CPU | 229 ms | 877 ms | 3.8x less |
| Screenshot, memory | 57.8 MiB | 271.0 MiB | 4.7x less |
| HTML extraction, memory | 39.4 MiB | 273.7 MiB | 7.0x less |
| Screenshot, wall time | 1,148 ms | 637 ms | 1.8x slower |
Look at the last row. Kitesurf is slower on wall time. You give up latency to get a much cheaper session, and for agents running hundreds of page loads in parallel, that is usually a good trade. For a user waiting on one screenshot, it may not be.
At launch Cloudflare said it passed around 215,000 Web Platform Tests and was adding hundreds more every week.
How to run Kitesurf open source locally
The setup from the post is four commands:
git clone https://github.com/cloudflare/kitesurf.git
cd kitesurf
pnpm install --frozen-lockfile
pnpm run dev
The first build compiles the Rust core, so expect to wait. After that, wrangler serves the engine at http://127.0.0.1:8787, and you can connect any CDP client:
import puppeteer from "puppeteer-core";
const browser = await puppeteer.connect({
browserWSEndpoint: "ws://127.0.0.1:8787/devtools/browser",
});
const page = await browser.newPage();
await page.goto("https://example.com/");
await page.screenshot({ path: "page.png" });
await browser.disconnect();
You can also point an agent harness at that CDP port and let it drive. When you are happy, pnpm run deploy pushes it to your account.
If you don't want to host anything, the managed version still works through Browser Run. You add browser=kitesurf to the CDP or Quick Action endpoints, and per the Kitesurf docs it is free while in beta, behind per-account limits.
Where Kitesurf falls short today
Cloudflare is upfront about the gaps. Kitesurf is not the right choice yet if you need to:
- play video or render WebGL
- pass a bot challenge that checks real TLS fingerprints
- keep a long, logged-in session with persistent state
That last one matters. A lot of useful agent work happens behind a login, and Kitesurf is designed to be ephemeral: it exists for one task and then it's gone. For that work you still fall back to Browser Run's default Chromium.
It is also under heavy development. Contributions go through an issue first, and a maintainer has to vouch for you before you open a pull request.
My take as someone building agents
I wrote earlier about putting an agent layer on top of Cloudflare, and this release fits that picture. Most of what my agents do in a browser is boring: open a page, pull the content, maybe take a screenshot, move on. Running a full Chromium for that has always felt like renting a truck to carry a letter.
Open source changes three things for me:
- Cost control. I can run the engine in my own account and see exactly what I pay for, instead of hitting a managed limit in the middle of a batch job.
- Debuggability. When a page renders wrong, I can read the code and file a small reproduction instead of guessing.
- Lock-in is lower, not zero. The code is open, but it still depends on Workers and Dynamic Workers. You are not running this on your own servers outside Cloudflare any time soon.
My plan is a two-tier setup: Kitesurf for cheap, stateless reads, and Chromium only for the pages that need a real session or video. The agent decides per task. As code gets cheaper to write, the review and the infrastructure around it become the real cost, and browser bills are a big part of that infrastructure.
FAQ
Is Cloudflare Kitesurf free?
The code is free under Apache 2.0. Self-hosting needs a Workers Paid plan. The managed version in Browser Run is free while in beta, with per-account limits.
Can I use Playwright or Puppeteer with Kitesurf?
Yes. Kitesurf speaks the Chrome DevTools Protocol, so Puppeteer, Playwright, chrome-remote-interface, and MCP tools that use CDP can connect to it.
Can Kitesurf replace Chromium for agents?
For stateless reads, screenshots, PDFs, and HTML extraction on compatible sites, often yes. For video, WebGL, bot challenges, or long authenticated sessions, no, not yet.
What should I watch next?
The Web Platform Tests pass rate. That number tells you how many real sites Kitesurf can handle, and Cloudflare publishes it on kitesurf.dev.
Sources
- Kitesurf is now open source, Cloudflare Blog, November 13, 2026
- Introducing Kitesurf, Cloudflare Blog, August 6, 2026
- Kitesurf documentation, Cloudflare Browser Run docs
- cloudflare/kitesurf on GitHub
Cover image: Kitesurf
Related articles
Personal Agent Protocol 1.0: what Poppy means for builders
Personal Agent Protocol 1.0 (Poppy) lets AI agents find, sign in to, and act at companies. How it works, the security model, and how I'd adopt it.
ChatGPT Wallet security: how AI agent payments work
ChatGPT Wallet lets AI agents pay with one-time tokens and a biometric check per purchase. How it works, where the risk sits, and what merchants must change.
Cloudflare OS Could Take Traditional ERP to a Different Level
Traditional ERP should remain the system of record. Cloudflare OS could become the governed agent and app layer that makes it easier to use, automate, and extend.
Code Has Become Cheap: AI Review Is the New Bottleneck
AI has made writing code cheaper, but identifying high-quality code, reviewing it, and delivering it reliably are becoming the new engineering bottleneck.