{"slug": "show-hn-agent-relay-for-multi-vendor-coding-sessions", "title": "Show HN: Agent-relay for multi-vendor coding sessions", "summary": "A developer released agent-relay, an open-source prototype that relays turns between coding sessions from different vendors so that, for example, Codex writes and reviews a plan while Claude Code implements it, removing the need to copy context between terminals. The relay coordinates two sessions per team one turn at a time, records every message and decision in a hash-chained audit trail, and stops the loop when a session needs a human decision; it is tested with Claude Code and Codex and requires macOS and Python 3.11 or newer. The tool's documented limits include that activity inside a turn — tool loops, subagents and long-running commands — is invisible to the relay, and Codex's multi-agent mode is recorded but not yet enforced.", "body_md": "**Let AI coding sessions from different vendors work together, while you stay in charge.**\n\nClaude can hand work to Claude on its own. But when you work with sessions from\n**different vendors**, such as Codex for planning and review and Claude Code for\nthe code, they can't talk to each other. Without a relay, **you're the one\ntransferring context**: copying plans, results and reviews between terminals.\n\nagent-relay carries the turns for you. One session leads, the other follows, and the relay passes each turn across, records it on your disk, and stops whenever something needs your decision. It's tested with Claude Code and Codex, and you can extend it to whatever agents you work with by writing an adapter.\n\n| <sub>**Watch:** what the managed session is doing, in plain language.</sub> | <sub>**Decide:** questions stop the loop until you answer.</sub> | \n\nThese demos use pretend sessions, so they're safe to run anywhere and use no model quota. You need macOS and Python 3.11 or newer.\n\n```\ngit clone https://github.com/saranyan/agent-relay.git && cd agent-relay\n\nscripts/console-demo.sh      # the web console, with a few pretend sessions\nscripts/walkthrough.sh       # the full two-terminal flow in a temporary folder\n```\n\nWith the Claude Code and Codex CLIs installed, run it on real sessions:\n\n```\nexport AGENT_RELAY_ROOT=~/relay-root\nbin/relay init --participants codex claude\nbin/relay console      # [n] launch Codex and Claude Code, [p] pair them, [s] start\n```\n\nThe [web console tour](https://github.com/saranyan/agent-relay/blob/main/docs/web-console.md) walks through every screen. The\n[walkthrough](https://github.com/saranyan/agent-relay/blob/main/docs/WALKTHROUGH.md) shows a recorded run with real message and turn\nIDs.\n\nThe relay coordinates **two sessions per team**, one turn at a time. It sees each\nturn from the outside: the turn goes in, the client acknowledges it, and later the\nclient reports it finished. **What a session does inside a turn is invisible to\nthe relay.** That includes tool loops, subagents and long-running commands.\n\n- **The turn budget counts hand-offs, not work.** One turn can hide a lot of\nactivity. The per-turn timeout is the only hard limit inside a turn.\n- **The routes the relay starts are locked down where it can.** A Claude Code\nfollower starts with no tools at all, or, under the coding policy, with only\nRead, Edit, Write, Glob and Grep inside a macOS sandbox. It can't start\nsubagents or run commands. Codex's multi-agent mode is recorded but not yet\nenforced.\n- **Sessions you open in a terminal keep whatever you allowed them** until you\nhand them over.\n\nThe full list of guarantees and limits is in the [reference](https://github.com/saranyan/agent-relay/blob/main/docs/REFERENCE.md#guarantees-and-limits).\n\n**Today, with the prototype:**\n\n- **Plan, build, review.** Codex writes the plan and reviews the result. Claude\nimplements. The loop runs until the reviewer accepts or asks you something.\n- **A second opinion on every change.** Use one model to critique the other's work\nbefore you ever see it, so you review a reviewed change.\n- **Bounded jobs you don't have to babysit.** \"Fix the failing tests in this\nfolder, at most 8 turns, 15 minutes per turn.\" Walk away. A decision notification\n(webhook or SMS, off until you set it up) tells you when it needs you.\n- **Check in at a glance.** The web console works down to phone width. It listens\non loopback only, so reaching it from another device takes your own tunnel. The\nrelay deliberately doesn't provide one.\n- **An audit trail of agent work.** Every message and decision is a durable,\nhash-chained record that you can replay with`relay thread` or rebuild from disk.\n\n**Ideas the design leaves room for** (see the [roadmap](https://github.com/saranyan/agent-relay/blob/main/ROADMAP.md)):\n\n- **One manager, many workers.** A leader hands pieces of a migration to several\nfollowers, one per module, with review between them.\n- **Other agents.** The adapter contract in[docs/PROTOCOL.md](https://github.com/saranyan/agent-relay/blob/main/docs/PROTOCOL.md) isn't specific to Claude or Codex. Any coding agent that confirms receipt of a\nturn and reports completion could plug in.\n- **Saved playbooks.** Reusable goal, scope, check and budget templates, such as\n\"review this branch\", \"write the docs and fact-check them\" or \"upgrade this\ndependency\".\n- **Custom manager styles.** Write your own personality next to Reviewer, Planner\nand Pair programmer, as a plain text file.\n- **A testbed for agent-to-agent protocols.** The bus is a small, durable,\ninspectable message layer. You can use it to study how agents hand work to each\nother, where loops stall, and when humans need to step in.\n- **Evaluation runs.** Pit model pairings against the same task with the same\nbudget, and compare the recorded threads.\n- **Cost and budget insights.** Track tokens and time per team, not just turns.\n\n```\n   you ──start / pause / answer──┐\n                                 ▼\n ┌──────────────┐  handoff  ┌────────────┐  handoff  ┌──────────────┐\n │ leader       │ ◀──────── │ controller │ ────────▶ │ follower     │\n │ (Codex)      │ ────────▶ │ (fg only)  │ ◀──────── │ (Claude)     │\n └──────────────┘  result   └─────┬──────┘  result   └──────────────┘\n                                  │\n                          durable bus on disk\n```\n\n- **Bus:** an on-disk store of messages and events.\n- **Adapters:** they talk to each client. Every capability is explicit, and\nadapters never invent acknowledgments.\n- **Controller:** it runs only in the foreground and keeps exactly one turn in\nflight. It enforces the budget and the timeout, and stops at every human\nboundary.\n\nEach turn ends with a small `relay` block that tells the controller what to do\nnext. Commands, settings and exit codes are in the [reference](https://github.com/saranyan/agent-relay/blob/main/docs/REFERENCE.md).\nThe specification is in [docs/PROTOCOL.md](https://github.com/saranyan/agent-relay/blob/main/docs/PROTOCOL.md).\n\n| Part | State | \n|---|---|\n| Bus, controller, terminal console, web console | Working, covered by the test suite with pretend clients | \n| Discovery of running Claude Code and Codex sessions | Working, read-only, on macOS | \n| Codex and Claude Code driving each other (sessions the relay starts) | **Verified live** : Codex 0.163.0 led Claude Code 2.1.310, 2026-10-25 | \n| Attaching to an open Codex session, handing an existing session over | Built, not yet verified live. Off unless you opt in. | \n| Driving a Claude Code session while it's open in a terminal | Not possible. Open sessions are handed over (closed and resumed) instead. | \n\nWhat's needed to get from prototype to dependable is in the [roadmap](https://github.com/saranyan/agent-relay/blob/main/ROADMAP.md).\nThe details on each client are in\n[integration feasibility](https://github.com/saranyan/agent-relay/blob/main/docs/INTEGRATION-FEASIBILITY.md).\n\n| Document | What it covers | \n|---|---|\n| [Web console tour](https://github.com/saranyan/agent-relay/blob/main/docs/web-console.md) | Every screen of `relay serve` , with screenshots | \n| [Reference](https://github.com/saranyan/agent-relay/blob/main/docs/REFERENCE.md) | Install, consoles, CLI, configuration, guarantees and limits | \n| [Walkthrough](https://github.com/saranyan/agent-relay/blob/main/docs/WALKTHROUGH.md) | A recorded two-terminal run | \n| [Protocol](https://github.com/saranyan/agent-relay/blob/main/docs/PROTOCOL.md) | The specification: root layout, envelopes, state machines, adapter contract | \n| [Integration feasibility](https://github.com/saranyan/agent-relay/blob/main/docs/INTEGRATION-FEASIBILITY.md) | What real Claude Code and Codex surfaces can and can't do | \n| [Context reporting](https://github.com/saranyan/agent-relay/blob/main/docs/CONTEXT-REPORTING.md) | How session titles and summaries are found | \n| [Roadmap](https://github.com/saranyan/agent-relay/blob/main/ROADMAP.md) | What's left, and what could come next | \n| [Changelog](https://github.com/saranyan/agent-relay/blob/main/CHANGELOG.md) | Release notes | \n\nThis is a prototype, and ideas, experiments and pull requests are welcome. See\n[CONTRIBUTING.md](https://github.com/saranyan/agent-relay/blob/main/CONTRIBUTING.md) for setup and for the stricter rules for changes\nto the real-client adapters. Report security issues privately through\n[SECURITY.md](https://github.com/saranyan/agent-relay/blob/main/SECURITY.md). This project follows the\n[Contributor Covenant](https://github.com/saranyan/agent-relay/blob/main/CODE_OF_CONDUCT.md).", "url": "https://wpnews.pro/news/show-hn-agent-relay-for-multi-vendor-coding-sessions", "canonical_source": "https://github.com/saranyan/agent-relay", "published_at": "2026-10-27 17:14:54+00:00", "updated_at": "2026-10-27 17:42:07.107315+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "agent-protocols"], "entities": ["agent-relay", "Claude Code", "Codex", "Anthropic", "OpenAI", "Python 3.11", "macOS"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-agent-relay-for-multi-vendor-coding-sessions", "markdown": "https://wpnews.pro/news/show-hn-agent-relay-for-multi-vendor-coding-sessions.md", "text": "https://wpnews.pro/news/show-hn-agent-relay-for-multi-vendor-coding-sessions.txt", "jsonld": "https://wpnews.pro/news/show-hn-agent-relay-for-multi-vendor-coding-sessions.jsonld"}}