Local control plane for bring-your-own coding agents.
A local-first shared handoff, supervision, and ops layer for Claude Code, Hermes, OpenClaw, and other terminal agents.
agentcodehandoff gives multiple coding agents one coordination layer inside a shared repo: clear handoffs, explicit ownership, supervised bridge processes, workflow-state updates, and a durable local record of who is doing what.
It is intentionally a coordination layer, not a hosted model provider. You bring your own installed and configured agent tools. AgentCodeHandoff handles the collaboration.
./install.sh
agentcodehandoff quickstart --repo /path/to/repo
agentcodehandoff dashboard --view ops --interactiveThen send one real request:
agentcodehandoff request \
--from-agent claude \
--to-agent hermes \
--summary "Need help" \
--details "Reply automatically with a short acknowledgement." \
--files README.mdChoose your team:
local-trio: Hermes + Claude + OpenClawlocal-squad: Hermes + Claude + OpenClawlocal-pair: Hermes + Claude
If you want the four-agent setup:
agentcodehandoff quickstart --template local-squad --repo /path/to/repoCommon first-run fixes:
agentcodehandoff doctorif a bridge will not start. It now prints agent-specific next steps for missing or unauthenticated CLIs.agentcodehandoff doctoralso runs deeper runtime checks for Claude auth and Hermes provider reachability before you start bridges.agentcodehandoff agent-check --agent claude --repo /path/to/repoifclaude auth statuslooks healthy but the supervised Claude bridge still fails.agentcodehandoff agent-check --agent hermes --repo /path/to/repoif Hermes is installed but timing out or not reaching its configured provider.agentcodehandoff bridge-statusif a bridge looks paused or stale. It now prints a remediation hint alongside the failure class and last error.agentcodehandoff logs --agents claude --lines 40if Claude is installed but not replyingagentcodehandoff logs --agents openclaw --lines 40if OpenClaw is installed but not configured
If quickstart or up --template local-trio does not get you to a healthy trio, run the agent-specific checks directly:
agentcodehandoff agent-check --agent claude --repo /path/to/repo
agentcodehandoff agent-check --agent hermes --repo /path/to/repoWhat they tell you:
claude: checks the real bridge invocation path and catches the common mismatch whereclaude auth statusin one shell looks fine but the supervised bridge runtime is not actually logged inhermes: shows whether Hermes can reach its configured provider path and, on failure, reports the provider, model, and endpoint that timed out
If either one fails, fix that agent first and rerun:
agentcodehandoff quickstart --template local-trio --repo /path/to/repoFor a concrete end-to-end example with real Claude and Hermes failure outputs, see examples/recovery.md. For the four-agent setup, see examples/local-squad-recovery.md.
If you still want Claude Code in the mix, but cannot rely on a third-party harness model anymore, this is the intended setup:
- run your own installed
claudeCLI - run your own configured
hermesand optionallyopenclawagent runtimes - let
AgentCodeHandoffcoordinate them in your environment
Start here:
agentcodehandoff quickstart --template local-trio --repo /path/to/repoIf Claude still fails even though claude auth status looks fine:
agentcodehandoff agent-check --agent claude --repo /path/to/repoThat reproduces the real bridge invocation path and tells you exactly what to fix next.
If you are using the four-agent squad, also run:
agentcodehandoff agent-check --agent openclaw --repo /path/to/repoand use examples/local-squad-recovery.md as the recovery checklist.
It is built for teams running:
- Claude + Hermes
- Claude + Hermes + OpenClaw
- two or more agent terminals on one machine
- one shared codebase
- a zero-infrastructure workflow
It now supports:
- 3-agent supervised team startup with
local-trio - 4-agent supervised team startup with
local-squad - availability-aware routing and graceful fallback when one agent is rate-limited or offline
- interactive terminal ops for recovery, sweeping, and request resolution
- live-verified Claude bridge replies via structured JSON output
Most multi-agent coding workflows break on coordination, not model quality:
- no durable handoff stream
- no clear ownership of files or scopes
- no quick way to see who is doing what
- no shared notion of blocked, done, or review-ready work
- too much manual relaying between terminals
agentcodehandoff fixes that with a small, explicit local state model:
~/.agentcodehandoff/inbox.jsonl~/.agentcodehandoff/claims.json
- A local-first coordination layer for Claude Code, Hermes, OpenClaw, and similar terminal agents
- A shared handoff, routing, supervision, and recovery system that runs on your machine
- A way to make already-installed agents collaborate inside one repo without constant human relaying
- Not a hosted agent platform
- Not a model provider
- Not a third-party Claude subscription harness
- Not a resale layer for API or subscription access
AgentCodeHandoff follows a bring-your-own-agent model:
- for subscription-backed tools like
claude, you use your own installed and authenticated CLI in your environment - for harness-style tools like
hermesandopenclaw, you use your own configured runtimes, providers, and local setup - AgentCodeHandoff launches and coordinates those tools; it does not provide the underlying subscriptions, providers, or models
This repo is designed for orchestration of user-controlled agent runtimes. It is not designed to proxy or resell third-party subscription access through a hosted service.
- Shared inbox for agent-to-agent handoffs
- Lightweight claim board for file and scope ownership
- Availability-aware routing across Hermes, Claude, and OpenClaw
- Workflow updates for
request,done,blocked, andreview - Request lifecycle tracking with
acknowledged,done,blocked,review,closed,approved, andescalated - Claim resolution with final states like
completed,blocked, andabandoned - Git worktree-backed agent sessions for isolated edit space
- File-awareness checks that compare live session edits to claimed files
- Drift suggestions and safe remediation for expand, handoff, and split-work flows
- Supervised bridge lifecycle commands with pid, heartbeat, and pending request visibility
- Saved bridge profiles, reusable presets, and one-command team lifecycle controls
- Automatic timeout recovery with reminders, reroutes, and escalation when safe recovery is exhausted
- Terminal-first workflow for two or more agents in one repo
- Paneled terminal dashboard for bridge health, workflow, requests, claims, conflicts, and recent messages
- Interactive ops dashboard with direct recovery and request-resolution shortcuts
- Local-first state with no daemon required
- Agent-specific wrapper commands for faster day-to-day use
This repo is no longer just a shared inbox prototype. The current build supports:
- local pair and local trio presets
- local squad preset with OpenClaw support
- supervised
up/down/restart-teamlifecycle commands - persistent bridge recovery profiles
- interactive operator controls from the terminal dashboard
- explicit availability overrides for rate-limited or offline agents
- live trio verification with Hermes, Claude, and OpenClaw
If you want the fastest path from clone to real collaboration, use the golden path:
agentcodehandoff quickstart --repo /path/to/repoThat will:
- initialize local state
- install wrappers
- run setup checks
- start the default supervised local trio
- print the next commands to use
Then open the operator view:
agentcodehandoff dashboard --view ops --interactiveAnd send one real request:
agentcodehandoff request \
--from-agent claude \
--to-agent hermes \
--summary "Need help" \
--details "Reply automatically with a short acknowledgement." \
--files README.mdGuided examples:
The current build has been verified against the real local toolchain, not just isolated tests.
Live verification completed with:
agentcodehandoff up --template local-trio- real supervised bridges for Hermes and Claude
- real requests sent through AgentCodeHandoff into the shared inbox
- real automatic replies written back by Hermes and Claude
Observed live replies:
hermes -> claudeAcknowledged public release verification
claude -> hermesACK: Public release live verification task received
That confirms the public-alpha story is accurate: this tool can bring up a real local trio, coordinate requests, and receive actual bridge-written replies through the shared collaboration layer.
OpenClaw is now supported as a first-class agent in the tool, including wrappers, routing, supervision, and presets. Live OpenClaw replies still depend on OpenClaw's own gateway and agent configuration in the local runtime.
The product story is intentionally simple:
- you already have agent tools
- you already pay for them however you choose
- AgentCodeHandoff makes them coordinate
That keeps the tool lightweight, local, and practical for real engineering workflows.
No. AgentCodeHandoff is a coordination layer. You run your own installed agent tools and keep auth or provider setup in those tools. AgentCodeHandoff coordinates them.
Yes. The intended model is not "Claude runs everything for you through a third-party service." The intended model is "Claude Code is one installed agent tool in a team, and AgentCodeHandoff coordinates it with Hermes, OpenClaw, or other agent tools in your environment."
Yes, OpenClaw is now a first-class supported agent in the tool. It is included in routing, wrappers, supervision, and the built-in local-squad preset. Live replies still depend on OpenClaw itself being configured locally.
No. This is a bring-your-own-agent tool. You use whatever installed CLIs, harnesses, plans, or providers you already use. AgentCodeHandoff is the coordination layer, not the provider.
Run:
./install.sh
agentcodehandoff quickstart --repo /path/to/repo
agentcodehandoff dashboard --view ops --interactivecd agent-inbox
./install.shThat installs the CLI, creates the local state directory, seeds bootstrap messages, and installs helper wrappers under ~/.local/bin.
Try a disposable end-to-end demo:
./examples/demo-session.shFor the full supervised collaboration path, start with:
agentcodehandoff doctoragentcodehandoff up --template local-trio --repo /path/to/repoagentcodehandoff dashboard --view ops --interactiveagentcodehandoff bridge-statusagentcodehandoff requestsagentcodehandoff availability
If you are the second collaborator terminal, keep this shorter loop:
agentcodehandoff-hermes-watchagentcodehandoff dashboard --view opsagentcodehandoff bridge-statusagentcodehandoff bridge-profile-show --agent hermes
agentcodehandoff doctor
agentcodehandoff statusFor a read-only observer setup, start two terminals:
agentcodehandoff-hermes-watch
agentcodehandoff-claude-watchFor manually managed auto-reply bridges, start them in real terminals:
agentcodehandoff-hermes-auto --repo /Users/iris/Projects/agent-inbox
agentcodehandoff-claude-auto --repo /Users/iris/Projects/agent-inbox
agentcodehandoff-openclaw-auto --repo /Users/iris/Projects/agent-inboxEnable automatic file claims from bridge replies:
agentcodehandoff-hermes-auto --repo /Users/iris/Projects/agent-inbox --claim-on-filesCheck whether the bridges appear alive:
agentcodehandoff auto-statusOverride an agent's availability when you already know it is offline or rate-limited:
agentcodehandoff availability-set --agent claude --state rate-limited --note "subscription window exhausted"
agentcodehandoff availabilityFor day-to-day supervised operation, prefer managed background bridges instead of keeping separate reply terminals open:
agentcodehandoff bridge-start --agent hermes --repo /path/to/repo --auto-sweep
agentcodehandoff bridge-start --agent claude --repo /path/to/repo --auto-sweep
agentcodehandoff bridge-start --agent openclaw --repo /path/to/repo --auto-sweepOr apply the built-in trio preset in one step:
agentcodehandoff bridge-preset-apply --name local-trio --repo /path/to/repo --startOr bring up the built-in four-agent preset:
agentcodehandoff bridge-preset-apply --name local-squad --repo /path/to/repo --startOr use the higher-level team lifecycle commands:
agentcodehandoff up --template local-trio --repo /path/to/repo
agentcodehandoff up --template local-squad --repo /path/to/repo
agentcodehandoff down --template local-trio --repo /path/to/repo
agentcodehandoff restart-team --template local-trio --repo /path/to/repoThe local-trio flow has been live-verified with Hermes, Claude, and OpenClaw replying through supervised bridges.
Primary assets in this repo:
- brand mark:
assets/agentcodehandoff-mark.svg - README lockup:
assets/agentcodehandoff-lockup.svg - social preview:
assets/agentcodehandoff-social-preview.svg
For GitHub repo presentation, use assets/agentcodehandoff-social-preview.svg as the social preview image.
For live terminal operations, enable dashboard actions:
agentcodehandoff dashboard --view ops --interactiveKeys:
aapply the top safe ops actionrrecover bridgesssweep stale requestspapprove the top actionable request resolutioncclose the top actionable request resolutioneescalate the top actionable request resolutionqquit
Inspect supervised bridge health:
agentcodehandoff events --limit 20
agentcodehandoff request-trace --request-id <request-id>
agentcodehandoff ps
agentcodehandoff bridge-status
agentcodehandoff logs --agents claude --lines 40
agentcodehandoff bridge-profiles
agentcodehandoff bridge-presetsOpen the live terminal dashboard. Use the default view for coordination and the ops view for bridge supervision, stale requests, and recovery visibility:
agentcodehandoff-dashboard
agentcodehandoff dashboard --view ops
agentcodehandoff ops-nextSend a handoff:
agentcodehandoff-claude-send \
--summary "Need a realism pass" \
--details "Own MeshGraph.tsx only" \
--files "frontend/src/components/MeshGraph.tsx"Send an auto-reply request:
agentcodehandoff-claude-request \
--summary "Need a quick review" \
--details "Reply automatically with short feedback." \
--files "README.md"Route a request automatically:
agentcodehandoff dispatch \
--from-agent claude \
--summary "Fix failing CLI test" \
--details "Investigate the parser behavior and send it to the best agent automatically." \
--files "src/agentcodehandoff/cli.py,README.md"Claim a scope:
agentcodehandoff-hermes-claim \
--scope meshgraph-pass \
--summary "Owning cinematic sphere polish" \
--files "frontend/src/components/MeshGraph.tsx"Send a completion update:
agentcodehandoff-claude-done \
--summary "CLI workflow states shipped" \
--details "done, blocked, review, and claim resolution are live." \
--files "src/agentcodehandoff/cli.py,README.md"Signal a blocker:
agentcodehandoff-hermes-blocked \
--summary "Need routing policy input" \
--details "Current heuristics are too generic for design-vs-code review tasks." \
--files "src/agentcodehandoff/cli.py"Request review:
agentcodehandoff-claude-review \
--summary "Review the dispatch heuristics" \
--details "Check whether docs-heavy mixed tasks should route to Hermes." \
--files "src/agentcodehandoff/cli.py,README.md"Resolve a claim:
agentcodehandoff resolve \
--agent claude \
--scope cli-workflow-pass \
--status completed \
--note "Merged and verified locally."Start an isolated worktree session:
agentcodehandoff session-start \
--agent claude \
--scope parser-pass \
--repo /path/to/repo \
--note "Isolated parser refactor worktree"List sessions:
agentcodehandoff sessionsClose a session and remove its worktree:
agentcodehandoff session-end \
--agent claude \
--scope parser-pass \
--note "Merged and cleaned up"Inspect live drift against claimed files:
agentcodehandoff driftGet actionable scope suggestions:
agentcodehandoff suggestInspect request lifecycle state:
agentcodehandoff requestsResolve a tracked request explicitly:
agentcodehandoff request-resolve --request-id msg-123 --action approve
agentcodehandoff request-resolve --request-id msg-123 --action closeSweep stale requests and apply timeout actions:
agentcodehandoff request-sweepLet supervised bridges recover their own stale requests automatically:
agentcodehandoff bridge-start --agent hermes --repo /path/to/repo --auto-sweep --sweep-interval 30 --max-restarts 5Recover paused or down bridges with one command:
agentcodehandoff bridge-recoverBridge recovery uses the last saved per-agent profile even after a full stop removes the live lock.
This is the clearest path for two-agent collaboration in one shared repo.
- Install and verify local state.
./install.sh
agentcodehandoff doctor- Start supervised bridges for each agent that should auto-reply.
agentcodehandoff bridge-start --agent hermes --repo /path/to/repo --auto-sweep
agentcodehandoff bridge-start --agent claude --repo /path/to/repo --auto-sweep- Keep one terminal on the ops dashboard.
agentcodehandoff dashboard --view ops-
In active agent terminals, use claims plus
request,done,blocked, andreviewupdates. -
If a bridge stops responding, inspect it first:
agentcodehandoff bridge-status
agentcodehandoff requests
agentcodehandoff request-sweep- If the bridge is down or paused, recover it using the saved profile:
agentcodehandoff bridge-recover- If recovery is exhausted, fall back to manual auto terminals:
agentcodehandoff-hermes-auto --repo /path/to/repo
agentcodehandoff-claude-auto --repo /path/to/repoThis gives a clean split:
- supervised bridges for normal unattended routing
- ops dashboard for health and stale-request visibility
- manual auto terminals as a safe fallback during bring-up or debugging
Use this when you want the tool to keep automation alive without manual babysitting.
Start bridges:
agentcodehandoff bridge-start --agent hermes --repo /path/to/repo --auto-sweep
agentcodehandoff bridge-start --agent claude --repo /path/to/repo --auto-sweepInspect health:
agentcodehandoff bridge-status
agentcodehandoff dashboard --view opsCommon checks:
bridge-statusfor pid, heartbeat, pending requests, restart counts, and saved profile timestampsdashboard --view opsfor at-a-glance bridge state, stale requests, and remediation contextrequestsandrequest-sweepwhen work is stuck but the bridge still appears alive
Stop or restart a specific bridge:
agentcodehandoff bridge-stop --agent hermes
agentcodehandoff bridge-restart --agent hermes --repo /path/to/repoSupervised bridges persist a per-agent profile so recovery does not depend on a live lock file surviving.
Typical recovery loop:
- A bridge is down, paused, or missing after a shell restart.
agentcodehandoff bridge-statusshows no healthy live process, but still shows the saved repo profile.agentcodehandoff bridge-recoverrestarts the bridge using the last saved settings.agentcodehandoff dashboard --view opsconfirms heartbeat and pending request state.
Example:
agentcodehandoff bridge-status
agentcodehandoff bridge-recover
agentcodehandoff bridge-statusUse bridge-recover --fail-if-idle in scripts when you want a non-zero exit if nothing actually needed recovery.
Inspect or delete a saved bridge profile:
agentcodehandoff bridge-profile-show --agent hermes
agentcodehandoff bridge-profile-delete --agent hermesSave reusable bridge presets and apply them later:
agentcodehandoff bridge-preset-save --name local-pair --agents hermes claude
agentcodehandoff bridge-preset-apply --name local-pair --startAsk the tool for the single most important next ops action:
agentcodehandoff ops-next
agentcodehandoff ops-next --apply
agentcodehandoff ops-next --apply --create-sessionApply a safe remediation automatically:
agentcodehandoff remediate --agent claude --scope parser-passCreate a new split scope and session when drift becomes separate work:
agentcodehandoff remediate --agent claude --scope parser-pass --create-sessionagentcodehandoff init --install-wrappers --seed
agentcodehandoff doctor
agentcodehandoff read --agent claude
agentcodehandoff watch --agent hermes
agentcodehandoff latest --agent hermes
agentcodehandoff events
agentcodehandoff request-trace --request-id <request-id>
agentcodehandoff status
agentcodehandoff auto-status
agentcodehandoff dashboard
agentcodehandoff-dashboard
agentcodehandoff-status
agentcodehandoff claims
agentcodehandoff sessions
agentcodehandoff drift
agentcodehandoff suggest
agentcodehandoff requests
agentcodehandoff request-sweep
agentcodehandoff remediate --agent claude --scope parser-pass
agentcodehandoff bridge-status
agentcodehandoff resolve --agent claude --scope cli-pass --status completedexamples/demo-session.sh runs a safe local session in /tmp:
- initializes state
- creates wrappers
- records a claim
- sends a request-style handoff
- prints status
- prints the next supervised bridge and ops commands to try in a real repo
Run the current critical-path test suite with:
python3 -m unittest discover -s tests -vThe current suite covers:
initanddoctoragainst isolated fake Hermes, Claude, and OpenClaw CLIs- availability overrides and routing fallback
- bridge preset persistence for
local-trio - bridge preset persistence for
local-squad - bridge startup validation for missing agent CLIs and non-git repos
- stale lock cleanup and paused-bridge recovery from saved profiles
- restart-cap pause behavior for supervised bridges
- merged bridge/message timeline via
events - per-request lifecycle trace via
request-trace - per-agent bridge log access
- compact per-agent team summaries with
ps - supervised
local-triostartup plus an actual Claude bridge reply in an isolated temp repo - supervised
local-squadstartup with OpenClaw included in the team health path - tracked request resolution
- golden-path
quickstartonboarding
This is the current release-hardening baseline. Before a broad public release, the suite should continue to grow around deeper drift/remediation flows and additional long-running provider/runtime behaviors.
- Agent bridge behavior still depends on the local Claude and Hermes CLIs being installed and authenticated in the environment that launches the bridge.
- Public users should still expect local runtime/environment differences across agent CLIs, but
bridge-startnow fails early for invalid repos and missing agent CLIs instead of deferring that failure to a background process. - Real provider/runtime differences can still surface outside the isolated fake-agent test suite.
- The dashboard is terminal-first and intentionally lightweight; it is not a full graphical control plane.
- The current test suite is strong on critical paths, but not yet exhaustive across every command combination.
- Claude Code behavior depends on the local
claudeCLI being installed and authenticated in the same runtime environment where the bridge process is launched.
Installed by agentcodehandoff init --install-wrappers:
agentcodehandoff-dashboardagentcodehandoff-auto-statusagentcodehandoff-eventsagentcodehandoff-request-traceagentcodehandoff-statusagentcodehandoff-sessionsagentcodehandoff-driftagentcodehandoff-suggestagentcodehandoff-requestsagentcodehandoff-request-sweepagentcodehandoff-remediateagentcodehandoff-availabilityagentcodehandoff-availability-setagentcodehandoff-quickstartagentcodehandoff-upagentcodehandoff-downagentcodehandoff-restart-teamagentcodehandoff-bridge-statusagentcodehandoff-hermes-watchagentcodehandoff-claude-watchagentcodehandoff-openclaw-watchagentcodehandoff-hermes-readagentcodehandoff-claude-readagentcodehandoff-openclaw-readagentcodehandoff-hermes-autoagentcodehandoff-claude-autoagentcodehandoff-openclaw-autoagentcodehandoff-hermes-sendagentcodehandoff-claude-sendagentcodehandoff-openclaw-sendagentcodehandoff-hermes-requestagentcodehandoff-claude-requestagentcodehandoff-openclaw-requestagentcodehandoff-hermes-claimagentcodehandoff-claude-claimagentcodehandoff-openclaw-claimagentcodehandoff-hermes-doneagentcodehandoff-claude-doneagentcodehandoff-openclaw-doneagentcodehandoff-hermes-blockedagentcodehandoff-claude-blockedagentcodehandoff-openclaw-blockedagentcodehandoff-hermes-reviewagentcodehandoff-claude-reviewagentcodehandoff-openclaw-reviewagentcodehandoff-hermes-releaseagentcodehandoff-claude-releaseagentcodehandoff-openclaw-release
- Agent A claims a bounded scope.
- Agent B claims a non-overlapping scope.
- Both agents keep
watchordashboardrunning. - Use
requestfor work that expects a response. - Use
done,blocked, orreviewso progress reads like a workflow, not raw chat. - Resolve claims with
completed,blocked, orabandonedwhen work closes out. - Use
agentcodehandoff statusto inspect latest handoffs, workflow events, open claims, and recently resolved claims.
agentcodehandoff-dashboard is the fastest way to understand live system state in one terminal.
It shows:
- bridge health for Hermes, Claude, and OpenClaw
- latest handoffs
- workflow events like
request,blocked,review, anddone - open claims
- claim conflicts
- recently resolved claims
- recent message traffic
- active worktree sessions
- file-awareness drift summaries
- actionable suggestions for expand, split, or handoff decisions
- safe remediation helpers for claim expansion and handoff generation
- split-work remediation that can create a new claim and optional session
- request lifecycle tracking with pending, acknowledged, stale, and outcome states
- stale-request sweep for reminders and reroutes
agentcodehandoff can manage isolated git worktrees per agent and scope.
Use this when you want:
- one agent per branch/worktree
- clean physical separation of edits
- session state that matches claim state
- dashboard visibility into who owns which workspace
By default, sessions create worktrees under:
<repo>/.worktrees/<agent>-<scope-slug>
Default branch naming:
ach/<agent>/<scope-slug>
Core commands:
agentcodehandoff session-start --agent claude --scope parser-pass --repo /path/to/repo
agentcodehandoff sessions
agentcodehandoff drift
agentcodehandoff suggest
agentcodehandoff session-end --agent claude --scope parser-passagentcodehandoff auto --agent <name> watches the inbox and uses a local agent CLI to generate a JSON reply automatically.
hermesuseshermes chat -Q -qclaudeusesclaude -popenclawusesopenclaw agent --json --agent main
Example:
agentcodehandoff-hermes-auto --repo /Users/iris/Projects/agent-inbox
agentcodehandoff-claude-auto --repo /Users/iris/Projects/agent-inbox
agentcodehandoff auto-statusAuto-claim example:
agentcodehandoff-hermes-auto \
--repo /Users/iris/Projects/agent-inbox \
--claim-on-filesNotes:
-
clauderequires a valid Claude Code CLI login in the shell environment where the bridge runs. -
openclawrequires OpenClaw itself to be configured well enough foropenclaw agent --json --agent mainto complete in the local runtime where the bridge runs. -
smart routing automatically deprioritizes agents with auth, rate-limit, or paused bridge failures when supervision state is available.
-
this works only in a real terminal environment where Hermes and Claude can reach their providers
-
it is not expected to work inside a restricted offline sandbox
-
the auto bridge only replies to messages addressed to that agent
-
auto bridges only respond to
request,task, andauto-requestroles -
plain
handoffmessages are informational and do not auto-trigger replies
Supervised bridges let the tool keep automation running without constant manual babysitting.
What supervision adds:
- one managed background bridge per agent
- pid and heartbeat tracking
- pending request visibility
- log file paths for bridge output
- restart counts and failure classification
- paused state on hard failures like bad repo/auth/config problems
- lifecycle commands to start, stop, restart, and inspect bridges
Core commands:
agentcodehandoff bridge-start --agent hermes --repo /path/to/repo
agentcodehandoff bridge-stop --agent hermes
agentcodehandoff bridge-restart --agent hermes --repo /path/to/repo
agentcodehandoff bridge-statusagentcodehandoff route scores a request across the supported local agents:
- Hermes is preferred for docs, copy, README, install, review, and UX-oriented work
- Claude is preferred for architecture, planning, tradeoffs, and ambiguous deep-review work
- OpenClaw is preferred for memory, research, integrations, logs, and ops-oriented work
Examples:
agentcodehandoff route \
--summary "Improve README onboarding" \
--details "Tighten install wording and first-run instructions." \
--files "README.md,install.sh"agentcodehandoff dispatch \
--from-agent claude \
--summary "Fix parser bug" \
--details "Investigate failing CLI state handling and route to the best agent." \
--files "src/agentcodehandoff/cli.py"- Default state directory:
~/.agentcodehandoff - Override with
AGENTCODEHANDOFF_HOME - Default wrapper directory:
~/.local/bin - Default session state file:
~/.agentcodehandoff/sessions.json
- Python:
3.10+ - Operating model: local-first, terminal-first
- Repo type: local git repositories
- Agent CLIs: Claude, Hermes, and OpenClaw are the primary supported agents today
- Platform expectation: Unix-like environments with
git,python3, and standard process semantics
- Local machine: supported
- Shared repo on local filesystem: supported
- User-managed local agent CLIs: supported
- Hosted relay of third-party subscription credentials: not supported
Current support is strongest for:
- local development on macOS and Linux-style shells
- one machine coordinating two or three terminal agents
- repos where the local agent CLIs are already installed and authenticated
Current non-goals:
- hosted/cloud orchestration
- remote multi-machine coordination
- GUI-first workflows
These are the setups we currently feel best about for public alpha use:
local-pair- Hermes + Claude
- strongest option for simple local collaboration with low setup friction
local-trio- Hermes + Claude + OpenClaw
- best validated multi-agent setup today
- live-verified with supervised bridges and real replies
local-squad- Hermes + Claude + OpenClaw
- fully integrated in the tool
- best used when OpenClaw itself is already configured locally
Practical guidance:
- if you want the safest first experience, start with
local-trio - if Claude is unavailable or rate-limited,
local-pairis still a strong path - if you specifically want OpenClaw in the mix, use
local-squadafter confirmingopenclaw agent --json --agent mainworks locally
Near-term priorities:
- tighter onboarding based on real user feedback
- deeper OpenClaw live verification and setup guidance
- richer interactive ops actions in the terminal dashboard
- clearer request and bridge event history
- more regression coverage for long-running supervision behavior
Likely future work:
- richer TUI flows
- notifications
- optional relay modes that preserve the local-first model
Before a broad public release, make sure all of these are true:
python3 -m unittest discover -s tests -vpassespython3 -m py_compile src/agentcodehandoff/cli.py tests/test_cli.pypasses- GitHub Actions CI is green
install.shworks on a fresh machine/user profiledoctorgives actionable output for missing CLIs and invalid reposup --template local-trioanddown --template local-trio --forceare verified in a disposable repobridge-status,logs,ps, anddashboard --view opsall reflect the same bridge reality- README examples still match the actual CLI flags and command names
- known limitations are still accurate
- screenshots or terminal captures are current
See CONTRIBUTING.md.
- bug reports: use the GitHub bug template and include
ps,bridge-status, andlogsoutput - feature requests: use the GitHub feature template
- security issues: see SECURITY.md and report privately first
See CHANGELOG.md.
See LICENSE.