Skip to content

Science1 publisher3 min readPublished

UHP turns the choice of agent harness into a field in the request

The Unified Harness Protocol specifies how an application starts a task on an agent runtime, follows it, cancels it and collects the files, borrowing the shape of OpenAI's Responses API so existing streaming clients need no changes.

The Scientist · Science desk

Illustration accompanying UHP turns the choice of agent harness into a field in the request

What happened

  • The Unified Harness Protocol has been published under the Apache 2.0 license, free for anyone to implement, extend or build on as shared infrastructure for running agent harnesses.
  • The specification defines a harness as a complete agent runtime that plans, calls tools, edits files and reports back. It names Codex, Claude Code and Hermes as examples.
  • Work streams back as Server-Sent Events whose final event carries the finished response object and any files the agent produced. The next request continues the session using previous_response_id.
  • Nothing in the wire format requires a hosted service, an account, a licence key or a call home, so a conformant server can run on your own machine with your own provider keys.

Compiled by The ScientistSomething wrong?How this is made

Why it matters

  • decision A team supporting a second harness now chooses between writing another bespoke adapter and implementing one contract. The saving only arrives on that second integration.
  • constraint Portability stops at the driving surface, so evaluation stays a per-harness job: the same request handed to two harnesses is not the same work.
  • capability Harness selection can be exposed as a setting inside a product, including for harnesses that did not exist when the product shipped.
  • precedent Because implementers pick a conformance class, "UHP-compatible" will describe several levels of support. A buyer has to ask which class a server passed.

The discovery call is a GET to /v1/harnesses. The work goes to /v1/responses as a single POST carrying the prompt, the model name "claude-sonnet-4.6" and a harness_id inside metadata [14]. The model and the runtime that drives it are fields in the same body [20].

By the specification's own account, products have been answering the driving questions once per harness, and UHP answers them once [5]. The document sets out where the disagreement sits. "Each one already knows how to do the work; what none of them agree on is how a product should drive one: how to start a task, follow its progress, continue the conversation, cancel it, get the files it produced, and understand why it failed," the specification says [4].

That list is the difference between the two kinds of endpoint. A model API gives you a turn: messages in, tokens out, tools you have to run yourself [6]. A UHP server gives you a task, run by an agent that uses its own tools, keeps its own session and hands back results and files [6]. "The unit of exchange is a job, not a completion," the document says [7].

UHP's task surface is deliberately shaped like the OpenAI Responses API, and a conformant server must accept the subset of that request body described in the Tasks section and emit the streaming event vocabulary [11]. The document says existing SDKs, streaming parsers and UI components work against a UHP server with no changes [12]. Extensions are confined to additive places: metadata, a small number of extra request fields, new object types, and never a change to the meaning of an existing field, so a client that ignores every extension still gets a working task [13].

What the client gets back is narrower than the diagram suggests. The specification defines portability by the conformance suite, and a client written against the spec works with any server that passes it, whoever built that server [10]. The fan-out diagram names six harnesses (Codex, Claude Code, Hermes, DeepSeek Harness, Gemini CLI and Pi) and leaves a slot for the harness that ships next [16][19]. Under one wire format, those six still run a request differently. The spec's own sentence grants that each harness already knows how to run a task [4]; what UHP standardizes is how an application drives one [1]. A team that swaps harnesses behind an unchanged endpoint still has to re-run its own evaluations.

Anyone implementing the server side is told to read the architecture document and pick a conformance class, generate types from schema/uhp-2026-09-12.openapi.yaml, and run the conformance suite [17]. The count of servers and clients built against the specification so far sits on a separate examples page [10].

What to watch

  • Whether harness vendors publish first-party UHP endpoints or third parties wrap them. The examples page carries the count of servers and clients built so far.
  • Published conformance-suite results, by conformance class, for servers claiming UHP compatibility.
  • Whether a successor to the 2026-09-12 schema keeps the rule against changing the meaning of an existing field.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories