cloudflare/computer

Give your agent a computer 👾

Cloudflare Computer – 概要

Cloudflare Computer は、Cloudflare Durable Object をバックエンドとする仮想ファイルシステムを提供するライブラリです。Durable Object はファイルデータを SQLite に保存し、ライブラリは 3 つの交換可能な「バックエンド」を介してそのファイルシステムを読み書きするコードを実行できます。

バックエンド 仕組み 得られるもの
コンテナ SQLite 状態は FUSE マウントを介してサンドボックス化された Linux コンテナに投影されます。デーモン(computerd)がコンテナ内で実行され、Cap'n-Proto-over-WebSocket RPC チャネルを介して FS を公開します。 完全な Linux ユーザーランド、実際のバイナリ、ネットワークアクセス – 任意のツール(例:pandoc、git)を実行する必要がある場合に最適です。
Isolate Shell Cloudflare Dynamic Worker 内で軽量な just-bash シェルを実行します。Workers RPC を介して Durable Object を直接呼び出すため、追加のストレージ同期はありません。 非常に高速なシェルコマンド、コンテナオーバーヘッドなし、ただしシェル互換ツールのみ。
Isolate JavaScript ECMAScript モジュールを実行する新しい Dynamic Worker を起動します。モジュールは Workspace によってバックアップされた node:fs/promises のような API と、特別なホストモジュール(ws:git、ws:artifacts、ws:container)を認識します。 仮想 FS を読み書きし、Cloudflare 提供のサービスを呼び出す JavaScript コードを実行します。

3 つのバックエンドはすべて単一のエントリポイントからアクセスされます。

await workspace.runtime.exec(source, { backend: "container" })

source はシェルコマンド(シェルバックエンドの場合)または ES モジュール(JavaScript バックエンドの場合)にできます。Workspace はバックエンドなしで作成することもでき、ファイルシステム API のみを公開します。


AI / エージェントにとって重要な理由

多くの AI エージェントアーキテクチャでは、永続的で可変なワークスペースが必要です。そこでは次のことができます。

  • 中間ファイル(例:ダウンロードした画像、生成されたコード)を保存する。
  • 外部ツール(コンパイラ、画像プロセッサ、git)を実行してファイルを変換する。
  • 複数の呼び出しまたはワーカー間で同じ状態を共有する。

Cloudflare Computer はまさにそれを提供しますが、Cloudflare のエッジプラットフォームでホストされているため、ワークスペースは AI モデル推論ワーカーの近くにあり、Durable Object 対応の任意のサービスからアクセスできます。


主な機能

  • Durable-Object バックアップの永続性 – Durable Object 内の SQLite は強力な一貫性と自動レプリケーションを保証します。
  • プラグ可能な実行バックエンド – 完全な Linux コンテナ、軽量な Bash シェル、または JavaScript モジュールから選択でき、すべて同じ FS サーフェスを使用します。
  • FUSE スタイルのマウント – コンテナバックエンドは仮想 FS を実際のマウントとして提示し、任意の Linux バイナリがそれを操作できるようにします。
  • 構造化 RPC – Durable Object とコンテナデーモン間の通信は、Cap'n-Proto-over-WebSocket プロトコル(@cloudflare/computer-rpc)を使用します。
  • AI エージェントの例のファーストクラスサポート – リポジトリには、典型的なエージェントワークフローを示す多くのすぐに実行できるデモ(例:ワンショット pi エージェント、TanStack AI チャットループ、PDF 生成チュートリアル)が含まれています。
  • パフォーマンステスト済み – ベンチマークでは、FUSE マウントがメタデータ集約型ワークロードで実際のディスクよりも優れていることが示されています。

典型的なユースケース

  1. エージェントツール実行 – LLM 駆動のエージェントは、ワークスペースに git clone の実行、コードのコンパイル、または pandoc を呼び出して markdown を PDF に変換することを要求できます。すべてコンテナバックエンドを介して行われます。
  2. RAG スタイルのデータパイプライン – 取得した Web コンテンツを保存し、テキスト処理スクリプトを実行し、クリーンなデータをモデルにフィードバックします。すべて同じ Durable Object ワークスペース内で行います。
  3. マルチランタイム実験 – think-compare-runtimes の例を使用して、タスクがコンテナ、Bash ワーカー、JavaScript ワーカーでどのように実行されるかを比較します。
  4. アーティファクト公開 – ワークスペース内でプロジェクトを生成し、artifacts の例を使用して Cloudflare Artifacts に公開します。

成熟度と安定性

  • トップレベルの @cloudflare/computer パッケージは、コア API が安定とマークされていますが、コンテナおよびワーカーシェルバックエンドはまだ実験的であり、本番環境には推奨されません。
  • 基盤となる @cloudflare/dofs(Durable Object FS)は安定しています。
  • 詳細なステータステーブルは packages/computer/README.md#status にあります。

はじめに

  1. パッケージをインストールします:
    npm i @cloudflare/computer
    
  2. パッケージ固有の README(packages/computer/README.md)に従ってください:
    • Workspace を作成する Durable Object の設定。
    • バックエンドを選択し、workspace.runtime.exec を呼び出します。
    • 提供されている例を実行します(npm run build:types && npm run dev:example/<name>)。
  3. 簡単なデモには、チュートリアルの例を試してください。これは、markdown レシピを書き、コンテナ内で pandoc を実行し、PDF を返す単一のエンドポイントを構築します。

ドキュメントとリソース

  • 設計仕様 – docs/(将来を見据えた、意図のみ)。
  • パフォーマンス数値 – docs/19_performance.md。
  • 例 – examples/ フォルダを参照してください。各サブフォルダには独自の README があります。
  • 貢献ガイド – CONTRIBUTING.md、COLLABORATORS.md。

ライセンス

MIT。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト