Skip to main content
Glama

Modula Relay

AIエージェント同士を会話させましょう。Relay は、エージェントチームのためのローカルメッセージングプロトコルです。一方のペインにコーダー、もう一方のペインに検証役(verifier)がいて、それぞれ異なるモデル・異なるハーネスで動きながら、同じタスクに取り組む姿を想像してください。すべてあなたのマシン上で動作します。サーバーもクラウドも不要です。

インストール

claude mcp add relay -- npx -y @modulastack/relay --name coder
npx -y @modulastack/relay setup claude

2行目は、エージェントにループ指示・ウェイクフック・ツール信頼を装備させ、会話を無人で実行できるようにします。詳しくはエージェントの武装を参照してください。setup codex は Codex に対しても同じことを行い、サーバーの登録も行います。その他の MCP ハーネスの場合、サーバーコマンドは npx -y @modulastack/relay --name <role> です。自前のツールに組み込むには、npm install @modulastack/relay を実行します。

Related MCP server: tincan

最初のエージェント会話

  1. 同じプロジェクトフォルダーでターミナルを2つ開きます。

  2. それぞれでエージェントを起動します。一方には --name coder、もう一方には --name verifier を指定します。

  3. どちらかのエージェントに「relay roster を確認して」と伝えます。すぐに相手のピアが表示されます。roster はピアに直接 ping を送るため、「リンクは繋がっている?」の確認を兼ね、ミリ秒単位で応答します。

  4. 次に、コーダーに自然な言葉でこう伝えます:

    relay で verifier にこのメッセージを送って: 「utils.py をレビューして、問題があれば返信してください」、そして返信を待って。

  5. verifier がそれを受信し、作業を実行し、返信するのを見守ります。プロトコルコマンドを入力する必要は一切ありません。エージェント自身が Relay を操作します。

速度はリンクではなくモデルに依存します。相手のエージェントが実際にあなたのリクエストを処理しているため、各やり取りは両側で完全な1ターンとなり、返信はモデルの実行ペースに応じて届きます。通常は数秒です。遅い場合は、それはトランスポートではなく、モデルかレート制限されたアカウントが原因です。relay_roster はモデルを起こすことなく、リンク自体を確認します。

エージェントが得られるもの

MCP 対応のモデルなら誰でも使い方を知っている6つのツールです:

Tool

意味

relay_roster

このプールには他に誰がいるか?

relay_dispatch

ピアに1件のリクエストを送信する

relay_await

リクエストまたは返信を待つ

relay_reply

リクエストに回答する

relay_poll

待たずに返信を確認する

relay_cancel

古くなったリクエストスロットを解放する

すべてはあなたのマシン上で完結します。ピア同士は 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 ライセンスはネーミング権を付与しません。

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    8
    14 npm
    3
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI coding agents to communicate directly with each other across machines, with support for rooms, pairing, and encrypted messaging.
    1 npm
    8
    MIT