{"slug": "kitesurf-is-now-open-source", "title": "Kitesurf is now open source", "summary": "Cloudflare released Kitesurf, its stateless browser for AI agents, as open source on GitHub under the Apache 2.0 license, letting developers run and deploy their own instance on Cloudflare Workers. Kitesurf parses HTML, applies CSS, executes page JavaScript and renders screenshots without a browser container, supports the Chrome DevTools Protocol so clients such as Puppeteer can connect, and aims to use less CPU and memory than a full browser like Chromium. The repository builds on open-source Rust packages compiled to WebAssembly, including Blitz for HTML parsing, DOM, layout and painting, Stylo for CSS, Boa for JavaScript and Krilla for PDF output, and ships a Kitesurf CLI alongside the engine, PageScript and PageRenderer components.", "body_md": "# Kitesurf is now open source\n\nWe __introduced__[__Kitesurf__](https://kitesurf.dev/), our stateless browser for AI agents that runs entirely on top of Workers, in August and [__followed up__](https://blog.cloudflare.com/kitesurf-update/) in September with WebMCP support, new APIs, and improved compatibility. On every occasion, we mentioned our commitment to open sourcing it so that developers could run their own browser engine on their own Cloudflare accounts if they want to.\n\nThat promise is now real. [__Kitesurf is open source on GitHub__](https://github.com/cloudflare/kitesurf) under the Apache 2.0 license. You can read the code, run it locally, change it, and deploy your own instance to Cloudflare Workers.\n\n## A browser built for agents\n\nKitesurf runs entirely on Cloudflare Workers. It parses HTML, applies CSS, executes page JavaScript, and renders screenshots without a browser container. It supports the Chrome DevTools Protocol (CDP), so you can connect clients such as Puppeteer.\n\nOur main goal is to give AI agents a lightweight, efficient browser — one that can load websites, execute JavaScript, and interact with pages while using less CPU and memory than a full browser like Chromium, and scaling on demand across Cloudflare’s global Workers network.\n\nRead more about why and how we built Kitesurf in our initial [__announcement__](https://blog.cloudflare.com/kitesurf/) and how to use it in Browser Run’s [__developer__](https://developers.cloudflare.com/browser-run/kitesurf/) documentation.\n\n## What is inside the repository?\n\nKitesurf builds on Cloudflare’s Developer Platform and APIs, alongside an ecosystem of open-source Rust packages compiled to WebAssembly:\n\n- [__Blitz__](https://github.com/DioxusLabs/blitz) provides HTML parsing, the DOM, layout, and painting.\n- [__Stylo__](https://github.com/servo/stylo) provides CSS parsing, cascading, and computed styles.\n- [__Boa__](https://github.com/boa-dev/boa) runs JavaScript inside WebAssembly (as the last resort only when we can’t run JavaScript in Dynamic Workers).\n- [__Linebender__](https://linebender.org/) libraries provide text layout and 2D graphics, and[__Krilla__](https://github.com/LaurenzV/krilla) generates PDF output.\n\nThese projects made Kitesurf possible. They retain their respective licenses; the repository's [__NOTICE__](https://github.com/cloudflare/kitesurf/blob/main/NOTICE) documents third-party notices.\n\nKitesurf has three main parts: the Engine manages browser sessions and client connections, PageScript runs the page and its JavaScript, and PageRenderer draws the result.\n\nAll packages, the engine, its Rust core, DOM shims, renderer, and [__Kitesurf CLI__](https://github.com/cloudflare/kitesurf/tree/main/packages/kitesurf-cli) live separately in folders under the repository’s [__packages__](https://github.com/cloudflare/kitesurf/tree/main/packages) directory where you can explore how all the pieces fit together.\n\n## Run your own Kitesurf\n\nTo run Kitesurf locally, follow the repository's [__build requirements__](https://github.com/cloudflare/kitesurf#requirements), then clone the [__repository__](https://github.com/cloudflare/kitesurf), install dependencies, and start the engine:\n\n```\ngit clone https://github.com/cloudflare/kitesurf.git\ncd kitesurf\npnpm install --frozen-lockfile\npnpm run dev\n```\n\nThe first build compiles the Rust core and its dependencies, so give it some time. Subsequent builds reuse the build cache. Finally wrangler starts a local development server at **http://127.0.0.1:8787**. Open that address to try a page in Chrome DevTools, or use it programmatically.\n\nYou can use [__puppeteer__](https://github.com/cloudflare/kitesurf/tree/main#connect-with-puppeteer) with a NodeJS script:\n\n``` python\nimport puppeteer from \"puppeteer-core\";\n\nconst browser = await puppeteer.connect({\n  browserWSEndpoint: \"ws://127.0.0.1:8787/devtools/browser\",\n});\n\ntry {\n  const page = await browser.newPage();\n  await page.goto(\"https://example.com/\");\n  await page.screenshot({ path: \"page.png\" });\n} finally {\n  await browser.disconnect();\n}\n```\n\nOr you can point your AI harness at the local [__CDP__](https://github.com/cloudflare/kitesurf/tree/main#use-chrome-devtools) port (agents love CDP) and watch it take full control of Kitesurf.\n\n## Deploy to your Cloudflare account\n\nWhen you’re done changing and testing locally, you can [__deploy the engine to your own account__](https://github.com/cloudflare/kitesurf#cloudflare-deployment) and use Kitesurf from there instead of the Browser Run managed APIs we provide. Note that a Workers Paid plan is required because Kitesurf uses [__Dynamic Workers__](https://developers.cloudflare.com/dynamic-workers/) to create isolated Workers for pages.\n\nFrom the repository root:\n\n```\npnpm run deploy\n```\n\n## Help us make it better\n\nAs with all of our open-sourced projects, Kitesurf lives in Github and we welcome forks and [__contributions__](https://github.com/cloudflare/kitesurf/pulls). However, note that Kitesurf is under heavy development and we are focusing on making the engine more compatible (check out [__Web Platform Test evolution__](https://kitesurf.dev/wpt)), more reliable, and [__efficient__](https://kitesurf.dev/benchmarks).\n\nStart with the [__contribution guidelines__](https://github.com/cloudflare/kitesurf/blob/main/CONTRIBUTING.md) if you want to contribute. 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 well-defined scope are much easier to review than large rewrites or unrelated cleanup, but all contribution does not have to be code: a small page that reproduces a rendering bug, a failing automation workflow, or a clear documentation correction can help us move forward.\n\n## Stay tuned\n\nKitesurf is evolving quickly. Stay tuned for updates in the [__blog__](https://blog.cloudflare.com/tag/browser-run/) and our [__changelog__](https://developers.cloudflare.com/changelog/), and keep an eye on the official [__landing page__](https://kitesurf.dev/) for the latest on standards compatibility in [__Web Platform Tests__](https://kitesurf.dev/wpt) page and [__benchmarks__](https://kitesurf.dev/benchmarks).\n\nAnd come chat with the team on [__Discord__](https://discord.com/invite/cloudflaredev). We’re building a browser for agents, and we’d love your help making it better.", "url": "https://wpnews.pro/news/kitesurf-is-now-open-source", "canonical_source": "https://blog.cloudflare.com/kitesurf-open-source/", "published_at": "2026-11-13 20:20:21+00:00", "updated_at": "2026-11-13 20:22:23.618679+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "artificial-intelligence"], "entities": ["Cloudflare", "Kitesurf", "Cloudflare Workers", "Chrome DevTools Protocol", "Puppeteer", "Blitz", "Stylo", "Boa"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/kitesurf-is-now-open-source", "markdown": "https://wpnews.pro/news/kitesurf-is-now-open-source.md", "text": "https://wpnews.pro/news/kitesurf-is-now-open-source.txt", "jsonld": "https://wpnews.pro/news/kitesurf-is-now-open-source.jsonld"}}