
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
オフィスを出る前に 40 分のエージェントをキックオフしました。いま電車の中。エージェントはトレースをパイプパスにストリーミングし、スマホから同じ URL を curl して状態メッセージが流れていくのを眺めます。ループが終わると、hoody-notifications がブザーを鳴らします。2 つの URL とブザー — SDK もダッシュボードもポーリングもなし。
上にライブ tail、下にプッシュ通知 — 同じスマホ、同じエージェント。トレースは流れ続けるモノローグでチラ見するもの。通知は終止符。どちらを配線するか選ぶ必要はなく、両方ともエージェントから来て、すでにポケットの中にあるデバイスに着地します。
エージェントのループが各イベントを PUT でパスに流します。電車の中から、ターミナルアプリで同じパスを GET します。行が起きたとおりに着地します — 5 秒のリフレッシュも、「最終更新」のタイムスタンプもありません。画面を見て、エージェントが生きているのを確認し、スマホをしまいます。
外側のループが終わると、エージェントの最後の呼び出しが 1 行のサマリーとともに hoody-notifications に届きます。スマホが振動します。ロック解除しなくても — バナーを読むだけで、次の駅に着く前に実行が完了したのが分かります。
Hoody Pipe がライブ tail を運び、hoody-notifications がブザーを運びます。エージェントは他の HTTP 呼び出しと同じように扱います — PUT と POST、その間に SDK はありません。
出かける前にセットアップしたサーバーでエージェントが動作します。移動中、ループの中の唯一のクライアントはスマホです。エージェントがすべての作業をし、スマホがすべての監視をします。
ループの中で、すべてのイベント — think、tool_use、result — が 1 つのパスにパイプされます。パイプは読んでいる相手にストリーミングし、まだ誰も読んでいなければパスは最大 5 分間オープンを保ちます。
PUT https://agent-pipe.…hoody.com/api/v1/pipe/agent-traceスマホでターミナルを開きます。curl -N でパスを叩きます。トレースは着地するたびに表示されます — SSE の配管も、ブローカーも、インストールするアプリもありません。見たくなくなったらタブを閉じます。
$ curl -N https://agent-pipe.…hoody.com/api/v1/pipe/agent-trace外側のループが返ると、エージェントは 1 行のサマリーを hoody-notifications に POST します。スマホはそこからシステムプッシュを受け取ります — カレンダーリマインダーと同じブザー、アプリ不要。
POST /notify ["summary":"billing-reconcile-7","body":"completed in 41:08"]ブザー用にもう 1 つ、計 2 つの HTTP パス。エージェントはあなたのスマホの存在を知らず、ただ HTTP を話します。スマホはエージェントのコンテナを知らず、ただ URL を開きます。
すべての単語を読むわけではありません。3 つのトークンをスキャンします:思考、呼び出し、結果。動いていればエージェントは生きています。止まっていれば、次のプッシュで時刻を確認します。
なぜこのツールを選んだか、何を返ってくると見込んでいるか、どこで分岐しうるか。電車でこれを読むのは、エージェントの心をリアルタイムで読むこと — 推論の各ステップに 1 行。
[think] 7 月の請求を照合エージェントが呼び出すと決めた正確な関数と引数。呼び出しごとに 1 行、発火順に。SDK の抽象化も、不透明な ID もなし — ワイヤーレベルのリクエストそのものです。
[tool_use] sql.exec("SELECT …")行数、時間、ステータスコード — 次の [think] 行が考えるべきもの。外側のループが終わると最終的な結果がワイヤーに着地し、hoody-notifications がポケットの中のスマホを震わせます。
[result] 412 行 · 88 msあなたのスマホがエージェントのステータスバーです。
ダッシュボードなし。アプリなし。デバイスに送られる SDK もなし。エージェントはサーバーで動き、ステータスはスマホで生き、その間にあるのは HTTP だけ。電車を乗り換えても、キャリアを切り替えても、2 駅分電波を失っても — 再接続すれば、次の [result] 行が表示され続けます。
長時間動くエージェントを見守るというのは、これまで SaaS、ダッシュボードのタブ、あるいはカスタム Webhook + ボットを意味してきました。「スマホから curl すれば良いだけでは?」という問いの前では、そのどれも生き残れません。
トレースをパイプし、ブザーを POST。あなたのスマホがエージェントのステータスバー — アプリ不要。