LIFEHUBBER
Choose theme

AI Resources

HarnessRouter

GitHub stars: 4.1K GitHub forks: 445 Declared license: Apache-2.0: Apache-2.0 Last pushed November 4, 2026: Pushed today
Stats from GitHub

HarnessRouter Community Edition lets an application send work to different agent harnesses through one API, then follow progress and retrieve the results and files.

A harness is the runtime around a model: it runs the agent loop and tools that do the work. HarnessRouter connects products to runtimes such as Codex, Claude Code and Hermes, with a self-hosted Console for configuring and following tasks. Use this as a first read, not a recommendation. Open the original project before trusting details like terms, limits, privacy, cost, setup, or safety.

What it is

One interface for running agent tasks

The API covers task execution, persistent sessions, streaming, input files, generated outputs, cancellation and structured failures. Its Unified Harness Protocol, or UHP, defines the shared contract between the application and supported harnesses.

Why it stands out

Change the agent behind the integration

An application can select a harness through the request metadata while keeping the same task interface. The harness still supplies its own execution behavior; a common API does not make every harness and model combination equally capable.

Availability

Self-host with Docker and your provider keys

Community Edition includes the Console, Gateway and Runner in one Docker deployment and declares Apache-2.0. The quickstart needs Docker, disk space and a model-provider API key, without a HarnessRouter account. Managed HarnessRouter Cloud is a separate deployment choice.

Why it matters

What makes it useful

A product that asks an agent to prepare a document or change code needs more than a final message. It needs to show progress, accept files, keep a conversation going and return what the agent made. HarnessRouter exposes those operations through a shared API. A follow-up can use previous_response_id to continue the session, so an app can ask for a revision in the existing work context instead of treating every request as a fresh job.

Notable points

What stands out

The common task interface leaves room for differences underneath. The project publishes a support matrix that records first turns, follow-ups, model switches, produced files and recovery after a sandbox is recycled for particular harness/provider/model combinations. Some scenarios fail or are not run. That makes the exact combination relevant when choosing a backend; a harness name appearing in the project is not evidence that every provider path supports the same workflow.

Before using

What to review

The Docker setup downloads and installs enabled harness CLIs on first launch. Community Edition does not bundle a model or trial key; model access, provider charges and supported combinations depend on your connections.

Self-hosted sessions use separate workspaces and operating-system users inside one container, rather than a separate container for each session. The entrypoint and Runner retain root privileges to manage those users. Agents can run shell commands and use the tools and credentials supplied to them.

The security policy says to keep the instance off public networks until a password is set and TLS is in front of it. The Console can run tasks and read transcripts; its deployment boundary matters as well as the agent workspace.

The v0.38.0 release changes remote MCP credential handling: the server keeps the remote address and credentials while a session receives a local relay and a token limited to the turn. Its release notes say older sessions, checkpoints and Git history retain existing credential copies, and recommend rotating MCP tokens if an agent you do not fully trust has run on that instance.

The same release adds a generated encryption key when HR_SECRET_KEY is absent. The notes explain that keeping this key beside the data protects a copy of the secret store, not a copy of the whole volume, and describe how to keep the existing key separately. The setup guide also says an agent can use what it receives during a turn; stdio MCP values and harness environment variables remain readable to it.

Reader fit

Who may find it relevant

Developers adding agent work to an application and wanting task progress, follow-ups and file outputs through a common integration.

Teams comparing supported harness/provider combinations on their own work while operating the Community Edition deployment themselves.

Less suitable for someone seeking a ready-to-use personal assistant with no deployment or provider setup, or identical behavior across every backend.

Editorial note

Why LifeHubber lists it

We list HarnessRouter because its shared interface accounts for the practical problem of retrying agent work. Its documented Idempotency-Key behavior returns the existing result when the same request is retried with the same key, rather than starting another execution. For a product that asks an agent to create files or run commands, a delayed response should not make a request retry into a second job. This connects the common API to a concrete integration need: distinguishing a retry of work already accepted from an instruction to do new work.

Source links

Source materials

Reader note

Before relying on this entry

LifeHubber lists entries to help readers inspect AI projects, not to endorse them or prove they are safe, suitable, accurate, maintained, or right for a specific use. We do not verify every entry in depth. Before relying on anything listed, review the original materials, terms, privacy practices, limits, and risks that matter for your situation.

Advertisements

Advertisements

For project maintainers

Listed here? You can use the badge.

If you maintain a project with a current LifeHubber listing, you may add the optional “Listed on LifeHubber AI Resources” badge to its README, docs, or website. No introduction or permission request is needed.

See what’s moving