AI NewsOpen sourceAnnouncement
HarnessRouter runs several coding agents from one self-hosted Docker container
HarnessRouter Community Edition is a self-hosted Apache-2.0 container that runs Claude Code, Codex, Hermes, Pi and DeepSeek Harness through one API, with a shared console and per-session Linux users for isolation.
Image: GitHub
Why it mattersA team that already uses four coding-agent CLIs can put them behind one API on one machine, so switching harness on a task no longer means switching CLI, keys and transcripts too.
HarnessRouter Community Edition is an Apache-2.0 container that runs Claude Code, Codex, Hermes, Pi and DeepSeek Harness behind a single API on a machine the operator controls. The repository has 652 stars in the four weeks since it was published on 9 August 2026, and it implements a specification the project calls the Unified Harness Protocol.
The install is one docker pull, one docker run on port 3000, and a wait for the container to fetch each supported CLI on first boot. The image itself does not include the agent CLIs because Claude Code is under Anthropic's own terms and Hermes declares no license, so redistributing them inside a public image is not allowed. Codex, Pi and DeepSeek Harness are open-source and are installed the same way for consistency.
What is actually shared across harnesses
Once a provider key is added on the Integrations page, every harness in the container can call it under a policy the user sets. The connection matrix in the README lists which provider works with which harness: Anthropic keys work with Claude Code, Hermes and Pi, OpenAI keys work with Codex, Hermes and Pi, and an OpenRouter, Vercel or TokenRouter key works with all five. A single Bedrock key works with Claude Code and Hermes only.
Every harness writes its transcript to the same SQLite database on one Docker volume, and the console shows tool calls, file changes and streamed output in the same UI regardless of the underlying CLI.
How sessions are kept apart
The container runs as root by default and refuses to start with --user, which is the opposite of the usual container-hardening advice. The README explains why. Every agent CLI runs as its own per-session Linux user, and the root process exists to switch to that user before starting the agent. An agent cannot read another session's files, the shared database, the blob store or the secret store, because those paths belong to other users on the filesystem. A misdirected file write fails at the syscall rather than writing into another session's workspace. No --privileged, --cap-add or custom seccomp profile is needed.
Starter kits
The project includes three worked examples that come with the container: a Slides agent that builds a live deck slide by slide, a Sheets agent that runs a chosen harness on every row of a table, and a Chat agent. Each is a full app plus the harness configuration plus the skill that teaches the harness the output format. The three exist to show what the router is for beyond raw CLI access.
The reason a team ends up with four coding-agent CLIs is that no one of them is best at every task. Codex is better at some, Claude Code at others, and DeepSeek Harness is the option a team uses for long agent runs. The cost is that each one is a separate CLI, a separate transcript, a separate way to add a provider key and a separate way to fail.
Putting the five behind one API on a machine the team already runs means the choice of harness is no longer a machine-setup problem. A task moves between them without adding keys again, and the whole transcript is stored in one place afterwards, which is the part that actually makes the router useful for the retry a week later.
Source
This item was written by an AI system from the linked source. Reveneau is responsible for what it publishes.
Get AI News in your inbox
New developer tools, model and agent releases, and how teams are actually using them to release software. Short, and only when there is something worth reading.