Integrating an agent is not just a matter of calling a model: each harness has its own way to start work, preserve a session, stream progress, and return files. HarnessRouter targets that integration burden, so a product can change its configured runtime without building a separate lifecycle layer for every harness. The key distinction is that it routes complete agent tasks—not just model requests—and implements a shared contract for driving them.
What Sets It Apart
- A common task interface: Start work, stream events, continue sessions, cancel runs, and collect artifacts through a shared API. This reduces duplicated integration work as runtimes are added.
- Harnesses remain distinct: Codex, Claude Code, Hermes, and other supported runtimes keep their own tools and behavior. A session continues on the harness that started it, so the interface is unified but the agents are not interchangeable in capability.
- Self-hosting is a real option: Community Edition runs the console, gateway, and runner together, using your provider credentials and keeping session data and files on infrastructure you control. Cloud trades that operational control for managed execution and isolated sandboxes.
- Built around an open contract: The Unified Harness Protocol (UHP) specifies the lifecycle shared by compatible applications and implementations; the API also supports the relevant OpenAI Responses surface, which can ease adoption for existing clients.
Who It’s For—and the Trade-off
A strong fit for teams embedding coding or knowledge-work agents into a product, especially when they want to compare or switch runtimes without maintaining each integration themselves. Self-hosting suits teams willing to operate the service and review the upstream terms of installed harnesses. Look elsewhere if you only need a model API, require identical behavior across harnesses, or want to avoid the extra runtime and security considerations of executing agents with shell and filesystem access.