Innovation & Tech

Cloudflare Open-Sources Kitesurf, Its Chrome-Free Browser Engine for AI Agents

Cloudflare open-sourced its Kitesurf browser engine for AI agents under Apache 2.0. The engine runs without Chrome, but self-hosters inherit a public, unauthenticated endpoint.

By Nathan Brooks

3 min read

Cloudflare Open-Sources Kitesurf Browser Engine for AI Agents
Cloudflare Open-Sources Kitesurf Browser Engine for AI AgentsStockSnap / pixabay

What's News

  • Cloudflare open-sourced Kitesurf on November 13, 2026 under the Apache 2.0 license.
  • Kitesurf renders pages and runs JavaScript without Chrome or a browser container, exposing a CDP endpoint.
  • Self-hosted deployments require a Workers Paid plan and ship without authentication on a public workers.dev URL.
  • At the August 6, 2026 launch, Cloudflare said Kitesurf couldn't yet handle video, WebGL, or TLS-fingerprint bot challenges.
  • Local development requires Bazelisk, Node.js 22+, and pnpm 9.15.4, with the engine running at 127.0.0.1:8787.

Cloudflare open-sourced Kitesurf, its experimental browser engine for AI agents, on November 13, 2026 under the Apache 2.0 license. Developers can now inspect the code, modify it, run it locally, or deploy their own instance on Cloudflare Workers instead of relying solely on Cloudflare's managed Browser Run APIs.

The move fulfills a promise Cloudflare made twice this year: at Kitesurf's August 6 launch, and again in a September 28 update that added WebMCP support, expanded browser API and Browser Run coverage, and introduced terminal rendering.

What does Kitesurf actually replace?

Kitesurf renders HTML and CSS into pages, executes page JavaScript, and produces screenshots — all without Chrome or a browser container. It exposes a Chrome DevTools Protocol (CDP) endpoint, the same control interface used by Chrome DevTools and compatible automation software, so Puppeteer clients and AI agent harnesses can connect directly.

The internals split cleanly. The Engine coordinates browser sessions and client connections. PageScript runs the page and its JavaScript. PageRenderer produces the visual output. Underneath sits Cloudflare's Developer Platform plus Rust components compiled to WebAssembly: Blitz handles HTML parsing, DOM, layout and painting; Stylo handles CSS; Linebender libraries cover text and 2D graphics; Krilla generates PDF output; and Boa serves as a fallback JavaScript runtime when a page's code can't run in Dynamic Workers.

Cloudflare's stated goal: give agents the web access they need with lower CPU and memory use than a full Chromium browser, while scaling on demand across the Workers network. The architecture treats every page load as untrusted input and isolates components by the resources they need. A dedicated SandboxOutbound worker handles all external fetching, enforces network policy, and keeps each page's cookies separate — no other component touches the network directly.

Statelessness is the other half of the design. The Engine retains session state while other components stay disposable, letting capacity track bursts of agent activity. PageRenderer holds no persistent page state, so the Engine can simply replace it after a failed or stalled rendering request.

What does self-hosting require?

Local development needs Bazelisk, Node.js 22 or newer, and pnpm 9.15.4. The initial build compiles the Rust core and vendored dependencies — later builds reuse Bazel's cache — and starts a local engine at 127.0.0.1:8787. From there, developers inspect pages via Chrome DevTools or attach Puppeteer and other CDP clients.

Deployment on Cloudflare requires a Workers Paid plan, because Dynamic Workers create the isolated workers used for pages and renderers.

What changes for operators on the security side?

The security responsibility transfers to whoever deploys it. The engine ships with no authentication of its own, and its workers.dev address is public by default. Without Cloudflare Access or another auth layer, anyone holding the URL could browse through the engine, connect CDP clients, issue requests originating from the operator's Cloudflare account, and burn paid CPU time and Dynamic Workers. The repository instructs operators to protect the URL immediately and explains how to enable Access across the account before deployment, closing the public-interval window.

How complete is it?

Kitesurf remains experimental and under heavy development. The repository describes it as a CDP endpoint, not a full Chrome implementation — some Chrome DevTools features are still unsupported. At the August launch, Cloudflare said the engine wasn't yet suitable for video, WebGL, bot-challenge handshakes requiring real TLS fingerprints, or long authenticated sessions that depend on persistent state.

Contributions follow a structured path: open an issue with a minimal reproduction or proposed approach, get maintainer vouching, then submit a pull request. Focused changes with tests and a defined scope are preferred, though reproducible rendering bugs, failing automation workflows, and documentation fixes are welcome too.

For developers, the trade-off is direct control of the browser stack in exchange for securing the deployment themselves and living with an engine whose Chrome and web-platform compatibility remains incomplete — a bet that Kitesurf's efficiency gains outweigh its gaps as agent workloads grow.

Source: unite.ai

Share this article:

More from Nathan Brooks

Nathan Brooks

Show full bio

News editor covering regulation, policy and their impact on entrepreneurship, startups and venture funding at Business Bearings.

2,064 articles

Related articles

« Previous article