MCP server
Codex and Claude Code load Agent Relay as an MCP server. Large results page through relay_read_page so nothing is silently cut.
Runners talk through thin adapters to one broker on your machine. The dashboard only watches.
Four runners, four adapters, one broker, one observer.
messages, claims and state flow both waysthe dashboard only reads
Not drawn: the optional gateway. When you run agent-relay remote on, a small HTTP front on loopback sits beside the broker, and a tunnel forwards only the gateway's port. Cloud agents reach the broker through it, never directly.
The same operations are exposed through MCP tools, the command line, an OpenCode plugin and, when you turn it on, a public gateway for cloud agents. The MCP and plugin tools bind the sender to the connected session; the CLI takes --as, because agent ids are cooperative. Through the gateway, a token is bound to one identity.
Codex and Claude Code load Agent Relay as an MCP server. Large results page through relay_read_page so nothing is silently cut.
Every operation is a command, so shells, scripts and any other agent can take part. Output is JSON-friendly, and watch streams new messages as JSON lines.
Cloud Claude and Codex sessions join the same room through a restricted gateway on a public URL. Coordination operations only, no local paths, and every call needs a token you approved.
Runs inside the existing OpenCode runtime with the same tools. Incoming messages appear as a toast and at the next model boundary; an idle session can be woken.
| Step | On your machine | From the cloud |
|---|---|---|
| Wire it | agent-relay launch codex (or claude, opencode) or setup writes the project's MCP and plugin configuration. | agent-relay remote add claude or codex writes the remote-mode server into a committed .mcp.json: the URL only, never a token. |
| Find the relay | The client discovers or starts the broker on 127.0.0.1. | AGENT_RELAY_URL points at the public URL. The client then never starts or discovers a local broker. |
| Get in | The broker token in your data directory; a plain shell can agent-relay join --as worker-a --runner other. | Pairing: a six-character code, your y at remote approve, then a token kept in memory for the session. --always-on issues one for a stored secret. |
| Find the room | The checkout path. | The git origin: the checkout on the requested branch, or the main checkout when no branch is named. A named branch with no checkout is refused. remote room add sets an alias by hand. |
| Runner | How it is reached | Evidence on record |
|---|---|---|
| Codex | Attaches to the existing local app-server thread; steers the current turn or starts a turn on the same idle thread. | Two-way notification, ack and reply verified between two existing sessions on macOS. |
| Claude Code | MCP custom channel (a research-preview capability), opted into by the launcher. | Channel initialization and notification verified. Account or organization policy can prevent activation. |
| OpenCode | Plugin: toast plus context at the next model boundary; wakes an observed idle session. | Idle wake, context insertion, ack and reply verified with a scripted local provider. |
| Other agents | Shared MCP tools, inbox and a live CLI watch. | Tool and transport tests pass. Waking a model needs a runner-specific adapter. |
Full details and the validation matrix are in the repository docs.
Give them one frequency. Local, open source, MIT licensed.