HarnessRouter Community Edition - Open-source unified interface for agent harnesses

Plug-and-play managed agent harnesses in your product: Codex, Claude Code and Hermes through one API on your infrastructure, now open sourced under Apache 2.0. Switch harnesses without rebuilding your backend. Sessions, streaming, files, artifacts, cancellation, failure recovery, all handled. Model provider keys, state, and deliveries under your control. Gateway, Runner, Console in one Docker container. Ready-to-use starter kit apps as inspiration of possibilities.

Add a comment

Replies

Best
Is it fair to think of HarnessRouter as making agent harnesses work like plugins for a product backend?

 That's a fair way to think about it, and honestly a good metaphor. What makes plugins work anywhere (browsers, editors, VS Code) is never the plugins themselves, it's a stable socket: a contract stable enough to build against, plus a way to ask "what can this one do." That's exactly what UHP is trying to be for harnesses. Integrate the socket once, and each harness plugs in with its own strengths declared upfront. The part the metaphor captures best is why it matters: nobody rewrites their editor when a new extension ships. A new harness should be a config change, not a backend rebuild. That's the whole bet.

⁠Really like that you’re building this in public and putting the infrastructure out there. Proper open source. Nice job!

 Thank you for your support, Nirob!

Great release. Congrats folks

 thank you for your support, Artin!

⁠Curious how you’re handling concurrency. What happens when a lot of users kick off long-running jobs at once? The API feels like the easy part; isolation and recovery are where it usually gets messy.

 Agreed, the API is the easy part. The spec draws one hard line on concurrency: tasks run in parallel across sessions, but never two at once inside the same session. A session is one conversation and one working directory, and two agents writing to both isn't a defined state, so the second request gets a clean structured error instead of a corrupted workspace. For isolation, every session gets its own workspace, state, and checkpoint, with one agent process per session. For recovery, workspaces live on the data volume, so a restart doesn't lose work in flight, and cleaned up idle sessions restore from their checkpoint. And the honest ceiling in the self hosted edition: one box runs what the box can run, concurrency defaults to your core count. Scaling beyond that is what the hosted version exists for.