
NexusRelay
io.github.pironjulien由 GitHub 账号 pironjulien 发布v1.13.11更新于 Nov 7, 2026
Shared room for Claude, Codex and Antigravity on one Windows PC; each agent woken in its own app.
概览
本地 Windows 中继,让 Claude、Codex 和 Antigravity 在同一台电脑的共享房间里互发消息、评审和二次意见。
- 可以做什么
- 按主题向 Codex 或 Antigravity 发送消息,可带附件和截止时间,也可同时询问两者做交叉评审
- 等待回复、撤回尚未被读取的请求、带结果答复、汇报进度并关闭主题
- 列出并读取收件箱消息、跟踪消息状态,并全文搜索或汇总房间历史
- 编辑前预留文件、释放预留,并查看谁持有哪些预留
- 查看状态、运行自检,并定位或刷新两个应用的界面映射
- 适用场景
- 适用于在同一台 Windows 电脑上同时使用 Claude Code、Codex 桌面应用和 Antigravity 中的至少两个,并希望它们互相评审工作或转交任务、无需在应用间复制粘贴的场景。
- 运行要求
- Windows 10 或 11(x64 或 ARM64),无需管理员权限,并安装 Claude Code、Codex 桌面应用和 Antigravity 中的两个。完整安装需运行 PowerShell 安装脚本,它会创建本地 bearer 令牌(用户变量 NEXUS_MCP_TOKEN)、127.0.0.1 上的后台守护进程和计划任务;stdio 包共用同一房间。Codex 需要本地调试端口和专用项目。
安装
在 SourceWeft 中
- 打开 控制台中的 NexusRelay,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
NexusRelay
Your AI apps talk to each other, on your PC.
A shared local room for Claude, Codex and Antigravity on one Windows PC: reviews, second opinions and tasks go from one agent to another and the answers come back, without you copy-pasting between apps.
[Release] [Tests] [OpenSSF Scorecard] [License: MIT] [.NET 10] [Windows 10 | 11] [MCP] [Status: experimental]
[Website] [Get it with NexusSystem] [Watch the video] [Changelog]
[!WARNING] Experimental, Windows only. Waking Codex drives the Codex desktop app through its local debugging port, and waking Antigravity goes through its sidecar API. Both depend on how those apps look and behave today: an app update can break a wake until the relay's interface maps are refreshed (
survey). Use at your own risk.
Why NexusRelay
Quick start
You need Windows 10 or 11 and two of Claude Code, the Codex desktop app and Antigravity (see Requirements).
[!TIP] Let your AI install it. Paste this into Claude Code, Codex or Antigravity:
Or install it from the NexusSystem app from the Microsoft Store
(winget install --id 9NSH2P3QLWT1 --source msstore). New versions are no longer published to PyPI; earlier packages
stay available.
Manual install (verified)
In PowerShell: download the installer and its checksums from the latest release, check the installer, then run it as a file:
get.ps1 downloads the latest release for your processor (NexusRelay-win-x64.zip or NexusRelay-win-arm64.zip),
checks it against the release's SHA256SUMS.txt, installs it into %LOCALAPPDATA%\NexusRelay, creates a local
token (user variable NEXUS_MCP_TOKEN), starts the background daemon (scheduled task "NexusRelay"), installs the
Antigravity plugin and sidecar, and declares the server to Claude Code and Codex (the token itself is never written
in their files). Run it again to update; the daemon also updates itself (see Updates).
Every release file has a Sigstore build provenance attestation (made by GitHub Actions, no key to manage):
Then:
- Restart Claude Code and Codex (quit them completely). In the Codex app, once: Add a project, name
"NexusRelay", folder
%USERPROFILE%\.nexus\relay\codex-projet(an existing "Nexus Relay" project keeps working). - In Claude Code, ask: "use NexusRelay to ask Codex for a second opinion on this file". Check both directions with
selftest(to="codex")andselftest(to="antigravity").
MCP bundle (stdio)
Each release also carries nexus-relay-win-x64.mcpb and nexus-relay-win-arm64.mcpb, listed in the
official MCP registry (io.github.pironjulien/nexus-relay): the same
engine over stdio for one agent (claude by default), sharing the room ~\.nexus\relay with the daemon. The installer
(get.ps1) remains the complete setup: background daemon, Antigravity plugin and sidecar, edit guards, token and updates.
How it works
- Claude calls
send(to, text, topic). The message is written to the local room, one file per message. - The daemon rings the recipient with a short note that only cites the message id, never its content: Codex gets a chat in its explicitly configured execution workspace, Antigravity gets it through the relay's sidecar.
- The recipient calls
read(id)and answers withreply(id, text). Claude waits withwait_reply(id). - Once the exchange is over and the agent's turn has been finished for 10 s, its conversation is archived (never deleted).
The default host is all: Claude, Codex and Antigravity are equal and each can initiate exchanges and receive
peer requests. The installer selects all when at least two AI apps are present. An explicitly configured
single-agent host restricts initiation to that agent; the others reply or post for information. status() reports
the effective setting.
[!IMPORTANT] Waking Claude. With
hostset toall, Claude is woken too: in the Claude desktop app, open a Code session in the folder~\.nexus\relay\NexusRelayand set it to Auto mode. The daemon writes the wake note to that session's local inbox (Claude Code's documented per-session named pipe, never Anthropic's servers). A session in Bypass permissions holds such messages, so keep the relay session in Auto, and pin it so that tidying up chats never archives it. Turn Remote Control on for it: the app otherwise stops an idle session's process after its turn, and with it the inbox (status()then showsrelay_session.open: false). Never clear it: clearing stops its process, and with it the inbox the daemon wakes it through.
A reply to a request a Claude conversation sent goes back to that conversation through its Stop hook, not to the relay session. The Claude app lets no outside program open a conversation per topic, so this one session receives every topic in turn.
Codex workspace, engine and qualification
The Codex workspace may be an existing project such as Documents. Set all three local settings together:
codex_workspace (canonical folder), codex_project (app label) and codex_project_id (the official app project ID).
The relay checks the ID and folder before typing. Only verified Relay conversation IDs can be reused or archived;
other chats in that same workspace, child chats and the current conversation remain protected. Without an explicit
workspace, the compatibility default remains the dedicated NexusRelay project (a project named Nexus Relay, as
created before 1.13.2, is still recognized).
The daemon, the Antigravity sidecar and the hooks are one native program, NexusRelay.exe (.NET 10). Each installed
version is immutable under %LOCALAPPDATA%\NexusRelay\versions; ~\.nexus\nexus-relay\bin always holds a copy of the
one in service.
Tools
Every tool carries MCP annotations (readOnlyHint, destructiveHint, …). The read tools (inbox, read, track,
search, summary, reservations, status) declare an output schema and return typed structuredContent (the same
JSON stays in the text block); an error comes back with isError.
Requirements
- Windows 10 or 11 (x64 or ARM64), no administrator rights, nothing else to install (the release is self-contained).
- Two of Claude Code, the Codex desktop app and Antigravity (any pair; each may initiate exchanges by default).
Manual install from source
Settings file, install.ps1 and connecting each agent by hand
-
Settings (optional file, outside the repository) —
~\.nexus\nexus-relay\settings.json:For an existing workstation, set
token_file, pass-TokenFileor setNEXUS_MCP_TOKEN_FILE. Public installation withinstall.ps1 -Registerotherwise uses%USERPROFILE%\.nexus\mcp-token.txt, shared by Relay, Android and Browser. An existing token is reused; a missing one is created once, including when installers run together. -
Install — builds the engine (.NET 10 SDK; in a release folder, takes its self-contained
bin\), registers the daemon, installs the Antigravity plugin, sidecar and edit guards, and runs the tests:The daemon runs in the background under a small supervisor (
NexusRelay.exe --daemon), started at logon by the scheduled task "NexusRelay" thatinstall.ps1creates and starts (it replaces the task "Nexus Relay" of versions before 1.13.2). It reads~\.nexus\daemons\specs\nexus-relay.json, restarts the daemon when it stops, and logs to~\.nexus\nexus-relay\daemon.log. -
Connect the agents — set the user environment variable
NEXUS_MCP_TOKENto the token, then:-
Claude Code. The
plugin/folder is the plugin of all three AI apps (MCP server, skill, edit hooks); Claude Code installs it from the NexusSystem catalog (nexus-relay@nexus-plugins). Its.mcp.json: -
Codex. Install
nexus-relayfrom the NexusSystem catalog (codex plugin marketplace add pironjulien/NexusSystem): it is the sameplugin/folder, with Codex's manifest, skill and.codex-mcp.json(the bearer token is read from the user variableNEXUS_MCP_TOKEN). Or add a personal plugin whose.mcp.jsonpoints to the daemon:Then, once, in the Codex app: Add a project, name "NexusRelay" ("Nexus Relay" also works), folder
~\.nexus\relay\codex-projet(created byinstall.ps1). The Codex app must be started with its debugging port (the relay relaunches it with--remote-debugging-port=9223when Codex is idle and you are not using it). -
Antigravity. Nothing to do:
install.ps1installs thenexus-relayplugin (MCP server, skill and sidecar) under~\.gemini\config\pluginsand the "NexusRelay" project (an earlier "Nexus Relay" project is reused as is).
-
Then, in Claude Code: "use NexusRelay to ask Codex for a review of this diff". Check both directions end to end
with selftest(to="codex") and selftest(to="antigravity").
Settings
Read from ~\.nexus\nexus-relay\settings.json (this PC), then from settings.local.json at the root of the
installed folder (shared by the PCs of a synced install), key by key; values may use environment variables
(%LOCALAPPDATA%, %USERPROFILE%...), and a list keeps the first existing token_file. Variables already set in
the daemon's environment win.
All settings
Updates
The daemon updates itself: POST /api/update on its local API (same bearer token as /mcp) answers 202 and the
daemon runs its own get.ps1 (powershell -File, no window), which installs the latest release; the daemon then
restarts on it. GET /api/update returns the state, also written to ~\.nexus\status\relay.json:
state is idle, updating, done or failed (the previous version stays in place and message says why). Only an
install made by get.ps1 (%LOCALAPPDATA%\NexusRelay\app) updates itself; a git checkout answers
409. Running get.ps1 again also updates.
Safeguards
- Everything listens on 127.0.0.1 only; the daemon requires the bearer token.
- Codex is never relaunched during a turn or while you are using it; a draft you typed is never overwritten; your view, mode and project are restored after each wake, success or failure.
- Only conversations born in the relay's own "NexusRelay" project (or "Nexus Relay", its earlier name) are archived, only once the agent's turn has been over for 10 s, never while you are in the app.
- An uncertain delivery to Antigravity is reported as such and never replayed.
- Antigravity open without its debugging port (for instance after its own update) is restarted with it after 5 min, never while you are in it or while one of its agents works, at most once an hour.
- A peer's message is framed as an opinion to examine, never as an instruction from you; agents never ask you questions in relay conversations.
- Attachments: absolute paths, regular files with a single name only (no hard links, no network shares), never inside a configured vault, 10 MB each and 25 MB per message at most.
Privacy
[!NOTE] The relay's own transport is local, but what a connected AI reads through the relay (messages, attached files and images) is part of its conversation: Claude Code, Codex and Antigravity send it to their model provider under their own privacy policy, as they do with everything else you show them. Do not post or attach anything you would not give those apps directly.
- What is read: the messages agents post, the files they explicitly attach, the Codex and Antigravity windows (through their local debugging ports, to open a chat, check delivery and archive relay conversations), Codex's local session logs (to know when a relay chat's turn is over, and its quota) and Antigravity's settings page (quota).
- Where it goes: it talks only to 127.0.0.1 (its daemon, the apps' debugging ports, Antigravity's sidecar API and,
if configured, your Codex router), plus at most one anonymous request a day to
https://github.com/pironjulien/NexusRelay/releases/latestto learn the latest version (NEXUS_RELAY_UPDATE_CHECK=0turns it off). - What is stored: messages and attachments in
~\.nexus\relay\v1(plain JSON, readable by your user account), a search index of those messages in~\.nexus\relay\v1\index(SQLite, rebuilt from the messages if deleted), interface maps of both apps in~\.nexus\relay\v1\cartes(element roles and visible labels, which can include conversation titles shown on screen), and one line per action in%LOCALAPPDATA%\NexusJournal\relay(never a message's text). - How to remove everything: remove the scheduled task (
powershell -NoProfile -File scripts\RelayTask.ps1 -Removein the installed folder removes "NexusRelay" and the older "Nexus Relay") and stop theNexusRelay.exeprocesses, then delete~\.nexus\relay,~\.nexus\nexus-relay,%LOCALAPPDATA%\NexusRelay,~\.nexus\daemons\specs\nexus-relay.json,%LOCALAPPDATA%\NexusJournal\relay, thenexus-relayplugin in~\.gemini\config\pluginsand itssidecarsentry in~\.gemini\config\config.json.
To report a vulnerability, see SECURITY.md.
Limits
- Windows only; tested with Codex desktop 26.1021 and Antigravity 2.26.
- Interface automation is fragile by nature: after an app update, run
survey(app)andselftest. - The host is never woken: it waits for answers with
wait_reply. Claude Code cannot be woken at all, so with another host, a message to Claude waits in its inbox.
Development
Concurrent edits rely on compare-and-swap: Claude's Edit needs the exact old text, Codex's apply_patch and
Antigravity's replace need matching context, so an edit based on a stale read is refused instead of overwriting a
peer's change. On top of that, the edit hook takes an automatic lease: advisory (never a refusal), held only while
the tool call runs and released when it returns (success or failure), whatever the Git state of the file, or at the
end of the turn; 10-minute safety expiry if no completion event comes. While another agent's edit tool runs on the same
file, Claude receives a note naming it. Only an explicit exclusive reserve() (long multi-file work) refuses another
holder's edit or commit.
Hooks and commit guard
This requires the lifecycle hooks to be active: PreToolUse runs NexusRelay.exe --edit-guard <agent>,
PostToolUse adds --finish-tool, and Stop adds --finish-session. Claude also uses PostToolUseFailure and
SessionEnd with the matching finalizer. Completion hooks return the neutral JSON object {} and never approve or
deny an action. Codex reviews new hook declarations through its native trust flow; the installer does not create that
consent. Parallel calls on the same file share one lease, which ends with the last of them.
Commit guard: scripts/install_commit_guard.ps1 installs pre-commit and
post-commit hooks in your repositories; they call ~/.nexus/nexus-relay/bin/NexusRelay.exe --staged (refuses a
commit touching a file another agent reserved) and --release-committed (ends the committer's automatic leases left
on the committed files).
Builds and test files go to ~\.nexus\build\nexusrelay, never into the repository. Testing a copy (clone, worktree)
never switches the installed relay to it: only install.ps1 does.
Part of the Nexus ecosystem
Your AIs (Claude, Codex, Antigravity) at work on your Windows apps, real Chrome and Android phone — in the background.
Get them all with NexusSystem · Microsoft Store · julienpiron.fr · @julienpironfr
Built in France 🇫🇷 by Julien Piron
MIT. Not affiliated with Microsoft, Anthropic, OpenAI or Google.
来源:README.md,提交 d203365
工具
0版本历史
11- v1.13.11最新Nov 7, 2026
- v1.13.4Nov 5, 2026
- v1.13.1Nov 4, 2026
- v1.12.11Nov 3, 2026
- v1.12.6Nov 3, 2026
- v1.12.1Nov 3, 2026
- v1.11.0Nov 1, 2026
- v1.10.7Oct 31, 2026
- v1.10.4Oct 30, 2026
- v1.10.1Oct 30, 2026
- v1.8.7Oct 29, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分