Relay plugin
Observe an app, record a reusable Test, run it again, and inspect retained
evidence beside your conversation. The installation identity remains
relay-proof; its display name is Relay.
The default qa preset selects existing recording, run, repeat, inspection,
preview and recovery tools. It uses Relay's canonical service, workflows,
leases and evidence. Recording and saved Test replay need no model. Change
Proof remains a separate explicit proof session.
Connect to your existing Relay service
This package requires Node 24+ and the browser/native prerequisites for your
selected target. It attaches to an existing compatible Relay service. With
the matching local @relay/runtime artifact installed alongside the connector,
an explicit --workspace /absolute/path can attach or launch the canonical
service. Use --runtime-port 8788 if the default port belongs to another
workspace. The workspace stores accounts, Tests and evidence outside plugin
caches. Desktop and native helpers require separate qualification.
If you were given matching local artifacts, install both into your chosen installation directory. This path also works without a contributor checkout:
npm install --prefix /absolute/installation /absolute/path/relay-mcp-0.1.0.tgz /absolute/path/relay-runtime-0.1.0.tgz
node /absolute/installation/node_modules/@relay/mcp/dist/relay-mcp.js --profile qa --workspace /absolute/path/my-project
Use that installed executable and those arguments in your host's supported
MCP configuration. For the source-independent Record → Run → Review demo,
read the installed @relay/runtime/README.md. These candidates have not been
published to npm.
Before publication, build the MCP artifact from this repository:
npm pack --silent ./packages/mcp
npm install --global ./relay-mcp-0.1.0.tgz
After a public release exists, use your approved exact @relay/mcp version.
Configure the host process environment:
export RELAY_URL=http://127.0.0.1:8787
export RELAY_ORGANIZATION_ID=local
export RELAY_PROJECT_ID=default
export RELAY_ACTOR_ID=agent:codex
# Set RELAY_AUTH_TOKEN in the host secret environment when the service requires it.
relay-mcp doctor --profile qa
The doctor checks reachability, exact scope, actor, required role and the canonical operations needed by QA. Failed checks include the next setup step. It makes read-only requests and never prints credentials. A READY report establishes connection compatibility, not device readiness or a pass.
Load this directory through your host's supported local plugin flow, or copy
its mcpServers.relay entry into that host's MCP configuration. Use portable
plugin.json / mcp.json where supported, or the
Codex compatibility descriptor. Restart/reload
through the host's supported flow after updates; keep mutable Relay state
outside its immutable plugin cache.
For manual setup, invoke relay-mcp with args: ["--profile", "qa"], matching
the plugin descriptor. Use that same profile and connection options for doctor.
The executable's no-flag operator default remains for existing integrations.
First useful task
- Call
relay_health, thenrelay_panelto choose an App. Pass itsappMapIdtorelay_panelto see that App's saved Tests and recent Runs. The tool returns text when the host cannot display the panel. - Call
relay_connect_targetand select the intended ready target. Keep its returned identity for the task. - Run an existing Test with
relay_run_test, or observe the starting screen and record a short journey when coverage is missing. - Inspect the returned workflow through
relay_inspect_workflow. Return the App/Test/Run IDs, exact result and retained evidence.
For detailed discovery without the panel, read relay://app-maps, then
relay://app-maps/<appMapId>/tests, then the selected
relay://app-maps/<appMapId>/tests/<testId>. Substitute returned IDs. These
resources support pagination; follow the returned next-page URI when needed.
Use relay-mcp --help for offline connection options.
The bundled setup, recording and run/review skills load version-matched
relay://guides resources. Guides remain available while Relay is offline.
An edited recording needs a successful replay of its exact revision. An
unchanged recording can save when its canonical workflow allows it. A
functional pass and a human screenshot decision remain separate outcomes.
Host and specialist compatibility
relay_panelpresents saved Tests, recent Runs and retained screenshots in hosts that negotiate MCP Apps. In other hosts it returns the same read-only state in chat. See panel compatibility and qualification.- Claude Code: the same installed command and QA configuration; no separate tool schemas.
- ChatGPT-compatible MCP transports: use local stdio only where the host supports it; use the authenticated bridge where required. Saving a plugin does not make local tools available on web/mobile.
- Change verification: start a deliberately configured
--profile proofsession and use Relay Proof. Human plan approval and immutable Proof versions remain canonical service boundaries.
Validate a copied distribution
node plugins/relay-proof/scripts/validate-package.mjs
vp run --filter @relay/mcp test:clean-host
The first command also works from a copied plugin directory without a checkout or dependencies. The MCP clean-host test packs and installs the actual connector in a temporary directory, then checks stdio discovery, offline guides and read-only calls. These checks do not qualify native hardware or rendered ChatGPT/Codex panels. The installed artifact test also checks the negotiated HTML resource and the tools-only fallback.