Cloudflare open-sources Kitesurf, a stateless browser engine for AI agents

Published · AI Daily — AI-assisted deep research, methodology & disclosure

Cloudflare open-sourced Kitesurf on GitHub under Apache 2.0. It is a stateless browser for AI agents that runs entirely on Workers. It parses HTML, applies CSS, runs JavaScript and renders screenshots without a browser container, and it supports CDP so Puppeteer can connect.

Cloudflare open-sources Kitesurf, a stateless browser engine for AI agents

Cloudflare has announced on its blog that Kitesurf is now open source on GitHub under the Apache 2.0 license. Kitesurf is a stateless browser for AI agents that runs entirely on top of Cloudflare Workers. The post is credited to Celso Martinho, Rui Figueira, Bernardo Pereira and Luís Duarte. The post positions it as a lightweight browser engine for agents, not as a proven, complete multi-tenant isolated sandbox framework.

A promise kept

Cloudflare introduced Kitesurf in August and followed up in September with WebMCP support, new APIs and better compatibility. On both occasions the team said it would open source the project, so that developers could run their own browser engine on their own Cloudflare accounts. This release keeps that promise. You can read the code, run it locally, change it, and deploy your own instance to Cloudflare Workers.

What Kitesurf is

The official description is specific. Kitesurf runs entirely on Cloudflare Workers. It parses HTML, applies CSS, executes page JavaScript and renders screenshots, all without a browser container. It supports the Chrome DevTools Protocol, or CDP, so clients such as Puppeteer can connect to it.

The main goal is to give AI agents a lightweight and efficient browser. It should load websites, run JavaScript and interact with pages while using less CPU and memory than a full browser like Chromium, and it should scale on demand across Cloudflare's global Workers network.

What is inside the repository

Kitesurf builds on Cloudflare's developer platform and APIs, together with a set of open-source Rust packages compiled to WebAssembly. Blitz provides HTML parsing, the DOM, layout and painting. Stylo provides CSS parsing, the cascade and computed styles. Boa runs JavaScript inside WebAssembly, but only as a last resort, when the code cannot run in Dynamic Workers. Linebender libraries handle text layout and 2D graphics, and Krilla generates PDF output. These projects keep their own licenses, and the repository's NOTICE file records the third-party notices.

The design has three main parts. The Engine manages browser sessions and client connections, PageScript runs the page and its JavaScript, and PageRenderer draws the result. The packages, including the engine, the Rust core, the DOM shims, the renderer and the Kitesurf command-line tool, live in separate folders under the packages directory of the repository, so you can see how the pieces fit together.

Running it locally

First check the build requirements in the repository. Then clone it, install dependencies with pnpm and start the engine with pnpm run dev. The first build compiles the Rust core and its dependencies, so expect a wait. Later builds reuse the cache. Wrangler then starts a local development server at 127.0.0.1:8787. You can open that address in Chrome DevTools to try a page, or use it from code. The post shows a Node.js script that connects puppeteer-core to the local devtools/browser WebSocket endpoint, opens a page and saves a screenshot. It also suggests pointing your AI harness at the local CDP port and letting the agent take full control of Kitesurf.

Deploying to your own account

When local changes and tests are done, you can deploy the engine to your own Cloudflare account and use it instead of the managed Browser Run APIs that Cloudflare provides. A Workers Paid plan is required, because Kitesurf uses Dynamic Workers to create isolated Workers for pages. From the repository root, run pnpm run deploy.

Contributing and current status

As with other Cloudflare open-source projects, forks and contributions are welcome. The team is clear that Kitesurf is under heavy development. The current focus is better compatibility, which you can follow in the Web Platform Tests progress, plus reliability and efficiency. Contributors should read the contribution guidelines first, open an issue with a minimal reproduction or a proposed approach, and get vouched by a maintainer before opening a pull request. Focused fixes with tests, clear evidence and a defined scope are easier to review than large rewrites. A contribution does not have to be code. A small page that reproduces a rendering bug, a failing automation workflow or a documentation correction all help.

What to keep in mind

Apache 2.0 is a permissive license, but the components Kitesurf depends on, such as Blitz, Stylo and Boa, keep their own licenses. Companies should check the NOTICE file before adopting it. Deployment needs a paid Workers plan, so individual developers should confirm the cost before experimenting. Because the project is moving fast, interfaces and behavior may change, and critical workflows should have regression tests. Kitesurf also prefers to run page JavaScript in Dynamic Workers and falls back to Boa in WebAssembly only when it must, so execution paths may differ between pages, and that is worth remembering when you debug.

What comes next

The team points readers to the Cloudflare blog and changelog, and to the official landing page, where standards compatibility results from Web Platform Tests and benchmarks are published. The team also invites people to chat on Discord. The authors close by saying they are building a browser for agents and would like help making it better.

Sources

FAQ

What is Kitesurf?

Kitesurf is a stateless browser for AI agents from Cloudflare that runs entirely on Cloudflare Workers. It parses HTML, applies CSS, executes page JavaScript and renders screenshots without needing any browser container, and it also supports the Chrome DevTools Protocol for client connections.

How do I run or deploy Kitesurf?

Clone the GitHub repository, install dependencies with pnpm and run pnpm run dev to start a local server at 127.0.0.1:8787, which Puppeteer can connect to. To deploy to your own account, run pnpm run deploy. A paid Workers plan is required for Dynamic Workers.

Is Kitesurf ready for production use?

Cloudflare says the project is under heavy development and is focused on compatibility, reliability and efficiency, with progress shown in the Web Platform Tests. Test it on your own target sites, add regression tests for critical flows, and check the third-party license notices first.