harnessrouter
HarnessRouter calls itself the unified interface for agent harnesses. The README says it turns existing harnesses such as Codex and Claude Code into plug-and-play agent backends, so a product can run tasks, retrieve results and switch harnesses through one API. It implements the Unified Harness Protocol (UHP) and provides an OpenAI Responses-compatible API, handling persistent sessions, streaming progress, files, artifacts, cancellation and structured failures.
The README includes a benchmark chart comparing eight harness and model configurations on the same task and states that the lowest-cost and fastest configurations vary by task; the methodology is on the project's website, so treat the figures as the project's own. This repository is the self-hosted Community Edition, with your own provider keys on infrastructure you control, and a managed Cloud offering is linked from the site.
Quick start is one Docker command that binds to 127.0.0.1:3000 and keeps data in a named volume. It needs Docker, about 4 GB of disk and a provider API key; no HarnessRouter account is required. The first launch installs the enabled harness CLIs, and then you sign in to the console, add a provider under Bring Your Own Key and run a first task. The README says the entrypoint needs root to manage per-session users, so you should not add --user, and it warns that the console starts with a default username and password that you must change in Profile before exposing the instance. It is Apache-2.0 licensed and the last push was 2026-10-15. This review is based on the README and repository data; we have not run it ourselves.
Features
Why choose it
Trade-offs
Maintenance check
- Last commit
- 2026-10-21
- Commits, last 90 days
- 100+
- Releases, last 90 days
- 30
- Latest release
- v0.35.14-rc.1 (2026-10-22)
- Open issues
- 26
- Recent issues with at least one comment
- 2/12
Oldest week on the left; the latest four weeks are orange. Source: GitHub commit activity.
Status rule: archived on GitHub = Archived; last commit within 90 days = Active; 91 to 365 days = Slowing; older = Stale. All figures come from the GitHub API on the date shown.
Most discussed open issues
- #451 Console: a produced file's card sometimes does not render though the turn's record has the file4 comments · 2026-10-12
- #25 Should HarnessRouter support persistent harness runtimes instead of spawning a CLI process per turn?4 comments · 2026-08-23
- #479 UEP: First-class input requests — `input_required` event, `awaiting_input` status, and `POST /v1/responses/{id}/input`2 comments · 2026-10-17
- #476 UEP: `requires_input` — a task can end by asking the user, and the answer resumes it2 comments · 2026-10-16
- #382 The DeepSeek Harness driver keeps its own copy of the relay, without the runner relay's repairs2 comments · 2026-10-04
Issue titles are quoted from GitHub. Open the link to check whether a problem still applies to the version you use.
Compatibility
Quick start
Use cases
Alternatives
Comments
No comments yet. Be the first!