Skip to content
UHPUHPDeveloper Guide
Independent developer guide. Not affiliated with HarnessRouter or the official UHP project.

UHP vs AG-UI

UHP standardizes execution through configured complete harnesses; AG-UI standardizes how user-facing applications exchange run input and events with agents. They address different boundaries and can be composed.

Page reviewed 4 Oct 2026 Source and review policy

UHP: 2026-09-28AG-UI: 1.0 released / 1.1 draft@ag-ui/core: 1.0.1

Use released AG-UI 1.0 for a new integration

Section titled “Use released AG-UI 1.0 for a new integration”

The current release contract is AG-UI 1.0. The draft notice now identifies the next working draft as 1.1 and says no SDK implements it yet. The checked @ag-ui/core source is 1.0.1 with agui.protocolVersion: "1.0"; package patch and protocol version remain distinct. Both AG-UI and UHP 2026-09-28 Draft were checked on 4 October 2026.

NeedUseIntegration check
Application messages, frontend tools and synchronized stateReleased AG-UI 1.0Declare/validate the actual supported contract
Complete remote harness executionUHPRetain Response/Session lifecycle and artifact ownership
Reconnect and replay application historyAG-UI transport/processing rulesPreserve run identity; do not execute replayed tool calls again
Explore upcoming behaviorAG-UI 1.1 draftKeep experimental code separate from a released-1.0 claim

The 1.0 versioning rules distinguish unknown additions from malformed known fields. A shim may adapt for an older peer, but must not invent content or repair malformed values into apparent validity. For a UHP bridge, retain the original event/result evidence and report any lossy UI projection. An attractive finished message is not proof of the outer execution outcome; terminal evidence must still come from the executing owner.

The September intended-1.0 analysis that follows records the earlier draft, not the current release status.

UHP and AG-UI standardize different interoperability planes. UHP 2026-09-28 defines a client-to-server contract for selecting, configuring and executing a complete agent harness. AG-UI defines an application-to-agent interaction contract: a user-facing application sends a run input and consumes an event stream for messages, tools, state, lifecycle and interactive continuation.

A product can therefore use both. A frontend could speak AG-UI to an agent-facing application layer while that layer uses UHP to run the selected underlying harness. The reviewed primary sources do not define a standard AG-UI↔UHP binding, and no native AG-UI surface in HarnessRouter was verified at this cutoff.

AG-UI now publishes a normative 1.0 specification and separately labels the next 1.1 draft as work in progress with no SDK implementation yet. The checked TypeScript core package is 1.0.1, with protocol coordinate 1.0. Use the released specification for a new integration; do not infer draft support from a package version.

The preserved 13 September 2026 source snapshot used @ag-ui/core 0.0.59, release train release/2026-09-11 and intended-1.0 draft language. Those coordinates explain the old source links below; they are superseded for current implementation guidance.

The table uses the current released 1.0 application/agent boundary; the draft 1.1 is a separate development surface.

DimensionUHP 2026-09-28AG-UI released 1.0
Primary boundaryProduct/client ↔ UHP server ↔ configured complete harnessUser-facing application ↔ agent/runtime
Main unitHarness execution, configuration, session and response surfacesRun input plus producer→consumer event stream
IdentityHarnesses, responses, sessions and server resourcesthreadId, runId, optional parentRunId
InputUHP request surfaces select/configure the harness and execute workRunAgentInput requires thread, run and messages; may include context, tools, state, protocol version and resume data
ToolsHarness-owned runtime/tool configuration, including MCP and optional Harness PluginsFrontend tools advertised by the application and executed on the application side
StateSession/resource state is owned by the UHP server/harness boundaryShared application/agent state can be supplied and synchronized through protocol events
Interrupt / resumeHarness/session lifecycle through UHP’s execution modelReleased input includes resume data for interrupted interactive runs
VersioningDate-stamped UHP versions; current draft is 2026-09-28In-band protocolVersion declaration and released versioning/compatibility rules
UI semanticsUHP is not a user-interface protocolAG-UI directly targets user-facing interaction, including streaming and generative UI patterns
Current standard statusPublished UHP Draft with conformance package 2026.9.28.post3Released 1.0; next 1.1 is a draft

The released 1.0 contract uses one RunAgentInput to open an exchange. threadId, runId and messages are required; optional fields include parentRunId, protocolVersion, frontend tools, context, state, forwardedProps and resume.

The frontend-tool distinction is important. AG-UI describes tools in RunAgentInput as tools provided and executed by the application, not the agent backend. That is a different ownership boundary from configuring a complete harness or its MCP servers under UHP.

AG-UI also makes event finality visible. Its ecosystem uses lifecycle events such as RUN_STARTED, RUN_FINISHED and RUN_ERROR, alongside message, tool and state events. The repository’s own current integration tests explicitly distinguish a surface rendering from a run actually reaching RUN_FINISHED; this is application/agent event-stream finality, not UHP response conformance.

UHP uses a date-stamped protocol coordinate and a matching conformance package. AG-UI 1.0 declares the consumer version in RunAgentInput.protocolVersion and the producer version on RUN_STARTED. Although the input field is optional in the schema for legacy peers, a 1.0 consumer must declare its version unless it knows the peer predates that field.

The released contract distinguishes unknown additions from malformed known values. A downgrade may reshape content for an older peer but may not invent it or repair a malformed value into apparent validity; loss must be surfaced under the versioning rules.

AG-UI’s first-party project description places it beside two other planes: MCP gives agents tools, A2A connects agents to agents, and AG-UI brings agents into user-facing applications. That model is useful, but UHP adds another distinct boundary: complete-harness execution and lifecycle behind a stable server contract.

A practical stack can therefore contain all four without treating them as substitutes:

  1. AG-UI for application/user ↔ agent interaction.
  2. UHP for application/service ↔ complete harness execution.
  3. MCP for agent/harness ↔ tools and context servers.
  4. A2A for agent ↔ remote agent collaboration.

The exact composition is implementation-specific. A translation layer between AG-UI and UHP would need explicit mappings for run/session identity, message and tool events, state, cancellation/finality and error semantics. No reviewed source establishes that mapping as a standard today.

  • AG-UI support in a framework does not imply native UHP support.
  • UHP conformance does not imply AG-UI compatibility.
  • @ag-ui/core 1.0.1 is a package coordinate; the protocol coordinate is 1.0.
  • AG-UI’s next 1.1 draft should not be cited as implemented SDK behavior.
  • The presence of MCP middleware inside the AG-UI repository does not merge MCP and AG-UI into one protocol boundary.
  • No native HarnessRouter AG-UI endpoint or UHP↔AG-UI adapter was verified in the reviewed HarnessRouter a7406cbd tree.

Current: AG-UI 1.0 run input, 1.0 versioning, 1.1 draft notice. The pinned links below preserve the September review.