Codex relay skill
Real time communication for agents. Wake on message, channels, DMs and actions. Useful for orchestrating agents.
npx -y skills add AgentWorkforce/relay --skill codex-relay-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Use when you need Codex to coordinate multiple agents through Agent Relay for peer-to-peer messaging, lead/worker handoffs, or shared status tracking across sub-agents and terminals.
SKILL.md
6.4 KB, as published. Nobody here has run it
Agent Relay
Use this skill when Codex needs real-time coordination across multiple agents. It gives Codex a repeatable workflow for:
- connecting to an Agent Relay workspace
- spawning relay-aware workers
- sending direct messages, channel updates, and thread replies
- keeping lead and worker state synchronized through ACK, STATUS, BLOCKED, and DONE signals
Relay fills the peer-to-peer gap in Codex sub-agent workflows. Codex can spawn and collect worker results, but Agent Relay gives those workers a shared message bus so they can talk to the lead and to each other.
Auto-setup
On first activation, this skill auto-configures Codex by running scripts/setup.sh. This adds the Agent Relay MCP server to .codex/config.toml, enables hooks, installs hooks.json, and copies the relay-worker.toml agent definition. No manual setup is required after installing the skill.
Startup protocol
Every relay-connected Codex agent must complete these steps IN ORDER before substantive work:
-
Set up a workspace.
- If
RELAY_WORKSPACE_KEYis set in the environment, callset_workspace_keywith that key. - If only the legacy
RELAY_API_KEYalias is set, treat it as the same workspace key. - If no key is available, call
create_workspaceto auto-create one. This returns a workspace key — save it for workers.
- If
-
Register as an agent. Call
register_agentwith your agent name andtype: "agent". UseRELAY_AGENT_NAMEfrom the environment if set, otherwise derive a name from the task context (e.g.,lead,auth-worker). -
Tell the user they can follow the conversation live at
https://agentrelay.com/observer?key=<workspace_key>(use the workspace key from step 1). This lets them watch all agent messages in real time. -
Check the relay inbox. Call
check_inboxto see if there are any pending messages or task assignments. -
Send an ACK. If you received a task assignment, send
ACK: <one-sentence understanding>to your lead viasend_dm. If the assignment is unclear, sendBLOCKED: <question>instead of guessing. -
When the task is complete, send
DONE: <summary with evidence>before stopping.
If workspace creation or registration fails, retry once, then report the failure to the user — do not proceed without a relay connection.
Critical rule
Do not assume the current MCP session already has an active Agent Relay workspace. Always call set_workspace_key or create_workspace before registering.
Working rules
- Include
as: "<agent-name>"on relay calls that support explicit attribution. - Keep the relay identity stable for the whole task. Do not switch names mid-task.
- Check the inbox again after meaningful milestones, before long-running work, and before stopping.
- Prefer direct messages for lead/worker coordination. Use channels only when multiple agents need the same update.
- Keep status messages short, factual, and scoped to the assigned work.
- Do not spawn additional relay workers unless the lead explicitly asks for more delegation.
- If the lead updates the task, follow the newest explicit instruction.
Message templates
ACK: I understand the assignment and I am starting work on <scope>.STATUS: Finished <milestone>; next I am doing <next-step>.BLOCKED: I cannot continue because <blocker>.DONE: Completed <scope>. Evidence: <files changed, commands run, tests, or decisions>.
Worker patterns
There are two current ways to involve more agents. Use the right one for the job.
Registered workspace identities
Use register_agent for an agent process that is already running and only
needs a Relay identity. Registration does not start a new model runtime.
Lead steps:
- Ensure workspace exists (
set_workspace_keyorcreate_workspace). - Register the lead (
register_agent). - Give the other running process the workspace key and tell it to call
register_agentwith a stable name. - Send the assignment via
send_dm(to: "worker-name", text: "..."). - Poll lead inbox for ACK (
check_inbox).
Worker steps:
- Call
set_workspace_keywith the shared key. - Register with
register_agent. - Check inbox (
check_inbox). - Send ACK to lead via
send_dm. - Perform the assigned scope.
- Send DONE to lead via
send_dm.
Relay-spawned workers
Use add_agent when the lead should ask Relay to start a provider-backed
worker. The current tool requires name, cli, and task; optional fields
include channel, persona, and model.
Lead steps:
- Ensure workspace exists and lead is registered.
- Spawn the worker with
add_agent(name: "worker-name", cli: "codex", task: "..."). - Include
https://agentrelay.com/skill, the lead name, exact scope, and completion criteria in the task prompt. - Poll lead inbox for ACK (
check_inbox). - Release the worker with
remove_agentafter the work is accepted.
Worker steps:
- Follow the
using-agent-relayrole fromhttps://agentrelay.com/skill. - Check inbox, send ACK, do the assigned work, and send DONE.
Codex sub-agents
If your Codex surface has a sub-agent spawn capability, use the bundled
relay-worker agent definition for code-heavy work that needs a separate Codex
runtime with file access and tools. Include the workspace key, relay name, lead
name, exact scope, and completion criteria in the sub-agent prompt. If that
spawn capability is not available, use add_agent instead.
Worker ACK fallback
If a worker does not ACK within 30 seconds:
- Check whether the worker appears in
list_agents. - If this is a running process, have it call
register_agent. - If this should be a spawned worker, call
add_agentwithname,cli, andtask. - Send (or re-send) the assignment via
send_dm. - Poll the lead inbox again for ACK.
- If still no ACK after a second attempt, report the exact failed step to the user.
Handoff template
Worker: api-worker
Type: relay-spawned worker (use add_agent with name, cli, and task)
Lead: lead
Scope: check the Agent Relay inbox and confirm connectivity
Protocol:
1. Check inbox
2. DM lead with ACK
3. Perform scope
4. DM lead with DONE
For code-heavy tasks, change the type line to:
Type: Codex sub-agent (use relay-worker if your Codex surface provides sub-agent spawning)