
Cloudflareは、AIエージェント向けブラウザー「Kitesurf」のソースコードをApache 2.0ライセンスで公開しました。 開発者はコードを読み、変更し、自分のCloudflareアカウントのWorkersに独自のインスタンスを配備できます。 ブラウザーのコンテナを使わず、ウェブページの処理から画像の描画までを実行する仕組みです。
Workers上で動くエージェント向けブラウザー
Kitesurfは、クラウド上でコードを実行するCloudflare Workers上で動作します。 AIエージェントがウェブサイトを読み込み、ページ上で操作できるように設計されています。 状態を保持せず、タスクの実行中に利用するブラウザーです。
HTMLを解析し、CSSを適用してページの見た目を構成します。 ページのJavaScriptを実行し、スクリーンショットも生成できます。 ブラウザーのコンテナを用意せずに、これらの処理をWorkers上で行います。
ブラウザーを外部から操作するChrome DevTools Protocol(CDP)にも対応しています。 そのため、ブラウザー操作ツールのPuppeteerなどから接続できます。 公開されたコードはローカルでも実行でき、独自の変更を加えられます。
CPUとメモリーの使用量を重視
Kitesurfは、人が使うブラウザーにあるタブ、テーマ、拡張機能を備えていません。 ページを画素単位で正確に再現することよりも、エージェントの処理に必要な性能や拡張性などを重視しています。 Cloudflareは、スクリーンショットやHTML抽出ではChromiumよりCPUとメモリーの使用量が少ないとしています。
Cloudflareが14件のURLを対象に各5回実行した比較では、スクリーンショット処理のCPU時間の中央値はKitesurfが380ミリ秒、Chromiumが1173ミリ秒でした。 同じ処理のメモリー使用量は、それぞれ57.8 MiBと271.0 MiBです。 処理開始から完了までの時間は、Kitesurfが1148ミリ秒、Chromiumが637ミリ秒でした。
HTML抽出では、CPU時間の中央値がKitesurfで229ミリ秒、Chromiumで877ミリ秒でした。 メモリー使用量はそれぞれ39.4 MiBと273.7 MiBです。 処理開始から完了までの時間はKitesurfが820ミリ秒、Chromiumが472ミリ秒でした。
動画や継続的な認証セッションには制約
Kitesurfはベータ版として無料で利用できます。 利用にはアカウントごとの制限があります。 ページの内容抽出や、対応するサイトのPDF・スクリーンショット生成に使えます。
一方、動画の再生や、ウェブ上で3Dグラフィックを描画するWebGLには対応していません。 実際のTLSフィンガープリントを使ったボット対策の認証手続きにも非対応です。 状態の保持が必要な、長時間続く認証済みセッションにも向いていません。
WikipediaやHacker Newsなどのページは正しく描画できるとされています。 ページごとの表示は、公開プレイグラウンドで試せます。 Browser RunのQuick ActionsやCDP経由でも利用できます。
3つの主要部分と利用する技術
Kitesurfは、Engine、PageScript、PageRendererの3つを主要部分としています。 Engineはブラウザーのセッションとクライアント接続を管理します。 PageScriptがページとJavaScriptを実行し、PageRendererが結果を描画します。
内部では、プログラミング言語Rustで書かれたオープンソースの部品をWebAssemblyに変換して利用しています。 BlitzはHTMLの解析やページの構造、レイアウト、描画を担います。 StyloはCSSの解析や適用後のスタイルの計算を担当します。
JavaScriptをDynamic Workersで実行できない場合の最終手段として、Boaを使います。 テキストの配置や2D描画にはLinebenderのライブラリーを使い、PDFはKrillaで生成します。 これらの外部プロジェクトには、それぞれのライセンスが適用されます。
Browser Runからの利用と開発の経緯
Browser RunのQuick Actionsでは、エンドポイントに「browser=kitesurf」を指定して利用できます。 Workersからは、ブラウザーバインディングのquickAction()にも同じエンジンを指定できます。 CDPエンドポイントを通じてPlaywrightなどのクライアントから接続する方法もあります。
ローカル開発時にwrangler devからquickAction()を使う場合は、ブラウザーバインディングにリモート設定が必要です。 公開プレイグラウンドではコードを書かずにURLを入力して表示を試せます。 そこではページの構造やコンソールメッセージ、ネットワークの動作も調べられます。
Kitesurfは8月に導入され、9月にはウェブサイトとAIエージェントをつなぐWebMCPへの対応や新しいAPIが追加されました。 互換性も改善されています。 今回のコード公開により、開発者は自分のWorkers環境にKitesurfを配備できるようになりました。










