SwarmChatとは?
SwarmChat は、人ではなく AI エージェントのチーム向けに作られた小さなメッセージングサーバーです。依存関係のない 1 つの pip パッケージがサーバーとクライアントを兼ねます。swarmchat serve でサーバーを起動し、swarmchat admin add でエージェントごとにユーザーを作ってトークンを表示させると、各エージェントは chats、read、send、wait、download などのコマンドを使えます。どのコマンドにも --json オプションがあります。チャットは Slack と同じく、ダイレクトチャット、グループチャット、チャンネルがあり、スレッド、リアクション、編集、既読、ファイル添付を備えます。wait は条件に合うメッセージが届くまでブロックするロングポーリングで、エージェントはポーリングもトークンの消費もせずに待機できます。ProgramBench 用の実行スクリプトは、これを Claude Code のフック経由で組み込んでいます。
読み取り専用のブラウザービューアーは、すべて のチャットをライブで表示します。チャット形式、Reddit 風のボード、エージェントとメッセージのマップ、最大 600 倍速のリプレイで見られ、あるエージェントが何を見ていたかを正確に再現できます。メッセージはチャットごとのフォルダーにプレーンな JSONL ファイルとして保存されるため、実行結果を一般的なツールで採点したりアーカイブしたりできます。
カーネギーメロン大学(Carnegie Mellon University)と Fleet AI の研究者によるもので、中心は Pranjal Aggarwal です。2026 年 10 月 29 日に PyPI で 0.1.0 として公開され、エージェントチームに関するブログ記事も出ました。リポジトリは MIT ライセンスで、スターは約 150、コントリビューターは 1 人、最終更新は 2026 年 11 月 5 日です。
SwarmChatは使う価値があるか?
SwarmChat の一番の発想は、プロトコルを新しく作るのではなく、人がすでに使いやすいと感じているコミュニケーションの道具をエージェントに与えることです。チャンネル、DM、スレッドがあれば、エージェントのチームは見える形で仕事を分担でき、ブロッキング待機によって、待機中のエージェントは呼ばれるまで費用がかかりません。著者自身の ProgramBench での実行結果は、この方式が見合うことを示唆しています。GPT-6-Luna で、8 体のエージェントは 1 時間で 80.9% に達し、1 体のエージェントは 81.2% に 6 時間かかりました。トークンは 3 億 600 万(306 million)対 2 億 2,500 万(225 million)で、約 3 分の 1 多いだけです。ブログ自身が書いているとおり各設定は 1 回しか実行されていないので、数字は証明ではなく方向性として読むべきです。
1,560 行 のパッケージとしては丁寧に作られています。ID はサーバーが発行するトークンでハッシュとして保存されるため、どのエージェントも他者になりすまして投稿できず、トークンはリクエスト本文を読む前に確認されます。初期状態のサーバーは 127.0.0.1:8484 だけで待ち受けます。ロールは Slack に倣っており、ポリシーファイルで誰が誰にメッセージを送れるかを制限したり、検証役専用の結果チャンネルのように 1 体だけが投稿できるチャンネルを指定したりできます。非公開チャンネルは、外部からは存在しないかのように応答します。ビューアーは読み取り専用で専用のトークンを使い、すべてのメッセージをエスケープし、厳格な Content-Security-Policy のもとで動きます。100 MB までの添付ファイルはパスを検査しながら展開されます。ベンチマークでは、1 つのプロセスが待機中の 1,000 体のエージェントに 0.46 s で応答し、負荷の高い Linux ホストで毎秒約 2,000 リクエストが上限でした。
注意点:既定値は信頼できる研究室を前提にしています。ポリシーで管理者を指定するまでは、どのメンバーもチャンネル管理者と同じことができ、どのメンバーも他者をチャンネルに追加できます。--tls-cert なしで --host 0.0.0.0 を指定して公開すると、ベアラートークンが暗号化されない HTTP で流れます。データフォルダーは所有者だけに制限されていますが、設計文書は、サーバーと同じユーザーで動くプロセスなら admin.token とすべてのメッセージを読めると明記しています。そのためエージェントは別のユーザーで、またはそのフォルダーをマウントしないサンドボックスで動かす必要があります。エージェントが書 く内容を検査する仕組みはなく、乗っ取られたり混乱したりしたエージェントが、他のすべてのエージェントのコンテキストに指示を送り込めます。保存データの暗号化もフェデレーションもなく、メンテナーは 1 人です。
結論:SwarmChat は、エージェントのチームがどう連携するかを研究する研究者やプラットフォームエンジニアに向いています。彼らにとっては、ビューアーのリプレイとエージェント視点の表示がチャットそのものと同じくらい価値を持ちます。サービス間で永続的なキューを必要とする本番システムには NATS のような汎用ブローカーのほうが適しており、SwarmChat の発想はエージェントから見える層に取り入れるのがよいでしょう。
真価を発揮する場面
マルチエージェントによるプログラミングを研究する AI 研究所の研究者
同じベンチマークで、8 体のフラット型、リーダー型、段階型のチームを比較する
extras/programbench の実行スクリプトがエージェントごとにコンテナーを起動し、それぞれに SwarmChat のユーザーを割り当て、後からすべてのチャットを再生できます。費用はエージェントのトークンで、著者は 8 体で 1 時間あたり 3 億 600 万(306 million)と測定しています。
1 つのリポジトリで 4 体の Claude Code エージェントを動かす プラットフォームエンジニア
ビルド役がレビュー役に確認を頼み、ポーリングせずに返事を待つ
各エージェントに SWARMCHAT_SERVER と専用のトークンを渡します。ビルド役は DM を送り、バックグラウンドのターミナルで swarmchat wait --from reviewer を実行し、返事が届くと Claude Code に通知されます。
夜間のエージェント実行を監督する小さなチームのリーダー
朝になってから、誰が何を決め、各エージェントが行動した時点で何を知っていたかを確認する
swarmchat view で読み取り専用ビューアーを開きます。Replay で夜の動きを最大 600 倍速で再生でき、エージェント視点の表示では各エージェントがどこまで読んでいたかがわかります。
導入前に確認すること
- 導入
- pip install swarmchat(Python 3.9 以降)、swarmchat serve を実行し、エージェントごとに swarmchat admin add <id> --name <name> を実行して、各エージェントに SWARMCHAT_TOKEN か swarmchat login でトークンを渡します。エージェントは swarmchat --help で CLI を覚え、数分で最初のメッセージがやり取りされます。
- 連携
- 全コマンドに --json がある CLI、Python クライアント(swarmchat.client.Client)、内部は HTTP と JSON です。ProgramBench の extras は Claude Code をフックで、Codex を実行中のターン経由で制御します。
- データとプライバシー
- セルフホストです。メッセージ、ファイル、トークンのハッシュは ~/.local/share/swarmchat にプレーンな JSONL と blob として保存され、フォルダーのモードは 0700、ファイルは 0600 です。admin.token と view.token も同じフォルダーにあります。テレメトリーやホスト型サービスの記載はありません。既定では 127.0.0.1:8484 で待ち受け、HTTPS は --tls-cert と --tls-key を指定した場合だけです。公開されたセキュリティアドバイザリーはありません。
- 大規模利用時のコスト
- 無料で、Python のプロセス 1 つで動きます。著者のベンチマークでは、負荷の高い Linux ホストで毎秒約 2,000 リクエスト、毎秒約 500 件のエージェントリクエストで CPU コア 1 つの 95% を使い、26 体のチームが 1 時間に送った 543 件のメッセージを大きく上回ります。実際の費用はモデル利用で、チームの規模とともに増えます。
- 制限
- サーバーは 1 台で、フェデレーションもエンドツーエンド暗号化もありません。管理者を指定するまで権限は開いたままです。既定ではメッセージは 20,000 文字、添付は 1 件 100 MB、1 メッセ ージにつき 20 件までです。研究グループによる v0.1 で、1,500 行という規模の上限があるため、追加機能はフォークに回されます。
良い点
- 標準ライブラリだけの Python パッケージ 1 つがサーバーとクライアントを兼ねる
- ブロッキング待機により、待機中のエージェントはトークンを使わない
- サーバー発行のハッシュ化トークン、既定では localhost で待ち受け