深掘り · XiaoHu 解説

camelAI、AIエージェントを仮想マシンから Cloudflare エッジへ移行

同社の説明では、コストは数桁削減され、応答も高速化。低コストモデルでも動かせるようになりました。コードは 7 月 24 日に全面オープンソース化されています。
1分で要点
  • 多くのチームは AIエージェントを完全な Linux 仮想マシン上で動かしています。camelAI も当初は同じでしたが、コストを試算した結果、マシンそのものを解体しました。
  • 解体は3段階です。まず AIエージェントを移し、次にファイルをデータベースへ移し、最後にコマンドラインを通常の実行環境から外しました。ユーザー体験は変わっていません。
  • 最も大胆なのは、コマンドラインを外した第3段階です。ただし、コードを見ると限定的な実行経路は残されています。
⚑ 本稿の資料は camelAI 自身のエンジニアリングブログです。処理性能、コスト、モデルの能力に関する主張はすべてチームの自己評価で、第三者による検証はありません。「検証済み」と記した箇所は、当サイトが同社のオープンソースリポジトリと Cloudflare 公式ドキュメントを照合したものです。
出発点

ユーザーごとに常時稼働マシンと高速ディスク — 想定規模では採算が合わない

これは camelAI の CTO、Miguel Salinas が執筆したアーキテクチャ刷新の振り返りです。同社は独立した仮想マシン上で動いていた AIエージェントを全面的に作り直し、Cloudflare Durable Object 上の軽量アーキテクチャへ移行しました。その結果、コストとレイテンシーは大幅に低下したといいます。刷新は3段階で行われ、コードは 7 月 24 日に全面オープンソース化されました。各機構の実装をリポジトリで確認できます。

camelAI を知らない方はこちら

camelAI は、3人のチームが開発する AI プログラミングアシスタントです。Illiana Reed がプロダクト、Miguel Salinas が技術、Isabella がオペレーションを担当しています。

チャット欄で作りたいものを伝えると、コードを書き、依存関係を導入し、プロジェクトを起動。最後はアクセス可能な URL へデプロイします。データベースや数十種類の外部サービスにも接続でき、Pythonノートブックの実行やダッシュボード作成にも対応します。

公式サイトでは「自分専用のコンピューターに住む AI ソフトウェアエンジニア」と紹介されています。その「コンピューター」とは、ユーザーごとに割り当てられた Linux 仮想マシンです。本稿で解体されるのは、まさにこれです。

多くのチームは、完全な Linux 仮想マシンやコンテナサンドボックスで AIエージェントを動かしています。camelAI も当初は同じでした。

問題はコスト構造です。ユーザーごとに常時稼働するマシンを用意し、ファイル保存用の高速ディスクも接続する必要があります。ユーザーが増えれば、物理マシンとディスクも増設しなければなりません。同社が想定するユーザー規模では、この方法は成り立ちませんでした。

ユーザーの実利用時間 マシン稼働・課金時間 1日 ユーザー倍増で下段も倍増
概念図。出典には具体的な時間が示されていません。2本の時間差が、仮想マシン方式で余分に支払うコストです。

難しいのは、AIエージェントが Linux 上で動くことを前提としている点です。問題にぶつかると bash を呼び出すよう学習されています。camelAI が当初使っていたのは Claude Code のハーネスで、実行には完全な仮想マシンが必要でした。ハーネスとは、モデルの外側を包むプログラムです。対話ループ、ツール、状態を管理します。

ハーネスは何を担うのか
AIの自己進化はモデルの外側から — Lilian Weng が解くハーネス工学
「モデルは変えず、外側のプログラムだけを変える」という同じ発想です。ハーネスの役割と、変更による効果を詳しく解説しています。

そこで同社は、仮想マシンの効率的なスケジューリングを考えるのではなく、「そもそも仮想マシンは不要」という前提で設計をやり直しました。

4カ月余り前、camelAI の CEO、Illiana Reed はブログの冒頭で「camelAI の全ユーザーには、永続的なコンピューター、つまり本物の Linux 環境がある」と述べ、これをプロダクトの中核的な約束としていました。その記事では、Modal、Cloudflare Containers、Fly.io の Sprites を試したものの要件に合わず、最終的に1週間で独自のコンテナサービスを構築した経緯を説明しています。今回 Miguel はこう書いています。「記事は今も公開しているが、そのインフラでは1台も動かしていない」。

仮想マシンの中には、AIエージェント本体、プロジェクトファイル、コマンドラインという3つの要素がありました。3回の刷新では、それらを1つずつ移しています。移すたびに、それまでの役割を誰が担うのかを決めなければなりませんでした。

解体前 置き換え先 Linux 仮想マシン · 常時稼働 AIエージェント本体 プロジェクトファイル bash コマンドライン 第1段階 第2段階 第3段階 Cloudflare エッジへ移行 DBとオブジェクトストレージ 64個の固定メソッド 3つを移せば、マシンは不要
3段階の解体ロードマップです。以下の3節で1つずつ、その効果を見ていきます。当サイトが原文とリポジトリのソースコードを基に作成しました。
第1段階

AIエージェント本体を移す — 応答は高速化、マシンは残る

Claude Code のハーネスは仮想マシンと切り離せません。そこで最初に、独自のハーネスを実装しました。

基盤に採用したのは pi です。Mario Zechner が開発する、MIT ライセンスのオープンソース AIエージェントツールキットで、GitHub では 8.1 万 star を獲得しています。pi は単一のプログラムではなく、複数のライブラリで構成されています。最上位層のコマンドラインツールは、OS上での動作を前提とします。一方、下層は対話ループや状態管理など、AIエージェントの基本部品だけを提供し、実行場所を問いません。camelAI は pi のコードを1行も変更せず、下位2層だけを利用しました。

検証済み

camelAI の package.json にあるのは @earendil-works/pi-agent-core@earendil-works/pi-ai(いずれも 0.80.6 版)だけです。OS の存在を前提とするコマンドライン層、pi-coding-agent は含まれていません。

新しいハーネスは、1つの Durable Object 内で動きます。Durable Object は Cloudflare の小型コンピュートインスタンスです。専用ストレージを備え、ユーザーに最も近いデータセンターで起動します。camelAI はチャットセッションごとに1つ割り当てています。