Cloudflareは、AIエージェント向けブラウザ「Kitesurf」をオープンソース化した。ライセンスはApache 2.0で、コードはGitHubで公開され、プロジェクトサイトはkitesurf.devだ。このブラウザはCloudflare Workers上で動作し、ブラウザ用コンテナを使わずにHTMLの解析、CSSの処理、JavaScriptの実行ができる。
Cloudflareが掲げる目標は明快だ。
“Our 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.”
要するに、Webページを開き、スクリプトを実行し、ページと対話できる軽量ブラウザをエージェントに提供する。CPUとメモリの使用量はChromiumのようなフルブラウザより少ない、という意味である。
移植実験からオープンソース化まで、3つの節目
Kitesurfの出発点は、Rust製のオープンソース・ヘッドレスエンジン「obscura」だ。同エンジンは「Chrome不要、Node.js不要、依存関係なし」を掲げている。Cloudflareのチームはまず、AIエージェントにこれをWorkersへ移植させたが、当初の結果は芳しくなかった。エージェントに詳細な計画と成功基準を与えて、ようやくプロトタイプが動いたという。
Cloudflareのブログによると、着手から正式リリースまでは12週間だった。初公開時のKitesurfは、Cloudflareのヘッドレスブラウザ自動化サービス「Browser Run」に無料ベータとして組み込まれ、開発者はAPIにbrowser=kitesurfパラメータを加えるだけで切り替えられた。当時Cloudflareは「準備ができたらオープンソース化する」と約束していたが、発表記事にスケジュールはなかったと指摘する報道もある。今回Phoronixが伝えたオープンソース化で、その約束が果たされた形だ。
開発手法としては、W3Cの標準適合テスト群であるWeb Platform TestsをAIエージェントの合格基準に据え、人間がアーキテクチャ設計とレビューを担当した。ブログ公開時点でKitesurfは約21.5万件のテストに合格しており、毎週数百件ずつ増えている。標準テストと実在サイトとのギャップを埋めるため、Puppeteerで実在サイト上のChromiumとKitesurfを同時に動かし、アサーションとレンダリング結果のスクリーンショットを順次突き合わせてもいる。

内部は3つに分割
Kitesurfは次の3つのコンポーネントで構成される。
- Engine:外部に公開される唯一のコンポーネント。Chrome DevTools Protocol(CDP)を処理してセッション状態を保持するため、PuppeteerやPlaywrightといったクライアントをそのまま接続できる。
- PageScript:ページごとに専用のWorkersアイソレートを立ち上げる。HTMLとCSSの解析には、Rust製レンダリングエンジンBlitzのモジュールとFirefoxのStyloを使用。Workersがネイティブ対応していない
evalが呼ばれた場合は、Rust製JSエンジンのBoaに処理を渡す。 - PageRenderer:ページオブジェクトをピクセルに描画し、JPEG、PNG、PDFを出力する。ページ状態は保持せず、固まった場合は強制終了して再起動する。
外部ネットワークへのリクエストはすべてSandboxOutboundという単一のコンポーネントを経由し、ページごとにCookieは別々の「瓶」に分けて保管される。Cloudflareの設計は、読み込みのたびに入力を信頼できないものとして扱い、セッションを毎回まっさらな状態から始めるという前提に立つ。狙いは、プロンプトインジェクションやツール呼び出しの安全性といった、エージェント特有のリスクへの対処である。
メモリから概算する、1台で何セッション動くか
Cloudflareは14のURLでそれぞれ5回実行し、中央値を取った。HTML抽出タスクでは、Kitesurfのメモリ使用量が39.4 MiB、ウォームプールのChromiumが273.7 MiBで、差は7倍。スクリーンショットタスクでは4.7倍の差となった。
スクリーンショットタスクの数値で単純計算すると、1 GiBのメモリに同時に収まるKitesurfセッションは約17、Chromiumなら3〜4にとどまる。実際の運用ではスケジューリングのオーバーヘッドやピーク時の負荷も考慮する必要があり、この比率はあくまで上限の目安にすぎない。Cloudflare自身は、課金を左右するのはメモリとCPUだとしたうえで、実時間ではChromiumのほうが1.7〜1.8倍速いと説明する。差の主因はラスタライズと画像エンコードにあり、今後も最適化を続けるとしている。
弱点も明記されている。Kitesurfは現時点で動画再生とWebGLの描画に対応せず、ボット対策の検証を通過するための本物のTLSフィンガープリントも使わない。公式が正しく描画できるとするページには、Wikipedia、Hacker News、複数フレームワーク版のTodoMVCなどがある。中国の開発者にとっては、オープンソース化により、Browser Runの利用枠を介さず自分のWorkersアカウントへデプロイできるようになる。ただし、複雑なサイトとの互換性は自分で検証する必要がある。
参考資料:Cloudflare公式ブログ、Phoronix、CocoLoop、H2S Media。14のURLのテストセットにおけるCPU・メモリ・所要時間の中央値とWPT合格数は、Cloudflareのブログで確認した。