HarnessRouter - Bring the world's best AI agents into your app, with one API

Building an AI agent backend yourself takes months: sandboxes, orchestration, retries, cost controls. HarnessRouter runs it for you. One API in, finished work out: code, files, videos, games. Trusted by top medical research institutions, leading healthcare companies, and cutting-edge startups in multiple domains.

Add a comment

Replies

Best

one api across agents is a nice pitch but it also means you're now the single point of failure for every app that plugs in. if HarnessRouter itself has an outage or a rate-limit issue on your end, does traffic fail over to hitting the underlying provider directly, or does the whole integration just go down with you? curious how much of the reliability story is actually in your hands vs still tied to whichever agent is behind the call that day.

 Thank you for your question, this touches some of the deepest core of our product. "One API" does mean you're trusting our uptime, so let me be straight about where the line actually is.

Honest answer to the direct question: no, we don't silently fail a call over to you hitting the provider directly. If our control plane is down, calls through it are down. Pretending otherwise would be the wrong answer. So the real question is how much we've done to make "HarnessRouter is down" rare and non-catastrophic, and where you keep an escape hatch.

What's in our hands:

- Provider/model failover within an agent loop turn. A request walks a chain of connections, if the primary provider errors or rate-limits, it falls back to the next authorized provider/model automatically, and the substitution is recorded in run metadata so it's auditable, not silent. So "the agent behind the call is having a bad day" is largely handled.
- Stateless, horizontally-scaled control plane. The routing layer holds no per-turn state that can't be rebuilt, so it scales out and a bad node doesn't take the fleet.
- Turns survive infrastructure failure. Every turn's events are written to durable storage as they happen, and an in-flight turn is recoverable/resumable if the node running it dies, you get the finished work, not a black hole. (This one we just hardened specifically because it's the scary failure mode.)

What's still shared risk, honestly: a total outage of our edge is a hard dependency, same as any API you build on (your DB, your auth provider, Stripe). We're not magic there.

The escape hatch that should matter to you: we're not a lock-in. In our next minor release, we will support BYOK, and the models are the same frontier models you'd call directly, so if you ever needed to, routing around us is a config change, not a rewrite. That asymmetry is deliberate: the pitch only works if leaving is cheap.

Happy to go deeper on the failover chain or the durability model. You can DM me or contact us at

Congrats on the launch - I've actually been looking for a product like this for months. Glad someone has finally done it. Looking forward to trying it out!

 thank you so much for your support, Shiv! I will DM you on LinkedIn!

  I spent months building agent harnesses myself before I talked with  , so I really understand the pain of building the whole harness layer: sandboxes, permissions, orchestration, cost controls, and more.

That’s why your feeling resonates so much. We’re happy to finally ship the harness layer as a service, so fewer developers have to suffer through building all of it from scratch.

Huge congratulations to the team! The orchestration and sandbox management headache is real, so this feels super timely.

 thank you so much for your support! We'd love to hear more about your use case on orchestration and sandbox management for agents.

 Thanks Jacob! You’re speaking my mind. Orchestration and sandbox management were exactly the headaches, and a big reason I’m so excited we finally built this.

💡 Bright idea

Interesting idea. I imagine this is most useful for building stateless apps / artifacts. Is it also possible to build a stateful app with persistent data? If so, where would that data be stored, and could the app interact with my system’s existing persistence layer?

 Hi Johnny, you read our minds! Yes, persistent data is our next major release. Our ultimate goal is for builders to be able to monetize your product on our platform, so we will expose a managed database layer each generated app can read/write to, no separate DB to stand up, no extra billing account to wire in, it just comes with the app.

Once that's in place, the natural next step is letting you charge your own end users through the same platform (usage or one-time), so the whole loop (build, persist, monetize) happens in one place.

Not shipped yet, but it's the thing we're building toward right now. Would love to hear what shape of persistence you'd actually want (structured DB vs. simple key-value vs. file storage) feeds directly into how we design it.

 One thing I really like about the hunter community is that many builders like you immediately understand where this is heading and where the value will be.

Love the idea of turning Codex and Claude Code into something an app can call through one API. That feels much closer to “AI feature backend” than another chat UI.

 Thanks Rohit, that's exactly the framing we're going for. "Another chat UI" wasn't interesting to us, what agents like Codex and Claude Code can actually do (real files, real code, real tasks) is the valuable part, and that shouldn't be locked inside the two AI monopolists' chat window. Wiring that into whatever product you're already building is the whole point. Appreciate you getting it 🙏

 Sharp! If building an app is like building the car, we’re shipping the engine layer developers can plug into any vehicle.

The agent-session model is what I'd want to understand before building on top of this. When Claude Code or Codex stops mid-task to wait on a tool call or user permission, does HarnessRouter maintain the in-flight state for that run, or does the app need to handle the resume logic itself? Curious how recovery actually looks when a long-running agent crosses a timeout or drops a connection.

 Great question, this is exactly the part that decides whether you can trust it in production, so let me be precise.

State is on us, not you. HarnessRouter maintains the in-flight state for a run, you don't write resume logic. Every run streams its events (reasoning, tool calls, tool results, file writes) to durable storage as they happen, and the run's workspace is checkpointed, so the run has a durable identity you can reconnect to rather than a fragile in-memory session you'd have to babysit.

One correction on the premise: in our model, agents run autonomously inside an isolated per-run sandbox, they don't pause mid-task to ask the app for tool permission. Tool calls (shell, file edits, web, etc.) execute inside that sandbox without round-tripping to your app for approval, so there's no "app must handle the permission handshake" step. The human-in-the-loop gating is the immediately next feature we will launch in next minor release.

Recovery, concretely:
- Connection drop / client disconnect: the run does not get cancelled when your connection drops. It keeps executing server-side; you reconnect and catch up, either by re-subscribing to the live event stream or by reading the run's stored events. Nothing is lost, no resume code on your side.
- Long runs / timeout: each run has a configurable wall-clock cap (with a hard ceiling), so a runaway can't hang forever, and the state up to that point is durable and readable.
- Follow-ups: a next turn resumes the same conversation + workspace by run/session id, independent of which machine handled the previous turn.

So the short version: you build against a durable run you poll or stream, not a live socket you have to keep alive. A dropped browser tab, a redeploy on your side, or a flaky network doesn't lose the work.

Happy to go deeper on the event/replay model if you're designing around it, feel free to DM me or contact us at

   This is exactly the distinction that matters for product builders.

The value is not only that the agent keeps running. It’s that the host app can treat the run as a durable object: start it, stream events, reconnect, inspect history, and continue from the same run/session id.

That means developers don’t have to build their own fragile resume layer around long-running agents. The app can focus on the product design and workflow, while HarnessRouter handles the agent runtime, workspace, event stream, and recovery model underneath.

The durable run identity model makes sense — polling a run id is a much cleaner contract than keeping a WebSocket alive. Curious about the human-in-the-loop gate you mentioned as the next feature: will that surface as an event in the same stream the app already subscribes to, so the approve/reject is just another event the app handles, or does it go through a separate approval channel that requires its own integration?

Exited. Congrats guys

 Thank you for your support Artin!

Congrats on the launch! Running Codex, Claude Code, and Hermes through a single API is a real pain-saver, the agent backend work is usually where teams lose weeks. Quick question: how do you handle sandboxing across different agents? Is each one fully isolated, or do they share context when needed? Curious how that plays out for more complex multi-agent workflows.

Getting "404 This page could not be found." on that url: