relay
OfficialModula Relay
AIエージェント同士を会話させましょう。Relay は、エージェントチームのためのローカルメッセージングプロトコルです。一方のペインにコーダー、もう一方のペインに検証役(verifier)がいて、それぞれ異なるモデル・異なるハーネスで動きながら、同じタスクに取り組む姿を想像してください。すべてあなたのマシン上で動作します。サーバーもクラウドも不要です。
インストール
claude mcp add relay -- npx -y @modulastack/relay --name coder
npx -y @modulastack/relay setup claude2行目は、エージェントにループ指示・ウェイクフック・ツール信頼を装備させ、会話を無人で実行できるようにします。詳しくはエージェントの武装を参照してください。setup codex は Codex に対しても同じことを行い、サーバーの登録も行います。その他の MCP ハーネスの場合、サーバーコマンドは npx -y @modulastack/relay --name <role> です。自前のツールに組み込むには、npm install @modulastack/relay を実行します。
Related MCP server: tincan
最初のエージェント会話
同じプロジェクトフォルダーでターミナルを2つ開きます。
それぞれでエージェントを起動します。一方には
--name coder、もう一方には--name verifierを指定します。どちらかのエージェントに「relay roster を確認して」と伝えます。すぐに相手のピアが表示されます。roster はピアに直接 ping を送るため、「リンクは繋がっている?」の確認を兼ね、ミリ秒単位で応答します。
次に、コーダーに自然な言葉でこう伝えます:
relay で verifier にこのメッセージを送って: 「utils.py をレビューして、問題があれば返信してください」、そして返信を待って。
verifier がそれを受信し、作業を実行し、返信するのを見守ります。プロトコルコマンドを入力する必要は一切ありません。エージェント自身が Relay を操作します。
速度はリンクではなくモデルに依存します。相手のエージェントが実際にあなたのリクエストを処理しているため、各やり取りは両側で完全な1ターンとなり、返信はモデルの実行ペースに応じて届きます。通常は数秒です。遅い場合は、それはトランスポートではなく、モデルかレート制限されたアカウントが原因です。relay_roster はモデルを起こすことなく、リンク自体を確認します。
エージェントが得られるもの
MCP 対応のモデルなら誰でも使い方を知っている6つのツールです:
Tool | 意味 |
| このプールには他に誰がいるか? |
| ピアに1件のリクエストを送信する |
| リクエストまたは返信を待つ |
| リクエストに回答する |
| 待たずに返信を確認する |
| 古くなったリクエストスロットを解放する |
すべてはあなたのマシン上で完結します。ピア同士は Unix ドメインソケットを介したフォルダー単位のプールで互いを見つけます。ブローカーも、ネットワークポートも、アカウントもありません。
会話を継続する
Relay はプルベースです。メッセージは、受信側が await を呼び出すまで相手のもとで待機します。「1件のリクエストを待って回答して」のような一度きりのプロンプトは、最初のやり取りの後で待機をやめてしまいます。そのため、継続的な会話には、各エージェントにループを一度だけ与えてください:
あなたは進行中の relay 会話に参加しています。ループ: relay で受信リクエストまたは返信を await し、何か届いたら処理して返信し、再び待機に戻ります。私が停止と言うまでループを続けてください。
ループは送信側もカバーします。自分が送信したリクエストへの返信も同じ await で受け取れるため、ループを継続しているエージェントは msg_id を見失っても回答を受け取れます。
ループはハーネスに合わせてください。 ハーネスによって、エージェントがターン中のあなたの入力の扱いは異なります。Codex は数秒以内に入力を拾うので、継続的なループで問題ありません。Claude Code は多くのツール呼び出しにわたって入力済みのテキストを保持できるため、必要なときに起こす(ウェイクオン・デマンド)リズムの方が適しています。空のタイムアウトが2回続いたらターンを終了し、メッセージがキューに溜まったらウォッチャーに起こしてもらうよう指示してください。そうすれば、アイドル状態のプロンプトであなたの入力を待ちつつ、ピアからの書き込みがあれば数秒以内に起床します。
ホストを統合する側はさらに先へ進めます。サーバーは、アイドル状態のピアにメッセージがキューイングされるとウェイク通知(notifications/relay/wake)を発行し、それをリッスンするホストは自分でループを再開できます。ウェイクはあくまで配信シグナルであり、指示のソースではありません。既製のホストが2つ、examples/ に同梱されています。claude-stop-hook.sh は、メッセージがキューに残っている間、Claude Code エージェントがターンを終了するのを防ぎます(tmux は不要)。relay-watch.sh は、レジストリのキューの深さに基づいてアイドル状態の tmux ペインを起こす汎用ウォッチャーです。
エージェントの武装
無人ループを静かに壊すものが2つあります。1つ目は承認プロンプトです。「Allow relay_await?」で固まったエージェントは、停止したようにしか見えません。2つ目はアイドル状態のピアです。ハーネスがターンを終了すると、メッセージが届いても何も起こしません。両方を防ぐ部品(ループ指示・フック・スコープ付きツール信頼)は、ハーネスごとに1つのコマンドでインストールできます。
npx -y @modulastack/relay setup claude # CLAUDE.md loop + Stop hook + tool trust
npx -y @modulastack/relay setup codex # AGENTS.md loop + config.toml server & trustプロジェクトフォルダーで実行してください。再実行しても新たなことは起こらず、既存の設定を上書きするのではなくマージされます。
代わりに手動で設定する場合、部品はプレーンなファイルです。ループのテキストは CLAUDE.md または AGENTS.md に置きます。Claude Code は permissions.allow: ["mcp__relay"]、または起動時の --allowedTools mcp__relay でサーバーを信頼します。Codex はサーバーエントリに1行追加します:
[mcp_servers.relay]
default_tools_approval_mode = "auto"グローバルなバイパスを許可するのではなく、relay のツールだけを具体的に信頼してください。目的は、協調のための呼び出しが中断させないようにすることであり、すべてを通してしまうことではありません。避けるべきことが1つあります。これに approval_policy = "never" を設定しないでください。Codex は承認が必要だったはずのものをすべて黙って拒否するようになり、relay_reply がブロックされます。
何も表示されない場合
roster が空? 両方のエージェントが同じフォルダーで実行されている必要があります。フォルダーがプールです。
それでも空? 両方のエージェントが実際に実行されているか確認してください。
relay_rosterは停止したピアを除去します。名前が使われている? 各ピアはプール内で一意の
--nameを持つ必要があります。メッセージを送信したのにピアがアイドルのまま? 配信はピアが await を呼び出すまで待機するため、上記のループに戻してください。対象が最近 await していない場合、送信レシートには
noteが含まれ、roster には各ピアのlast_await_atが表示されます。
さらに詳しく
完全なプロトコルは SPEC.md にあります: エンベロープ、ウェイクチャネル、セキュリティモデル、バージョニング。v0.x でプレスタブルのため、文章ではなく動作契約のバージョンを固定してください。
Apache-2.0 · © 2026 ModulaStack
ModulaStack について
Relay は ModulaStack によって開発されています。ペイン・承認・モデルをまたぐチームでエージェントの作業を監視したいなら、Modula Stack は Relay 上に構築されたオペレーターコンソールです。
「Modula Relay」および「ModulaStack」は ModulaStack の商標です。Apache-2.0 ライセンスはネーミング権を付与しません。
This server cannot be deployed
Maintenance
Related MCP Connectors
End-to-end encrypted messaging and work coordination for autonomous AI agents.
SwarmDM (formerly AgoraDM): DMs, friends, groups and files between AI agents.
Connect AI agents to Replynodes over the Model Context Protocol.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables local messaging between Claude Code, Codex, Pi, and other coding-agent sessions on the same machine, allowing them to discover each other, send updates, ask questions, and reply.814 npm3AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables direct agent-to-agent messaging, file transfer, and persistent conversation history between AI agents across machines via a private broker, without needing shared channels or third-party services.4 npm1MIT

crosstalkofficial
AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to communicate directly with each other across machines, with support for rooms, pairing, and encrypted messaging.1 npm8MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to collaborate by exchanging messages through a local MCP-based bus for coordinating tasks and agent interactions.MIT