
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
エージェントは自宅のコンテナで動作。あなたは街の反対側にいる。エージェントループが各ステップを Hoody Pipe にパイプ; スマートフォンのタブから同じパスを curl。トレースが文字単位で届く — SSH なし、ダッシュボードなし、アップロードなし。
エージェントのループはすでに構造化されたイベント — think、tool_use、result — を発行している。それらを PUT でパスにパイプ。スマートフォンから、同じパスを GET。パイプはバイトを保存しない; 読み手にそのまま流す。
2 つの HTTP コネクション、1 つのパス。パイプは送信側が到着するまで受信側のコネクションを保持する — エージェントが起動する前にスマートフォンを開いておくこともできるし、実行中に参加することもできる。Hoody Pipe はその間のワイヤーであり、決してデータベースではない。
エージェントは 4 種類の行を発行する。それぞれがダッシュボードでは得られないことを伝える: 何が起こったかだけでなく、起こったときにエージェントが何を考えていたか。
モデルの計画を、自分の言葉で。なぜこのツールを選んだのか、何を期待しているのか、どこで分岐する可能性があるか。これらを読むことは、エージェントの心をリアルタイムで読むこと。
[think] user wants invoice CSV…エージェントが呼び出すと決めた正確な関数と引数。1 つの呼び出しにつき 1 行、ループが発火した順序で。SDK の抽象化なし; ワイヤーレベルのリクエストそのもの。
[tool_use] sql.describe("invoices")ツールのレスポンスを、行に要約。行数、ファイルサイズ、ステータスコード、エラーメッセージ。次の [think] 行が推論する対象。
[result] 12 rows · 41 msエージェントが発行するごとに各行が届く。5 秒ごとの更新なし、「2 分前に更新」なし。カーソルが点滅しているとき、エージェントは思考の合間にいる。リフレッシュではなく tail している。
[tool_use] files.write("invoices.csv")エージェントは 40 分間動いた。あなたは本のように読んだ。
40 分の推論、ツール呼び出し、結果 — 1 つの連続した、色分けされたテキストストリームとしてレンダリング。エンドポイントをポーリングしているのではない。ダッシュボードをリロードしているのではない。カフェからエージェントの心を tail している。
エージェントを観察することは、これまで SaaS、ダッシュボード、または独自の WebSocket アプリを意味してきた。「ただ curl したらどうなる?」という質問の前にはどれも生き残れない。
ループをパイプ、パスを curl。エージェントの思考は、読める tail になる。