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
Where have you personally seen the abstraction leak the most when running complex, non coding agent workflows like BI/spreadsheet creation?

 Great question! The task API held up well, start, stream, cancel, files. Where the abstraction leaks in non coding workflows is everywhere the harness touches the outside world, and those failures are silent, they look like the model being dumb. Skills are a good example: for slides or BI, the agent's format knowledge lives in a folder of scripts and references, and if any part of that surface degrades, nothing errors. The agent just quietly gets worse at its job. Same with tools: a dropped tool connection reads as "I can't access that," which looks exactly like a refusal. And long running spreadsheet or dashboard tasks stream for minutes, so anything that buffers the stream makes working look identical to frozen. The pattern we internalized: coding agents fail loudly (the test fails), non coding agents fail politely. That's why the conformance suite runs real agent tasks and even measures streaming behavior, instead of just checking schemas.

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!