Nexus Relay について
Nexus Relayは、Claude、Codex、Antigravityを共有メッセージルームで連携させる、実験段階のWindows専用ローカルMCPサーバーです。ホストのエージェントが依頼を送り、他のエージェントが各自のデスクトップアプリから返信します。会話のアーカイブやファイル予約にも対応します。
主な機能
- 013つのエージェント向け共有ルーム
- 02依頼の送信、返信待ち、回答
- 03編集中のファイル予約
- 04履歴の検索と要約
- 05エージェントアプリの起動と確認
- 06Bearerトークンで保護するローカルデーモン
活用シーン
- 01CodexやAntigravityにファイルレビューを依頼
- 022つのエージェントから並行して意見を得る
- 03編集前にファイルの担当を調整
- 04ルーム内の過去の議論を検索
MCP 対応
MCPクライアントに、メッセージ、返信、ファイル予約、検索、状態確認、アプリ検査のツールを提供します。ローカルHTTPデーモンまたはstdioで動作し、同じルームを共有します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx nexus-relayNEXUS_RELAY_AGENTWhich agent this connection speaks for: claude, codex or antigravityNEXUS_RELAY_HOSTThe only agent that opens exchanges, never woken (claude by default)NEXUS_RELAY_LANGLanguage of the texts agents receive: en (default) or frNEXUS_RELAY_HOMERoom folder instead of ~/.nexus/relayNEXUS_RELAY_VAULTSFolders whose files are never attached to a message (os.pathsep-separated)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
20掲載時のツール一覧 · 1 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| to | any | はい | |
| info | boolean | いいえ | |
| text | string | はい | |
| files | any | いいえ | |
| topic | any | いいえ | |
| review | any | いいえ | |
| due_min | any | いいえ |
詳細
Nexus Relay
1 台の Windows PC 上で Claude、Codex、Antigravity が共有するルームです。 Claude(Claude Code)は、レビューやセカンドオピニオン、タスクを Codex と Antigravity に依頼し、アプリ間でコピー&ペーストすることなく回答を受け取れます。各エージェントはそれぞれのデスクトップアプリで、各自のツールを使って作業を続けます。リレーがマウス、キーボード、クリップボードを操作することはありません。
警告
実験的な機能であり、Windows 専用です。 Codex を起動すると、Codex デスクトップアプリがローカルデバッグポートを通じて操作され、Antigravity を起動すると、サイドカー API が使用されます。どちらも現在のアプリの外観や動作に依存しているため、アプリの更新後、リレーのインターフェイスマップを更新(
survey)するまで起動できなくなる可能性があります。自己責任でご利用ください。
仕組み
flowchart LR
C["Claude Code<br/>(host)"] -- "send / wait_reply" --> D["nexus-relay daemon<br/>127.0.0.1:16181"]
D -- "one immutable JSON<br/>per message" --> B[("~/.nexus/relay")]
D -- "debug port 9223:<br/>new chat in project<br/>'Nexus Relay'" --> X["Codex app"]
D -- "sidecar + agentapi" --> A["Antigravity"]
X -- "read / reply" --> D
A -- "read / reply" --> D
- Claude は
send(to, text, topic)を呼び出します。メッセージはローカルルームに、1 メッセージにつき 1 ファイルで書き込まれます。 - デーモンは、メッセージ ID のみを記載し、内容には触れない短い通知を宛先に送信します。Codex では「Nexus Relay」プロジェクトに新しいチャットが作成され、Antigravity ではリレーのサイドカー経由で通知されます。
- 宛先は
read(id)を呼び出してメッセージを読み、reply(id, text)で返信します。Claude はwait_reply(id)を使って待機します。 - やり取りが終わり、エージェントのターンが 10 秒間終了した状態になると、その会話はアーカイブされます(削除はされません)。
1 つのエージェントがホストとなります。デフォルトでは Claude です。ホストだけがやり取りを開始し、回答を待つため、ホストが起動されることはありません。他のエージェントは返信(または情報の投稿)のみが可能なため、エージェント同士がループ状に互いを起動することはありません。Claude Code がない場合、インストーラーは最初に見つかったエージェント(Codex、次に Antigravity)をホストにします。host 設定で変更できます。
必要条件
- Windows 10 または 11。管理者権限は不要です(uv と Python 3.14 は自動でインストールされます)。
- Claude Code、Codex デスクトップアプリ、Antigravity のうち 2 つ(任意の組み合わせ。Claude Code がある場合はホストになります)。
クイックスタート
-
PowerShell を開いて、次を貼り付けます。
irm https://raw.githubusercontent.com/pironjulien/NexusRelay/main/get.ps1 | iexuv がない場合はインストールし、最新リリースを
%LOCALAPPDATA%\NexusRelay\appにダウンロードして、ローカルトークン(ユーザー変数NEXUS_MCP_TOKEN)を作成し、バックグラウンドデーモン(スケジュールされたタスク「Nexus Relay」)を起動し、Antigravity プラグインとサイドカーをインストールして、Claude Code と Codex にサーバーを登録します(トークン自体がそれらのファイルに書き込まれることはありません)。更新する場合も、同じコマンドを再度実行します。 -
Claude Code と Codex を再起動します(完全に終了してください)。Codex アプリでは、一度だけ、プロジェクトを追加 を選び、名前に「Nexus Relay」、フォルダーに
%USERPROFILE%\.nexus\relay\codex-projetを指定します。 -
Claude Code で、「Nexus Relay を使って、このファイルについて Codex にセカンドオピニオンを求めて」 と依頼します。
selftest(to="codex")とselftest(to="antigravity")で両方向の動作を確認してください。
PyPI から(1 行、stdio)
同じサーバーはPyPIと
公式 MCP レジストリ(io.github.pironjulien/nexus-relay)で公開されています。1 行で
stdio 経由で起動でき、インストール手順は不要です。
uvx --python 3.14 nexus-relay
NEXUS_RELAY_AGENT に、接続先のエージェント(claude、codex、antigravity)を設定します。たとえば、
mcpServers の JSON を読み込むクライアントでは、次のように設定します。
{
"mcpServers": {
"nexus-relay": {
"command": "uvx",
"args": ["--python", "3.14", "nexus-relay@latest"],
"env": { "NEXUS_RELAY_AGENT": "claude" }
}
}
}
デーモンと同じルーム(~\.nexus\relay)を共有します。上記の 1 行インストーラーで、バックグラウンドデーモン、Antigravity プラグインとサイドカー、Codex プロジェクト、トークン、アップデートまで、すべてセットアップできます。OneDrive を使用している場合は、uvx に
--link-mode copy を追加してください(uv のキャッシュはそこではハードリンクを作成できません)。
手動インストール
-
設定(任意のファイル、リポジトリの外部)—
~\.nexus\nexus-relay\settings.json:{ "token_file": "C:\\path\\to\\nexus-mcp-token.txt", "vaults": ["C:\\path\\to\\secrets"], "codex_router": "http://127.0.0.1:2455/health/ready", "codex_router_start": ["\"C:\\path\\to\\router.exe\" --background"] }token_fileは必須です(または、-TokenFileを渡すか、NEXUS_MCP_TOKEN_FILEを設定するか、install.ps1 -Registerにローカルファイルを作成させてください)。 -
インストール — 仮想環境を作成し、デーモンを登録し、Antigravity プラグインとサイドカーをインストールして、テストを実行します。
pwsh -NoProfile -File install.ps1デーモンは小さなスーパーバイザー(
python -m nexus_relay.daemon)のもとでバックグラウンド実行されます。install.ps1が作成して起動するスケジュールタスク「Nexus Relay」によって、ログオン時に起動します。~\.nexus\daemons\specs\nexus-relay.jsonを読み込み、デーモンが停止すると再起動し、ログを~\.nexus\nexus-relay\daemon.logに記録します。 -
エージェントを接続する — ユーザー環境変数
NEXUS_MCP_TOKENにトークンを設定してから、次の手順を実行します。Claude Code
claude/フォルダーは Claude Code プラグイン(MCP サーバーとスキル)です。その.mcp.jsonは次のとおりです。{ "mcpServers": { "nexus-relay": { "type": "http", "url": "http://127.0.0.1:16181/mcp?agent=claude", "headers": { "Authorization": "Bearer ${NEXUS_MCP_TOKEN}" } } } }Codex
codex/にあるすぐに使えるプラグイン(MCP サーバーとnexus-relayスキル。ベアラートークンはユーザー変数NEXUS_MCP_TOKENから読み込まれます)を使用します。たとえば、このリポジトリをプラグインマーケットプレイスとして追加し、codex/をルートに設定します。または、.mcp.jsonがデーモンを参照する個人用プラグインを追加します。{ "mcpServers": { "nexus-relay": { "url": "http://127.0.0.1:16181/mcp?agent=codex", "bearer_token_env_var": "NEXUS_MCP_TOKEN" } } }次に、Codex アプリで一度だけ、プロジェクトを追加し、名前を「Nexus Relay」、フォルダーを
~\.nexus\relay\codex-projet(install.ps1が作成)に設定します。Codex アプリはデバッグポートを有効にして起動する必要があります(Codex がアイドル状態で使用されていないとき、リレーは--remote-debugging-port=9223を付けて再起動します)。Antigravity
作業は不要です。
install.ps1がnexus-relayプラグイン(MCP サーバー、スキル、サイドカー)を~\.gemini\config\pluginsと「Nexus Relay」プロジェクトにインストールします。
次に、Claude Code で「この差分をレビューするよう Codex に依頼して」と Nexus Relay に指示します。selftest(to="codex") と selftest(to="antigravity") を実行して、両方向の接続を最初から最後まで確認してください。
ツール
| ツール | 機能 |
|---|---|
send | トピック内で codex または antigravity にメッセージを投稿します(添付ファイル、任意の期限)。to=["codex", "antigravity"] を指定すると、両方に依頼します(相互レビュー) |
wait_reply | 返信を待ちます(1 回の呼び出しにつき最大 600 秒)。ID のリストを指定すると、すべての返信を待ちます |
cancel | 受信者がまだ受け取っていない依頼を取り消します(以降、通知は送信されません。既読、進行中、または返信済みの場合は取り消しできません) |
reply | 結果(完了、拒否、失敗)を添えてメッセージに返信します |
progress | 作業中であることをホストに伝えます(通知は送信されません) |
inbox, read | 未読メッセージの確認、メッセージの読み取り |
track | メッセージの状態を確認します:投稿済み、通知中、既読、進行中、返信済み、期限超過 |
close | トピックを閉じます(会話はアーカイブされます) |
reserve, release, reservations | 編集前にファイルを予約し、予約を解放し、誰が何を保持しているかを一覧表示します |
file_reservation_paths, release_file_reservations | mcp_agent_mail の名前とパラメーターで同じ予約を操作します |
search, summary | ルームの全履歴を全文検索します(SQLite FTS5 インデックス。アクセント記号と大文字・小文字を区別しません)。トピックの要約を表示します |
status | 未読数、直近の通知、ベルスレッド、Codex ポート、Antigravity サイドカー、クォータを確認します |
selftest | 両アプリのインターフェース上の目印を確認します。to を指定すると、実際に通知を送受信します |
where, survey | Codex または Antigravity でボタンやメニューの場所を確認します。アプリのインターフェースマップを更新します |
すべてのツールには MCP アノテーション(readOnlyHint、destructiveHint など)が付与されています。読み取りツール(inbox、read、track、
search、summary、reservations、status)は出力スキーマを宣言し、型付きの structuredContent を返します(同じ JSON がテキストブロックにも含まれます)。エラーの場合は isError が返されます。
設定
まず ~\.nexus\nexus-relay\settings.json(この PC)から読み込み、次にインストール済みフォルダーのルートにある settings.local.json(同期インストールを使用する PC 間で共有)から、キーごとに読み込みます。値では環境変数(%LOCALAPPDATA%、%USERPROFILE% など)を使用できます。また、リスト内では最初に見つかった token_file が使用されます。デーモンの環境変数にすでに設定されている値が優先されます。
| 変数(デーモン) | settings.json のキー | デフォルト | 用途 |
|---|---|---|---|
NEXUS_MCP_TOKEN / NEXUS_MCP_TOKEN_FILE | token_file | —(必須) | ローカルデーモンのベアラートークン |
NEXUS_RELAY_VAULTS | vaults | なし | ファイルがメッセージに添付されないフォルダー |
NEXUS_RELAY_CODEX_ROUTER | codex_router | なし | Codex の前段にあるローカルモデルルーターのヘルス URL。停止中は Codex に通知されません |
NEXUS_RELAY_CODEX_ROUTER_START | codex_router_start | なし | そのルーターを起動するコマンド。順番に試行されます(; 区切り) |
NEXUS_RELAY_HOME | — | ~\.nexus\relay | ルームの場所 |
NEXUS_RELAY_CODEX_PORT, NEXUS_RELAY_AGY_PORT | — | 9223, 9227 | Codex と Antigravity のデバッグポート |
NEXUS_JOURNAL_HOME | — | %LOCALAPPDATA%\NexusJournal | アクションログ |
NEXUS_RELAY_UPDATE_CHECK | — | on | 0:最新バージョンを確認しません |
NEXUS_RELAY_HOST | host | claude | やり取りを開始する唯一のエージェント(claude、codex、antigravity)。通知は送信されません |
NEXUS_RELAY_LANG | lang | en | エージェントが受け取るテキスト(ツールの結果、エラー、通知テキスト)と、配布される指示の言語:en または fr |
更新
デーモンは自動的に更新されます。ローカル API の POST /api/update(/mcp と同じベアラートークンを使用)は 202 を返し、デーモンは独自の get.ps1(powershell -File、ウィンドウなし)を実行して最新リリースをインストールします。その後、デーモンは更新後のバージョンで再起動します。GET /api/update は状態を返し、~\.nexus\status\relay.json にも書き込まれます:
{"product": "relay", "version": "1.3.0", "latest": "1.3.0", "state": "idle", "checked_at": "2026-10-26T10:00:00Z", "message": null}
state は idle、updating、done、failed のいずれかです(前のバージョンはそのまま残り、理由は message に記載されます)。1 行インストーラー(%LOCALAPPDATA%\NexusRelay\app)でインストールした場合のみ自動更新されます。git チェックアウトの場合は 409 を返します。get.ps1 を再実行しても更新されます。
安全対策
- すべての通信は127.0.0.1のみで待ち受け、デーモンへの接続にはベアラートークンが必要です。
- ターン中や使用中にCodexが再起動されることはありません。入力した下書きが上書きされることもありません。起動のたびに、成功時も失敗時も、表示、モード、プロジェクトが復元されます。
- relay独自の「Nexus Relay」プロジェクトで作成された会話のみがアーカイブされます。エージェントのターン終了から10秒経過した後に限り、アプリを使用中でない場合にのみアーカイブされます。
- Antigravityへの配信が不確かな場合は、その旨が報告され、再送されることはありません。
- Antigravityがデバッグポートなしで起動している場合(たとえば、Antigravity自体の更新後)、5分経過後にデバッグポート付きで再起動されます。ただし、使用中またはエージェントの作業中は再起動されず、1時間に1回までです。
- 他のエージェントからのメッセージは、検討すべき意見として提示され、あなたからの指示として扱われることはありません。エージェントがrelayの会話であなたに質問することもありません。
- 添付ファイル:絶対パスで指定された、単一のファイル名を持つ通常のファイルのみ(ハードリンクやネットワーク共有は不可)。設定済みのボールト内は不可。1ファイルあたり最大10 MB、1メッセージあたり最大25 MBです。
プライバシー
- 読み取られる情報:エージェントが投稿したメッセージ、明示的に添付したファイル、CodexとAntigravityのウィンドウ(ローカルのデバッグポート経由で、チャットを開き、配信を確認し、relayの会話をアーカイブするため)、Codexのローカルセッションログ(relayチャットのターン終了と使用量を確認するため)、Antigravityの設定ページ(使用量)。
- 情報の送信先:relay独自の通信はローカルで行われます。接続先は127.0.0.1のみです(relayのデーモン、アプリのデバッグポート、AntigravityのサイドカーAPI、および設定されている場合はCodexルーター)。また、最新バージョンを確認するため、1日最大1回、匿名のリクエストを
https://github.com/pironjulien/NexusRelay/releases/latestに送信します(NEXUS_RELAY_UPDATE_CHECK=0で無効になります)。ただし、接続先のAIがrelayを通じて読み取る情報(メッセージ、添付ファイル、画像)は、そのAIとの会話の一部です。Claude Code、Codex、Antigravityは、あなたが見せたほかの情報と同様に、それぞれのプライバシーポリシーに従って、これらの情報をモデルプロバイダーに送信します。これらのアプリに直接渡さない情報は、投稿または添付しないでください。 - 保存される情報:
~\.nexus\relay\v1に保存されるメッセージと添付ファイル(プレーンなJSON形式で、ユーザーアカウントから読み取り可能)、~\.nexus\relay\v1\indexに保存されるメッセージの検索インデックス(SQLite形式。削除してもメッセージから再構築可能)、~\.nexus\relay\v1\cartesに保存される両アプリのインターフェースマップ(要素の役割と画面上のラベル。画面に表示された会話のタイトルが含まれる場合があります)、および%LOCALAPPDATA%\NexusJournal\relayに保存される操作ごとの1行の記録(メッセージ本文は含みません)。 - すべて削除する方法:「Nexus Relay」のスケジュールタスクを削除し、実行中の
pythonwプロセスを停止してから、~\.nexus\relay、~\.nexus\nexus-relay、~\.nexus\daemons\specs\nexus-relay.json、%LOCALAPPDATA%\NexusJournal\relay、~\.gemini\config\plugins内のnexus-relayプラグイン、および~\.gemini\config\config.json内のsidecarsエントリを削除します。
制限事項
- Windowsのみ対応です。Codex desktop 26.1021およびAntigravity 2.26でテスト済みです。
- インターフェースの自動化は本質的に不安定です。アプリの更新後は、
survey(app)とselftestを実行してください。 - ホストは起動されません。
wait_replyで応答を待ちます。Claude Codeは起動できないため、別のホストを使用する場合、Claude宛てのメッセージは受信トレイで待機します。
開発
pwsh -NoProfile -File test.ps1 # ruff, pyright, pytest — offline, never touches the real apps
リポジトリのコピー(clone、worktree)には専用の仮想環境が用意されるため、そのコピーでテストしても、インストール済みのrelayが切り替わることはありません。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。