agent-bridge
Enables OpenAI Codex sessions to communicate with Claude Code and opencode peers, delegate headless tasks, spawn background subagents, exchange threaded messages, and coordinate multi-agent workflows through agent-bridge.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agent-bridgeAsk Codex to review the diff in src/auth and wait for its answer."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agent-bridge
Let Claude Code, OpenAI Codex, opencode, Google Antigravity CLI and Muse work together.
agent-bridge connects the coding agents on your machine, and on PCs you pair, into one team. They message each other, hand each other work as subagents, and share history. You follow and steer everything from one local dashboard.
Documentation · Install · Update · Changelog

What it does
Messaging between agents. Sessions send each other questions, reviews and results. Messages to an offline or idle agent wait and wake it when possible.
Any CLI can delegate to any CLI, including itself. Claude, Codex, opencode, Antigravity and Muse each expose every coding agent's
ask_*andspawn_*tools. Depth, slot, ownership and hop guards still apply. You can talk to a running subagent, continue a finished one with its full context, cancel it, or hand all of them to another session. Edits can run in their own git worktree.Projects with a main and a secondary. A Claude and a Codex session in the same folder share their project's jobs. The main session is the first contact. If it closes or runs out of usage, the secondary takes over and nothing is lost.
Questions to you. Agents ask you decisions in one place. You hear a chime in the dashboard, or get a Windows notification that opens the question. Your answer goes straight back to the agent that asked.
A dashboard for everything. Sessions, subagent trees, chats, progress with ETA, approvals, pinned decisions, full history search and paired PCs, at
http://127.0.0.1:4777.Paired PCs. Two PCs pair once over TLS. Their agents then message each other, transfer files and start jobs on the other PC.
Nothing gets lost. Every message, job, chat and decision is stored and searchable. History is archived, never deleted, and upgrades migrate your data with a backup first.
Related MCP server: hardline-mcp
CLI feature support matrix
This table describes agent-bridge 0.30.17, plus the unreleased Muse column. ✅ supported · ⚠️ partial (see footnotes) · ❌ not supported. Delegation rows describe the CLI running the job; “delegate from” describes the supervising session. Muse behavior is covered by protocol fixtures and subprocess tests; live Muse binary/provider acceptance remains pending.
Feature | Claude Code | Codex | opencode | Antigravity | Muse |
Session connection, peers, send/receive | ✅ | ✅ | ✅ | ✅ | ✅ |
Messages while busy (hooks / next tool or model step) | ✅ | ✅ | ✅ | ✅ | ✅ |
Idle message delivery / auto-wake | ✅ | ||||
Delegate to ( | ✅ | ✅ | ✅ | ✅ | ✅ |
Delegate from (all five targets, including itself) | ✅ | ✅ | ✅ | ✅ | ✅ |
Follow-ups / resume ( | ✅ | ✅ | ✅ | ✅ | |
Jobs in isolated git worktrees | ✅ | ✅ | ✅ | ✅ | ✅ |
Live job steps, progress and ETA | ✅ | ✅ | ✅ | ✅ | |
Job model and effort selection | ✅ | ✅ | ✅ | ✅ | |
| ✅ | ✅ | |||
Job access: | ✅ | ✅ | |||
Job approval relay to supervisor | |||||
Native job approval / sandbox options | ✅ | ⚠️ | ✅ | ✅ | ✅ |
Nested bridge subagents (depth limit) | ✅ | ✅ | ✅ | ✅ | |
Scoped native child bridge addresses | ❌ | ❌ | ❌ | ❌ | |
Native children excluded from top-level registration | ✅ | ✅ | ✅ | ||
| ✅ | ✅ | ⚠️usage | ||
Native transcript ingestion and | ✅ | ✅ | ✅ | ✅ | ✅ |
Dashboard native chat and child transcripts | ✅ | ✅ | ✅ | ✅ | ✅ |
Owner questions ( | ✅ | ✅ | ✅ | ✅ | ✅ |
Pinned decisions ( | ✅ | ✅ | ✅ | ✅ | ✅ |
Project main / secondary roles | ✅ | ✅ | ✅ | ✅ | ✅ |
Paired-PC messaging | ✅ | ✅ | ✅ | ✅ | ✅ |
Jobs on a paired PC | ✅ | ✅ | ✅ | ✅ | ✅ |
Mobile app session / job visibility | ⚠️mobile | ⚠️mobile | ⚠️mobile | ⚠️mobile | ⚠️mobile |
| ✅ Marketplace plugininstall | ✅ Marketplace plugininstall | ✅ Native plugininstall | ✅ Native plugininstall | ✅ Native pluginmuse-install |
Nested bridge delegation defaults to depth 2, configurable up to 3; depth, slot, ownership and hop guards apply to every CLI. Owner questions, decisions and project roles belong to top-level project sessions; delegated jobs use their supervisor. Jobs without allow_tools may use Pair Desk worker tools (reads, comments, progress, plans, steps, edit issues; creating issues and status, build or handoff writes are not included) without asking, in every access mode including read and ask; change or clear this with jobs.defaultAllowTools in the home config, or per job with allow_tools (a list replaces it, [] turns it off). Transcript views and search require the CLI's local transcript files or database. Paired-PC jobs require an enabled remote-job policy, an allowed agent and an absolute working directory within the receiving PC's allowed roots.
Install
Requires Node.js 24+ (the current LTS); older versions refuse to start. Install for every supported CLI it finds on your machine:
npx -y github:rennerdo30/agent-bridge installIt shows its plan per tool and asks first; add --yes to skip the questions, or name tools: install claude codex opencode antigravity muse. In Codex, open /hooks once and trust the agent-bridge hooks. Per-CLI details: Installation.
Update
npx -y github:rennerdo30/agent-bridge update
npx -y github:rennerdo30/agent-bridge status # which sessions still run an older versionYou can update while sessions run. New sessions start on the new version, and running ones switch at their next plugin reload. Mixed versions keep working together. See Updating.
First steps
Just ask your agent in plain language:
Ask Codex to review the diff in
src/authand tell me what it finds.
Start two Codex subagents in worktrees: one writes the tests, one fixes the bug.
Hand all your subagents to codex-myproject, I'm closing this session.
Open the agent-bridge dashboard.
All tools, parameters and behavior are in the MCP tools reference.
How it works
Each agent session starts its own small agent-bridge server. The first one that finds no broker starts one background broker process (the daemon) on a local pipe (a Windows named pipe or a Unix socket); every session is a client of it, and the broker and its dashboard keep running when that session exits. If the daemon dies, the next session starts a new one. After an update, the first session of the newer release makes the running daemon hand over: it finishes admitted requests and exits, and the newer release's daemon takes over the same store. A daemon with no connected session exits after 10 minutes. To keep the older behavior, where the first session hosts the broker itself and another takes over when it exits, set AGENT_BRIDGE_DAEMON=0 or "daemon": { "enabled": false } (see configuration). Data lives in SQLite under ~/.agent-bridge. Subagents run in detached job runners, so they survive plugin reloads.
The daemon has no stop or restart command: agent-bridge core status is read-only, and handover, idle exit or SIGTERM end it. It does not claim full state authority (no lifetime-held lock or receiver fencing); see the daemon launcher notes and the lifecycle contract for the remaining limits.
Claude Code session Codex session
┌───────────────────────┐ ┌───────────────────────┐
│ agent-bridge server │◄── local pipe ────►│ agent-bridge server │
│ hooks · channels │ │ hooks · app-server │
└───────────────────────┘ │ └───────────────────────┘
first server to start is the broker · messages in SQLite⚠️ WHAT AGENT-BRIDGE MAY DELETE ON YOUR DISK
Read this before you turn on any cleanup. By default agent-bridge removes nothing of yours.
Job worktrees only, and only ones agent-bridge created itself. When a subagent gets its own git worktree, agent-bridge writes an ownership record for it at creation time. A worktree without that record, or whose folder was replaced, is never touched, whatever its branch or folder name. Your own worktrees and checkouts are never removed.
Automatic removal when a job closes is OFF by default (
jobCloseCleanup: false). If you turn it on, a finished job's worktree is removed only when all of these hold: no uncommitted or untracked files, no unknown ignored files, no links into other folders, and every commit has first been pushed and verified on your remote (aswip/<job>). If any check fails, the worktree is kept and the reason is recorded. Local branches are always kept.agent-bridge cleanupis manual. Without--yesit only lists what it would remove. With--yesit removes only worktrees that are inside agent-bridge's own worktree folder, belong to a recorded agent-bridge job, are on anagent-bridge/*branch fully merged into its base, and have nothing uncommitted. Everything else is kept.Your history and messages are never deleted. Old data is archived.
agent-bridge storage finalizeremoves old backup copies only after a migration has been verified with counts and hashes, and only when you confirm with--yes.
If you are unsure, leave cleanup off. Nothing breaks; worktrees simply stay until you remove them.
Security
Only your own agent-bridge processes can connect: every connection presents a secret from
~/.agent-bridge/token.The dashboard listens on
127.0.0.1only and needs its access key.Subagents are read-only by default. You raise access per job, and edits can be isolated in worktrees.
Messages from other agents are marked as such, and agents are told not to act destructively only because a peer asked.
Pairing uses TLS 1.3 with a one-time code; discovery never connects on its own.
Details: Security.
Development
npm install
npm run check # typecheck, tests and buildnpm run build bundles src/ into plugins/*/dist, which is committed so the plugins install straight from Git. The documentation site lives in docs/ (Astro Starlight).
License
MIT
Idle delivery uses a channel when enabled, the wake module on Claude Code 2.1.287+, or the host's
↩asyncRewakeStop hooks. It depends on an available wake transport and the session's wake settings; otherwise mail stays queued for a later prompt or inbox.Requires a known main-thread ID, native
↩codex queuesupport and a TUI consuming that queue. Queue acceptance does not confirm a started turn or read mail. Trust the bridge hooks in/hooksfor automatic injection.Active
↩PreInvocation/ Stop hooks deliver mail (retaining unread mail if a Stop continuation hits the native cap), but an already idle TUI cannot be woken. Queued mail arrives on the next turn or through inbox.Returns native help's model aliases and effort levels, with alias fallbacks; Claude Code has no full model-catalog query here.
↩The catalog is a non-exhaustive provider/model list and can be empty; explicit IDs still resolve at startup. Effort is a provider-specific variant. OpenCode 2 requires an explicit model when selecting effort.
↩
↩askstays read-only, likeread: allowed native edits cannot reliably be intercepted. In editable modes, actual native permission prompts can be relayed through a PermissionRequest hook (Claude Code 2.1.268+, bundled hook and a launch without a shell); native allow/deny rules run first.Access maps to Codex's sandbox. In app-server jobs,
↩approvals_reviewerdefaults toauto_review; chooseuserfor forwarded native requests. Automatic review refusals can be escalated for a supervised retry without overriding sandbox policy. Full-access jobs and thecodex execfallback fix the reviewer touser. The exec fallback needs a trusted PermissionRequest hook forask; without it,askstays read-only.
↩ask, and eligibleeditruns, relay native permission events through a private served session. Plain headless runs reject requests or auto-approve withauto_approve=true; those requests are not relayed.
↩askrelays every non-reading tool through the installed PreToolUse gate.editdelegates workspace reads/writes (and pathless reading tools) to native policy—which still enforces native Ask/deny rules and soft-denies headless prompts—while relaying outside-workspace file actions, commands and external tools to the supervisor (auto_approve, preserving explicit native deny rules).bypass_permissionsexplicitly overrides the read/ask/edit access policy;terminal_sandboxis separate.Read-only opencode jobs' tool allowlist enables delegation to the other four CLIs, including Muse, but omits opencode self-delegation,
↩list_modelsanddecide. Top-level opencode sessions expose all five targets.Claude only: a live native child gets
↩<parent>/sub:<agent_id>on its registered parent's connection. It may use onlypeers,inboxandsend, with explicit child identity, ownership and hop limits; recipients are its parent, the parent's owned jobs and exact local recipient grants. No independent registration, delegation, broadcast or remote address; remaining mail returns to the parent when the child ends.Antigravity ignores hooks for a child conversation on the parent's shared server. It has no equivalent MCP caller-lineage admission check, so separate child-server registration is not established by this implementation.
↩opencode reports today's spend/tokens and free-model information, not remaining provider quotas.
↩Reads structured model quota buckets and reset times from
↩agy -p /usage --output-format json(requiresagy1.1.11+; older versions report unknown without starting a model turn).Paired jobs accept
↩terminal_sandboxandbypass_permissions, preserve explicit false settings on continuation, and reject these options for other agents before launch.With the mobile gateway enabled and a phone paired, each enrolled PC exposes local registered sessions and retained jobs, with chats/steps where available. Paired-PC peer projections are excluded and native child hierarchy is not projected.
↩
↩npx -y github:rennerdo30/agent-bridge installsets up detected CLIs;updatepublishes their next runtime while retaining old versions. Claude gets MCP/channel support, hooks, the wake module, skills, commands and agent definitions. Codex gets MCP, skills and hooks (trust them in/hooks). opencode gets the native plugin withbridge_*tools, its runtime, skill and agent definitions for both plugin API generations. Antigravity gets the native plugin, MCP configuration, skill, delivery/permission hooks and a bridge MCP grant. Running integrations adopt updates on reload or restart; an existing broker keeps its version until its host closes or reloads.Native command hooks deliver active-turn mail and can continue a stopping turn. Native idle-TUI wake is not confirmed; queued mail waits for another turn or inbox.
↩Stable MSP v1 over
↩muse serveis the default job transport, including live steering and native item progress.AGENT_BRIDGE_MUSE_EXEC=1explicitly selects the exec compatibility path without MSP steering/approval relay. A failed MSP turn is never automatically replayed through exec. Resumed profile selection opts into the experimental, Muse-version-dependentsession/setPermissionProfileonly after initialize negotiates it, and verifies the resulting profile before a turn. Unsupported or rejected changes fail closed; diagnostics pin SDK 1.4.7 and report the served version/capability. Other jobs keep experimental APIs disabled.MSP
↩model/listreports catalog IDs, defaults and effort variants without starting a session/turn. Empty or failed catalog reads mean unknown availability; explicit IDs still go to Muse for resolution.MSP jobs require an enabled, approved native Bridge permission hook before turn submission, including edit jobs where it isolates native children. Read denies mutations; ask forwards mutation approvals even under native allow rules. An unavailable gate/supervisor cannot approve them. Edit retains native policy. Named profiles must match served session state before any turn. In explicit exec compatibility mode, ask behaves as read.
↩Native children share their root's MCP server. Their PreToolUse gate denies Bridge tool calls to prevent root impersonation, and their delivery hooks cannot consume root mail or change root identity/activity. Sanitized delegated MCP processes restore owned parent/depth context and publish no top-level peer. Muse has no separate scoped native child Bridge address.
↩MSP session usage does not establish account quotas. Account limit availability is reported as unknown, without invented quota percentages or reset times.
↩Uses Muse's native plugin manager and explicit capability approval on install. Update inspects changes; renewed capability approval requires separate review. The bundle includes MCP, command hooks, a coordination skill and peer commands. See Muse configuration for requirements and remaining live acceptance checks.
↩
This server cannot be deployed
Maintenance
Related MCP Connectors
Shared memory and mail for your AI agents. Verified with Claude Code; other MCP clients in testing.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
End-to-end encrypted messaging and work coordination for autonomous AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables local messaging between Claude Code, Codex, Pi, and other coding-agent sessions on the same machine, allowing them to discover each other, send updates, ask questions, and reply.816 npm3AGPL 3.0
- AlicenseAqualityBmaintenanceEnables local AI coding agents to message each other on one machine using a durable SQLite mailbox and live-ask tools.9MIT
- AlicenseNot gradedqualityBmaintenanceEnables local messaging between Claude Code and Codex agents with durable delivery, peer discovery, and reply tracking.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents in different editors and MCP clients to share messages, project context, notes, task ownership, handoffs, and advisory file claims through a local SQLite-backed coordination server. Supports MCP stdio, MCP Streamable HTTP, a JSON HTTP API, and a local CLI for multi-project agent collaboration.MIT