Cloudflare が「@cloudflare/computer」を公開 — すべての AI エージェントに「仮想コンピューター」を
- Cloudflare は、エージェントが作業するシェルを Linux の外に移した。
grep、sed、awkといったコマンドは、JavaScript で再実装されている。 - 軽い処理はミリ秒級の隔離領域に置き、難しい処理だけをコンテナに切り替える。同じファイルを両方の環境から編集できるが、そこに到達する経路はまったく異なる。
- リポジトリにはベンチマーク結果が公開されている。実ディスクより速い操作もあれば、41 倍遅い操作もある。
cloudflare/computer(参照日 2026-08-04)に基づく自己計測・自己評価であり、第三者による再検証はまだありません。核心的な課題と背景
Cloudflare が @cloudflare/computer を公開:各 AI エージェントに「仮想コンピューター」を割り当て、従来のコンテナを都度立ち上げる方式は採らない。
あらゆるクラウド、あらゆるハイパースケーラーを合わせても、全世界の計算能力をもってしても、全企業の全ユーザーの全エージェントにコンテナ型の計算環境を用意することは不可能です。
Cloudflare
これが、現在の業界で GPU だけでなく CPU の計算能力に対する、切迫した、恐慌的な需要が生まれている理由です。
この因果関係は成り立ちます。ただ、もう半分も語るべきです。この論理展開は、Cloudflare が持つ唯一の差別化資産をちょうど指し示しています。同社は10年前に Workers に賭け、6年前に Durable Objects に賭けました。そもそもハイパースケーラーが持つような CPU の大艦隊は持っていません。「コンテナでは足りない」というのは、真実の観察であると同時に、彼らにとって最も有利な論点でもあります。この2つは同時に成立し得る。どう解釈するかは、あなた次第です。
git clone、ファイル書き込み、node の実行はすべて右下のコンテナに投げている。出典:CloudflareCloudflare の解決策:エージェントに「専用コンピューター」を
発想はこうです。エージェントにずっしりしたコンテナを直接与えるのではなく、抽象化された「コンピューター」を与える。クラウド上に存在するファイルシステムと、そのファイルを操作できる複数の実行環境。この「コンピューター」は、3つの要素で成り立っています。
2種類の「働き手」を組み合わせる
npm、node、各種パッケージマネージャー、実バイナリがすべて揃っている。起動は遅くリソースも食うが、ここでしか動かない重い処理に適している。コンテナは、ゲストごとに独立したキッチンを建てるようなもの。水道・電気・コンロ完備だが、建設に時間がかかり、場所も取る。隔離領域は、共有の大きなキッチンで、各自に干渉しない調理台を割り当てるようなもの。割り当てはミリ秒で完了し、人が去ればすぐに台は返却される。代わりに、台にはオーブンがない。焼き物が必要なら、本物のキッチンに並ばなければならない。
この流れに沿って、Cloudflare はアーキテクチャ進化の図を描いています。左は年初のやり方で、エージェント、設定・秘密鍵、ツールがすべてコンテナ内にあります。真ん中は今日の姿で、ループを回す層が隔離領域に移り、設定とツールはまだコンテナに残っています。右が目指す先で、設定とツールも隔離領域に移り、コンテナにはどうしても必要な重い処理だけが残ります。
隔離領域に Linux はない。それなのにどうやって動くのか
これこそ、この提案全体で最も見落とされがちで、最も価値のある層です。隔離領域でシェルが動くのは、「just-bash」と呼ばれるもののおかげです。
just-bash は Vercel Labs が公開しているオープンソースプロジェクトで、bash の構文と約80個の unix コマンドを、純粋な JavaScript で再実装したものです。grep(複数ファイルからのキーワード検索)、sed(ルールに基づく一括テキスト置換)、awk、jq、sort、find、tar、diff、sqlite3——それぞれがバイナリプログラムではなく、1つの JavaScript 関数です。パイプ、リダイレクト、&&、変数、ワイルドカード、if、for、while、ユーザー定義関数も実装されています。
これこそが、隔離領域に収まる根本的な理由です。プロセスがなく、fork もなく、カーネルもない。あるのは、互いに文字列を渡し合う JavaScript 関数の集まりだけです。
その代償は、非常に硬い境界線です。Cloudflare のこのパッケージのソースを見ると、デフォルトのシェル環境では just-bash の3つの機能が明確に無効化されています。Python、JavaScript 実行、ネットワークです。前の2つは無効化というより「できない」に近い。それらは node:worker_threads に依存していますが、Cloudflare のランタイムはこのモジュールをサポートしておらず、インストールできないからです。ネットワークが無効というのは、curl が隔離領域には存在しない、ということです。
では git clone はどうやって成功するのでしょうか?隔離領域のシェル自体にはネットワークがないため、git は偽コマンドです。これはホスト側の Durable Object に処理を委譲し、ホストが実際のネットワークリクエストを送信します。取得したファイルは共有ファイルシステムに直接書き込まれます。隔離領域は最初から最後までネットワークに一切触れません。
git clone を実行しても、コマンド自体はネットワークリクエストを飛ばせない。処理はホストに委譲され、ホストがコードを取得して共有ファイルシステムに書き込み、隔離領域がそれを直接読む。図は当サイトがリポジトリのソース git-command.ts に基づき作成。エージェントが実行環境を自ら選ぶ
エージェントはコマンドを叩くたびに、この境界線を判断しています。
- 約80個のテキスト・ファイル操作コマンド(
grepsedawkjqsqlite3を含む) git clone/status/diff/log(ホストに委譲して実行)- ファイルの読み書き・編集、ディレクトリ走査
- 完全な bash 構文:パイプ、ループ、関数、変数
- パッケージのインストール(
npm installは実行不可) nodeやpythonの実行- 実バイナリプログラム全般(
pandoc、ffmpegも不可) - 自前でのネットワークリクエスト(
curlは存在しない)
最先端モデルはこの判断が非常に得意で、本当に必要な時だけコンテナにフォールバックします。モデルに渡すツールの説明には、コンテナ側に「完全な Linux ユーザー空間:npm、node、パッケージマネージャー、テストフレームワーク、および $PATH 上の実バイナリがあります」と明記され、それに従って選択できるようになっています。
実際の実行記録を見てみましょう。ユーザーがエージェントに cloudflare/computer リポジトリの依存関係を更新するよう依頼した場面です。インターフェース上の各コマンドの横には、それがどこで実行されたかを示すラベルが付いています。
git clone には ISOLATE・GIT、ls には ISOLATE と表示。read は 0 ミリ秒、webfetch は 216 ミリ秒、apply_patch は 0 ミリ秒。一連の作業の中でコンテナを使用したのは npm install のみで、665 個のパッケージのインストールに 56 秒かかった。出典:Cloudflare一連の作業のうち、本当に Linux が必要だったのはパッケージインストールの1ステップだけ。それだけで 56 秒を消費し、残りはすべてミリ秒級だった。
Cloudflare は自らにこう目標を課しています。コンテナが担うのは 10% 未満の処理に留め、コーディング、音声・動画処理、ドキュメント生成は隔離領域で完結させる、と。これは目標であって、現状ではありません。上の能力境界の表と照らし合わせれば、その距離は明らかです。今日の隔離領域には Python がなく、node もなく、ネットワークもなく、パッケージのインストールもできません。音声・動画処理に至っては、実現可能な道筋すら見えていません。この 10% という数字に、実測の裏付けは一切ありません。
二、共有ファイルシステム
ファイル自体は、Durable Object が持つ SQLite に保存されます。そこが唯一の原本です。エージェントが隔離領域で操作しようと、コンテナで操作しようと、見ているのはこの1つだけ。コピーを持ち歩く必要も、それぞれで初期化し直す必要もありません。
しかし、そこに到達する経路は、両者でまったく異なります。
pandoc は、ファイルを通常のファイルとして開く必要があるからです。そこで Cloudflare は、自作のデーモン computerd をコンテナに仕込み、ファイルを FUSE ファイルシステムとしてマウントします。コンテナ内のプログラムはこのマウントポイントを読み書きし、変更は RPC チャネルを通じて同期されます。FUSE マウント:「実際にはディスクではないもの」を、通常のプログラムがディスクのディレクトリとして使えるようにする仕組み。コンテナ内のプログラムは通常のファイルを読んでいるつもりでも、実際の読み書きはすべて遠隔の Durable Object に転送されます。
なぜブロックに分割してハッシュを計算するのでしょうか?そうすることで、Durable Object は変更されたブロックだけを同期すればよくなり、同じ内容は自動的に重複排除されるからです。その代償は、スループットに直接現れます。
この構造を図にすると、次のようになります。
computerd デーモンの誤記と判断しました。出典:Cloudflare公式チュートリアルの例は、この役割分担がどれほど省力化になるかを最もよく示しています。あなたが料理名を POST すると、エージェントがレシピサイトで作り方を見つけ、ホスト側で card.md を書き、コンテナ内で pandoc card.md -o card.pdf を実行して PDF に変換し、最後に R2 にアップロードして1日有効なリンクを返します。Markdown を書くのは純粋なファイル操作なので、ホスト側で完結し、コンテナを起動する必要はありません。pandoc は実バイナリなので、コンテナに入らなければなりません。コンテナはマウントを通じて同じ /workspace を見るため、書き込まれたばかりのファイルを読み取ることができ、生成された PDF も戻ってきます。
この設計の代償:小さいファイルは速く、大きいファイルは遅い
Cloudflare は FUSE マウントポイントとコンテナ自身の ext4 ディスクで対照テストを実施しました。環境は standard-2 コンテナインスタンス:1 vCPU、6 GiB メモリ、12 GB ディスクです。
結果は2種類の作業で分かれました。ファイル数が多くて1つ1つが小さい作業は、実ディスクより速い。大きなファイルの順次読み書きは、見苦しいほど遅い。
バーの長さは所要時間の倍率に基づく。緑はコンテナの実ディスクより速いもの、オレンジは遅いもの。倍率が1未満なら速いことを意味する。
| シナリオ | FUSE マウント | コンテナ ext4 ディスク | 倍率 |
|---|---|---|---|
| ファイル1000個削除 | 827.7 ms | 1281.8 ms | 0.66× |
ディレクトリツリー走査 find | 1813.6 ms | 4404.2 ms | 0.72× |
| git 初期化 + 100ファイル コミット | 459.2 ms | 635.4 ms | 0.72× |
| 10×10×10 ディレクトリツリー作成 | 1597.5 ms | 3034.7 ms | 0.74× |
| git シャロークローン(約 1 MB) | 549.1 ms | 576.2 ms | 0.84× |
stat 1000ファイル | 1971.9 ms | 2659.3 ms | 0.91× |
| npm 初期化 + 小規模インストール | 598.5 ms | 630.7 ms | 0.95× |
| ファイル1000個作成 | 560.6 ms | 303.2 ms | 1.85× |
| 完全な npm install(854パッケージ、36675ファイル) | 124.7 s | 63.9 s | 1.95× |
| 64 MiB 書込 | 230.6 ms | 16.8 ms | 16.9× |
| 64 MiB 読込 | 263.1 ms | 8.5 ms | 30.3× |
| 64 MiB コピー | 852.9 ms | 22.0 ms | 41.5× |
速い半分には明確な理由があります。ファイルインデックスがメモリ上にあるため、「ディレクトリを探す、状態を確認する、小さいファイルを削除する」といった操作では、実ディスクのシーク(シーク: 読み書き位置を探す動作)コストが省けます。遅い半分の理由も明確で、上記のブロック分割・ハッシュ計算という長い経路のせいです。書き込みのたびに再計算が必要になり、dd のような生のスループットでは結果が見苦しくなります。
速い8つのシナリオは、git status、モジュール解決、インクリメンタルビルドといった、日常の開発で実際に時間を費やす部分をカバーしています。一方、大きなファイルの順次読み書きは、実際の開発負荷ではほとんど発生しません。証拠は表にあります。「npm 初期化 + 小規模インストール」は実ディスクとほぼ互角(0.95 倍)なのに、同じマウントポイントでの「64 MiB 読込」は30倍遅いのです。
三、制御とセキュリティ
エージェントによるすべての操作には、ゲート、監査、可観測性が備わっています。分解すると、次のようになります。
この説明には2つの注意点があります。どちらも知ってから使うのがよいでしょう。
1点目、そのパスチェックはセキュリティ境界ではありません。「ルート以下に解決する」というアトミックな操作ではないため、単一の隔離領域の能力を使って、より高い権限を持つ別の主体がパスを並行して置き換える攻撃に対抗することはできません。そうした敵対的な並行処理を防ぐには、将来のトランザクショナルな基盤を待つか、両側に独立したワークスペース ID を使うしかありません。
2点目、「記録」は3種類のバックエンドで一貫していません。隔離領域 JavaScript の方は、ワークスペースデータベースに実行ログを残し、イベントと結果は明示的にクリーンアップするまで保持されます。一方、隔離領域シェルは、このバージョンではリクエストをまたぐイベントを明確に保持せず、ID による再接続もできません。監督者的なプロセス動作が必要なら、公式にはコンテナ側を使うことが推奨されています。
さらに、実行が失敗またはキャンセルされた場合、すでにディスクに書き込まれたファイルの変更はロールバックされません。
導入方法(開発者視点)
インストールと接続
パッケージ自体は MIT ライセンスの無料オープンソースで、npm install @cloudflare/computer でインストールできます。現在のバージョンは 0.1.1、7月29日に npm へ初めてアップロードされました。
インストール後、ワークスペースは任意の Durable Object に接続できます。Cloudflare 自身のエージェントフレームワーク @cloudflare/think を使えば、さらに短いコードで接続できます。これには AI SDK 互換のツールセットが同梱されており、エージェントに read、write、edit、ls、exec という基本ツールをすぐに提供します。このうち exec には backend パラメータがあり、これが先ほど説明した選択ラインです。
すぐ使えるランタイムは3種類
Cloudflare のブログでは2種類と書かれていますが、リポジトリの README と npm パッケージのエントリポイントはどちらも3種類です。
node:fs/promises が同じファイルに接続される。3つ目は Code Mode のアイデアの具現化です。モデルにシェルコマンドを1つずつ叩かせるのではなく、コードを直接書かせるのです。
かかる費用
パッケージは無料ですが、実際に動かそうとすると無料プランでは門前払いです。
| 必要なもの | 無料プラン | Workers Paid(月額5ドル) |
|---|---|---|
| コンテナバックエンド | なし(公式価格表のこの欄は N/A と記載) | 375 vCPU-分(シングルコアで6時間強)+ 25 GiB-時間メモリを含む |
| 隔離領域の1回あたり CPU 時間 | 10ミリ秒(シェル実行はほぼ不可能) | デフォルト30秒、最大5分まで調整可 |
| 単一ワークスペースの最大容量 | 1 GB | 10 GB |
ローカル開発には Docker のインストールも必要です。wrangler がローカルでコンテナイメージをビルドするからです。実行可能なサンプルが8個付属しており、その1つは空のディレクトリから始めるステップバイステップのチュートリアルで、先ほどのレシピを PDF に変換する例です。
まだ本番投入はできない
これは今のところ、実験・探索・プロトタイプ専用です。本番環境には適していません。API は不安定で、設計はいつでも変更されます。あの設計仕様書も将来を見据えたもので、意図を書いたものであって、コードの現状ではありません。3つのハードな制限があります。
| 制限 | 意味すること |
|---|---|
| 最大約 10 GB | Durable Object とストレージ枠を共有。有料プランの各 SQLite 型 Durable Object は上限10 GB、無料プランはわずか1 GB。 |
| コンテナ側のファイルシステムはメモリ上にある | 超大規模なディレクトリツリーには不向き。原文:エージェント規模のワークスペースが目標であり、モノレポ全体ではない。 |
| コンテナは FUSE 経由 | 重い IO 負荷(大規模な node_modules インストール、大きなアーカイブの展開など)では、測定可能なパフォーマンス損失がある。 |
価値とまとめ
具体的なシナリオとして、Cloudflare は社内で既に、隔離領域だけで一連の作業を完結させたエージェントがあると述べています。最新のツールチェーンを使った JavaScript アプリのビルド・テスト・デプロイ、顧客ごとのカスタムドキュメント生成、ブラウザを使った複雑なタスクの実行などです。これらは以前はすべてコンテナを起動する必要がありました。
一言でまとめると:エージェントがほとんどの場合、超軽量の省コストモードで作業し、難しい問題に直面した時だけヘビーモードに切り替える。これにより、大規模なエージェント実行が高速かつ経済的になる。
今日、これはまだ 0.1.1 のプレビュー版であり、本番投入はできません。しかし、「エージェントが実際に必要とする計算資源はどれほどか」という計算を、見苦しい数字まで含めて公然と示しました。
cloudflare/computer リポジトリ(参照日 2026-08-04)に基づくもので、Cloudflare のブログには言及がありません。価格と CPU 時間の上限は Cloudflare 公式ドキュメントに基づきます。ブログでは「すぐ使えるランタイムは2種類」とありますが、リポジトリは3種類としており、当サイトはリポジトリの記述に従いました。両方の情報を明記しています。「400回のタスク」は当サイトが公式価格表に基づいて行った概算であり、原文にはこの数字はありません。Cloudflare が AI エージェントのコマンドラインを JavaScript で書き換えた
オープンソースパッケージ @cloudflare/computer:約80個の unix コマンドを Linux の外へ。どこが速くて、どこが遅いのか、図解で1ページに。
↓ 1ページで完結 · 動く図あり
AI エージェントがコードを書き、テストを実行し、ファイルを管理するには、実際に処理を実行できる「コンピューター」が必要です。今日の標準的な方法は、専用の Linux コンテナ(環境を整えた小規模サーバー)を立ち上げることです。Cloudflare の判断は、この方法ではスケールしないというもの。コンテナを1つ起動するたびにメモリとディスクを専有し、起動には秒単位の時間がかかります。「数億のエージェントが同時にオンライン」という掛け算をすれば、全世界の CPU を合わせても足りません。
同社が8月3日に公開したオープンソースパッケージ @cloudflare/computer は、別のアプローチを取ります。ほとんどの場合、コンテナを起動せず、ミリ秒級の隔離領域(isolate。同じ JavaScript エンジン内に確保された、互いに干渉しない小さな実行空間)だけを立ち上げるのです。
起動:秒単位
メモリ + ディスクを専有
セッション中ずっと占有
起動:ミリ秒級
アイドル時は自動スリープ
難しい処理だけコンテナへ
この因果関係は成り立ちますが、もう半分も言うべきでしょう。Cloudflare はハイパースケーラーのような CPU の大艦隊を持っておらず、10年前から隔離領域に賭けてきました。「コンテナでは足りない」は真実の観察であると同時に、彼らにとって最も有利な論点でもあるのです。
鍵を握るのは、just-bash というオープンソースプロジェクト(Vercel Labs 製)です。bash の構文と約80個の unix コマンドを、純粋な JavaScript で再実装しています。grep(キーワード検索)、sed(一括テキスト置換)、jq、find、tar。それぞれが起動するプログラムではなく、1つの JavaScript 関数になりました。プロセスもカーネルもなく、ただ関数が互いに文字列を渡し合うだけ。これが隔離領域に収まる根本的な理由であり、同時に npm や Python が動かない理由でもあります。
git clone / status / diffnpm install は実行不可)· node / python の実行 · 実バイナリ全般(pandoc、ffmpeg も不可)· 自前でのネットワークリクエスト(curl は存在しない)git は偽コマンドです。隔離領域にネットワークがないため、処理をホストに委譲し、ホストがコードを取得して共有ファイルシステムに直接書き込みます。エージェントはコマンドを叩くたびに、どちらで実行するかを自ら判断します。公式の実際の記録では、一連の作業でコンテナに入ったのは
npm install の1ステップだけで、665個のパッケージのインストールに56秒。残りはすべてミリ秒級でした。ファイル自体は Durable Object(Cloudflare 上で、SQLite データベースを内蔵し、再起動してもデータが消えない長期オブジェクト)に保存されます。そこが唯一の原本です。隔離領域もコンテナも、変更するのはこの1つですが、そこへの到達経路はまったく異なります。
Cloudflare は FUSE マウントポイントとコンテナ自身の実ディスクで対照テストを実施しました。結果は2種類の作業で分かれました。同じマウントポイントで、ディレクトリ走査は実ディスクより速く、大容量ファイルのコピーは41倍遅い。
速い遅いの分かれ目はここにあります。ディレクトリ走査、状態確認、小ファイル削除といった操作は、ファイルインデックスがメモリ上にあるため、実ディスクのシークコストが省けます。一方、大容量ファイルの順次読み書きは、ブロック分割とハッシュ計算を延々と繰り返すため、生のスループットで見苦しい結果になります。Cloudflare の説明では、前者こそが日常の開発で実際に時間を費やす部分だということです。
パッケージは既にインストール可能です。npm install @cloudflare/computer。MIT ライセンスの無料オープンソースで、現在のバージョンは 0.1.1。ただし、リポジトリ自身が PREVIEW ONLY と明記しています。
また、広く流布している「コンテナが最終的に担うのは10%未満」というのは Cloudflare が設定した目標であり、実測の裏付けはありません。今日の隔離領域には Python もネットワークもなく、パッケージも入れられません。同社が言及する音声・動画処理に至っては、実現可能な道筋すら見えていません。
コンテナ1台
- × 起動は秒単位
- × メモリとディスク
を専有 - × セッション中
ずっと占有
全世界の CPU を合わせても、1体に1台は無理だ。
この掛け算は
破綻する
Cloudflare は別の道を選んだ。軽い処理はミリ秒級の隔離領域に置き、just-bash というオープンソースプロジェクトで支える。
unix コマンドを
JavaScript で
書き直した
grep、sed、awk、jq
すべてが
1行の JavaScript に
隔離領域にはネットワークがなく、パッケージも入れられず、python も動かない。公式の記録では、一連の作業でコンテナに入ったのは npm install だけ。665個のパッケージに56秒。残りはすべてミリ秒級だった。
両方が変更するのはこの1つだが、到達経路は大きく異なる。すべての性能差はここから生まれる。
64 MiB のコピー:852.9 ミリ秒。
実ディスクでの同操作:22.0 ミリ秒。
逆に高速
1813.6 ミリ秒
実ディスク 4404.2 ミリ秒
ファイルインデックスが
メモリ上にあり、
ディスクのシークを回避
パッケージはインストール可能。MIT ライセンスの無料オープンソースで、現在 0.1.1。リポジトリのトップには PREVIEW ONLY と明記。API は不安定で、設計はいつでも変わる。
- × 無料プランに
コンテナなし - × 1回の呼び出し
CPU 10ミリ秒 - × ワークスペース
上限約10 GB - × コンテナ利用は
月5ドルから
残りはミリ秒級の隔離領域へ。代償は大容量ファイルの読み書きが数十倍遅くなること。
ベンチマークは Cloudflare が自社リポジトリで公表した自己計測。第三者の再現はまだない。
