Independent resource · Not affiliated with HarnessRouter · Site data checked 21 Aug 2026
Comparison

UHP vs model APIs

A direct model API is a model-level turn interface. UHP is an execution contract around a complete agent harness. This page separates the two and explains the current relationship between UHP's task surface and the OpenAI Responses-compatible shape.

Verified: Protocol: 2026-08-11Static HTML/CSS
Scope and ownership: UHP does not replace a model API. A UHP server drives a harness, and that harness typically still calls a model provider to generate tokens — UHP standardizes the layer around the agent runtime. The task surface is shaped for OpenAI Responses compatibility so existing SDKs can be reused, but OpenAI owns the Responses API and has not endorsed, adopted, or participated in UHP. Compatibility of interface shape is not protocol ownership or native adoption.

Two layers, not one

┌──────────┐    UHP / HTTP    ┌──────────┐   internal mechanism   ┌──────────┐
│  Client  │ ───────────────▶ │  Server  │ ─────────────────────▶ │ Harness  │ ──▶ model API
└──────────┘                  └──────────┘                        └──────────┘

A direct model API is the rightmost arrow: it generates tokens for one turn. UHP is the contract that wraps everything to its left — a client asks a server to run a complete harness, and the harness itself still calls a model provider underneath. UHP standardizes the layer around the agent runtime; it does not replace the model API.

Direct model APIs (the inference interface)

A model API lets you call a model provider directly: you send one turn (or a short conversation window) and get back generated tokens. The request shape, sampling parameters and streaming format are defined by the provider.

  • What you address: a model and the tools that model can call.
  • Parameters: provider-defined — for example model, temperature, top_p, max_output_tokens, tools, instructions, and a provider-specific conversation handle such as previous_response_id.
  • What you get: token generation, tool/function calling, multimodal input and structured output — at the model level.
  • What you don't get: a standard way to run an agent loop, manage a working directory or files, choose among multiple harnesses, track a long-running task lifecycle, cancel work, or verify behavior across implementations. Each provider solves — or omits — these differently.

The OpenAI Responses API (POST /responses) is the concrete shape UHP reuses for its task surface; other model providers expose analogous turn-level interfaces.

UHP (the harness execution contract)

In UHP's three-role model, the client speaks only UHP, the server implements the spec and drives the harness, and harness execution (containers, subprocess, queues, workers) is implementation-defined and out of scope for the client. On top of the underlying inference call, UHP adds:

  • Harness selection and configurationmetadata.harness_id and harness-scoped config let one client request target Codex, Claude Code, Hermes, Pi, DeepSeek Harness, or others, without the client knowing which harness runs.
  • Agent task lifecycle — submit, poll or stream, cancel, retrieve and list, with explicit terminal events and status codes.
  • Sessions and workspaces — cross-harness continuity with a working directory, files and downloadable artifacts.
  • Capability discoveryGET /v1/uhp lets clients adapt to advertised features and protocol version.
  • Uniform behavior — a single error envelope with closed codes and retry rules, a sequence-numbered event stream, idempotency, date-based versioning, and a conformance suite so behavior is verifiable across servers.

Architectural comparison

DimensionDirect model APIUHP
Addressable unitA model and its toolsA configured harness and a task
Calling conventionProvider-defined endpoint and fieldsPOST /v1/responses (Responses-compatible) plus UHP lifecycle endpoints
Model selectionProvider-native model idCanonical model id resolved by the server to a concrete provider model
Agent loop / harnessNot specified; provider-specificHarness selected via metadata; the loop is harness-internal
Tool and function semanticsProvider-defined, per the model serviceHarness-defined tools and MCP, surfaced through UHP events
Session continuityProvider-specific handle (for example previous_response_id)Cross-harness sessions with working directory and files
Progress and cancellationProvider streaming; cancellation variesUHP SSE with sequence_number, defined terminal events, documented cancellation
Files and artifactsProvider file store or sandboxSession workspace, artifacts and download
ErrorsProvider error modelSingle envelope, closed codes, retry rules
Discovery, versioning, conformanceProvider-specific; no cross-implementation standardGET /v1/uhp, date versioning, conformance suite

The Responses-compatible task surface

UHP's task surface is deliberately Responses-compatible. The request and response shapes — input and output items (input_text, input_file, input_image, message, reasoning, function_call), previous_response_id, instructions, tools, store and stream — follow the OpenAI Responses API, so a Responses SDK can be pointed at a UHP server with minimal change.

The extension point is metadata.harness_id plus harness-scoped configuration: that is how a compatible request selects which harness runs. Compatibility is a matter of interface shape only, and it is important to keep three boundaries straight:

  • OpenAI owns the Responses API and has not endorsed, adopted, or participated in UHP.
  • A compatible shape does not imply native UHP adoption by OpenAI.
  • A UHP server does not require OpenAI models or OpenAI infrastructure. The same request runs against any configured harness.

What UHP does not require

  • Not OpenAI models, not OpenAI infrastructure, and not the OpenAI SDK — though a Responses SDK can be reused for the task surface.
  • Not a specific harness; the server chooses how execution happens.
  • Not any change to how a harness calls its underlying model provider.

Primary sources

  • UHP architecture — Client, Server, Harness roles and the server's responsibility for harness execution.
  • UHP Tasks — the Responses-compatible task surface and metadata.harness_id as the harness selection point.
  • OpenAI Responses API documentation — the request and response shape UHP reuses.
  • HarnessRouter README — the harness bases a UHP server can drive.