Edge Computing Infrastructure IoT & Edge

Cloudflare releases Kitesurf browser engine under Apache 2.0

Cloudflare has open-sourced Kitesurf, a stateless browser designed for AI agents and built to run on Cloudflare Workers. The company says developers can inspect and modify the code, run the engine locally, or deploy their own instance to a Cloudflare account. The project is available on GitHub under the Apache 2.0 license.

Cloudflare first introduced Kitesurf in August, then added WebMCP support, new APIs and improved compatibility in September. The open-source release follows the company’s previously stated intention to let developers operate the browser engine themselves, rather than rely solely on Cloudflare’s managed Browser Run APIs.

A browser engine built for Workers

Kitesurf handles browser tasks without running a conventional browser container. Its components parse HTML, apply CSS, execute page JavaScript and render screenshots. It supports the Chrome DevTools Protocol (CDP), which allows compatible automation clients, including Puppeteer, to connect to it.

Cloudflare describes the project’s goal as providing AI agents with a lightweight way to load websites, run JavaScript and interact with pages. The company says Kitesurf is intended to use less CPU and memory than a full browser such as Chromium, while scaling on demand across the Workers network. Those are stated design goals; the company points developers to benchmarks and Web Platform Tests for information about performance and standards compatibility.

The engine is organized into three main parts: Engine, which manages browser sessions and client connections; PageScript, which runs pages and their JavaScript; and PageRenderer, which draws the rendered result. The repository separates packages, the Rust core, DOM shims, renderer and command-line interface into folders under its packages directory.

Rust and WebAssembly components

Kitesurf builds on Cloudflare’s Developer Platform and APIs, as well as open-source Rust projects compiled to WebAssembly. The project uses Blitz for HTML parsing, DOM, layout and painting, and Stylo for CSS parsing, cascading and computed styles. Boa runs JavaScript inside WebAssembly as a fallback when JavaScript cannot run in Dynamic Workers.

Linebender libraries support text layout and two-dimensional graphics, while Krilla generates PDF output. These third-party projects retain their own licenses, and the Kitesurf repository’s NOTICE file documents third-party notices. Developers evaluating or redistributing the code should review those notices alongside Kitesurf’s Apache 2.0 license.

Local testing and deployment

To run the engine locally, developers must first meet the repository’s build requirements, clone the GitHub project and install its dependencies. The documented commands are git clone https://github.com/cloudflare/kitesurf.git, cd kitesurf, pnpm install --frozen-lockfile and pnpm run dev. The initial build compiles the Rust core and its dependencies; later builds can reuse the build cache. Wrangler then starts a local development server at http://127.0.0.1:8787.

That local endpoint can be accessed through Chrome DevTools or programmatically. For example, Puppeteer can connect to the server’s CDP WebSocket endpoint, open a page, navigate to a website and capture a screenshot. AI agent harnesses that support CDP can also connect to the local engine.

Deployment to a developer’s Cloudflare account uses pnpm run deploy. Cloudflare says a Workers Paid plan is required because Kitesurf uses Dynamic Workers to create isolated Workers for pages. This gives developers a way to run their own instance instead of using the managed Browser Run APIs.

Cloudflare says Kitesurf remains under heavy development, with work focused on compatibility, reliability and efficiency. The project welcomes contributions, including reproducible rendering issues, automation failures and documentation fixes, and provides contribution guidelines for prospective contributors.