{"slug": "unified-harness-protocol", "title": "Unified Harness Protocol", "summary": "The Unified Harness Protocol (UHP) was published as a draft open standard, version 2026-10-04, defining a universal translation layer between agent harnesses such as Codex, Claude Code and Hermes and the applications that drive them. Released under the Apache-2.0 license, UHP ships with a 13-chapter specification, an OpenAPI 3.1 and JSON Schema 2020-12 machine-readable schema, and a conformance suite of 98 runnable checks, and requires no hosted service, account or licence key. UHP standardizes the harness-to-application interface for skills, tools, models, context, permissions, environments, sessions, files and artifacts, so a client written against the specification works with any server that passes the conformance suite.", "body_md": "# Unified Harness Protocol (UHP)\n\n**An open standard for running complete agent harnesses as shared infrastructure.**\n\nUHP provides a universal translation layer that connects agent harnesses with applications and the modules surrounding each harness, standardizing the harness-to-application interface and unifying how skills, tools, models, context, permissions, environments, sessions, files, and artifacts connect to each harness.\n\nIntegrate once, and UHP-compatible modules, harnesses, and applications can communicate through the same shared contract. Released under the Apache 2.0 license, UHP can be freely implemented, extended, and built upon. **With UHP, agent harnesses and their surrounding modules can become true plug-ins: portable, interchangeable, and reusable across applications through one unified interface.**\n\nA *harness* is a complete agent runtime — a loop that plans, calls tools, edits files, and reports\nback. Codex, Claude Code and Hermes are harnesses. Each one already knows how to do the work; what\nnone of them agree on is how a product should *drive* one: how to start a task, follow its\nprogress, continue the conversation, cancel it, get the files it produced, and understand why it\nfailed.\n\nToday every product answers those questions again, per harness. UHP answers them once.\n\n```\n   your product ──▶ UHP ──▶ ┌── Codex\n                            ├── Claude Code\n                            ├── Hermes\n                            ├── DeepSeek Harness\n                            ├── Gemini CLI\n                            ├── Pi\n                            ├── ...\n                            └── the harness that ships next\n```\n\nUHP is not a model API and does not replace one. Model APIs give you a *turn*: messages in, tokens\nout, tools you have to run yourself. UHP gives you a *task*: work in, and a running agent that uses\nits own tools, keeps its own session, and hands back results and files. The unit of exchange is a\njob, not a completion.\n\n**Specification** The normative contract — 13 versioned chapters.\n\n**Conformance suite** 98 runnable checks; the definition of conformant.\n\n**Implement a client** Discovery, tasks, events, artifacts — over HTTP.\n\n**Implement a server** The operations a server answers behind the contract.\n## Status of this document\n\n| **Current version** | `2026-10-04` | \n| **Status** | Draft standard — stable enough to build on, versioned so it can change safely | \n| **Specification** | [`versions/2026-10-04/`](https://unifiedharnessprotocol.org/spec/2026-10-04) | \n| **Machine-readable** | [`schema/`](https://unifiedharnessprotocol.org/spec/2026-10-04/schema) — OpenAPI 3.1 + JSON Schema 2020-12 | \n| **Conformance suite** | [`conformance/`](https://unifiedharnessprotocol.org/conformance) — runnable, and the definition of \"conformant\" | \n| **Change process** | [`GOVERNANCE.md`](https://unifiedharnessprotocol.org/governance) | \n| **Versioning rules** | [`VERSIONING.md`](https://unifiedharnessprotocol.org/versioning) | \n| **License** | Apache-2.0, same as the repository | \n\n## No hosted service required\n\nUHP is an HTTP contract. A conformant server is any server that answers the requests in this specification with the responses in this specification. It may run agents in containers, in subprocesses, on a queue, or on someone else's infrastructure. Nothing in the wire format requires a hosted service, an account, a licence key, or a call home — a conformant server can run wholly on your own machine, on your own provider keys, storing everything on a volume you own.\n\nA client written against this specification works with any server that passes the conformance\nsuite, whoever built it. The [examples](https://unifiedharnessprotocol.org/examples) page lists the servers and clients\nbuilt against UHP so far. If you find a behaviour the specification does not describe but\nyour client depends on, that is a specification bug — please\n[open an issue](https://github.com/HarnessRouter/harnessrouter/issues).\n\n## What the protocol covers\n\n| Chapter | What it defines | \n|---|---|\n| [Architecture](https://unifiedharnessprotocol.org/spec/2026-10-04/architecture) | Roles, conformance classes, and the object model | \n| [Lifecycle](https://unifiedharnessprotocol.org/spec/2026-10-04/lifecycle) | Version negotiation, capability discovery, task lifecycle | \n| [Harnesses](https://unifiedharnessprotocol.org/spec/2026-10-04/harnesses) | Discovering, selecting and configuring a harness | \n| [Plugins](https://unifiedharnessprotocol.org/spec/2026-10-04/plugins) | Packages of tools and skills, installed into a harness as one unit | \n| [Environments](https://unifiedharnessprotocol.org/spec/2026-10-04/environments) | A project's files and installed dependencies, built once and read-only in every session that names it | \n| [Memories](https://unifiedharnessprotocol.org/spec/2026-10-04/memories) | Memory that outlasts a session: a tree of memories, access per node, records, recall, providers | \n| [Tasks](https://unifiedharnessprotocol.org/spec/2026-10-04/tasks) | Sending work and receiving a result | \n| [Streaming](https://unifiedharnessprotocol.org/spec/2026-10-04/streaming) | Following progress as it happens | \n| [Sessions](https://unifiedharnessprotocol.org/spec/2026-10-04/sessions) | Continuing a conversation, and cancelling one | \n| [Files](https://unifiedharnessprotocol.org/spec/2026-10-04/files) | Sending files in, getting artifacts out | \n| [Errors](https://unifiedharnessprotocol.org/spec/2026-10-04/errors) | Failure taxonomy, retries and idempotency | \n| [Security](https://unifiedharnessprotocol.org/spec/2026-10-04/security) | What an implementer must get right, collected in one place | \n| [Schema](https://unifiedharnessprotocol.org/spec/2026-10-04/schema) | The machine-readable definitions and how to use them | \n\n## Quick shape of it\n\nDiscover what a server can run, run something, and follow it:\n\n```\ncurl -s https://your-uhp-server/v1/harnesses -H \"Authorization: Bearer $KEY\"\n\ncurl -s -N https://your-uhp-server/v1/responses \\\n  -H \"Authorization: Bearer $KEY\" -H \"Content-Type: application/json\" \\\n  -d '{\n        \"input\": \"Summarise README.md in three bullets.\",\n        \"model\": \"claude-sonnet-4.6\",\n        \"metadata\": { \"harness_id\": \"chrn_…\" },\n        \"stream\": true\n      }'\n```\n\nThe stream is Server-Sent Events. The last event carries the finished `response` object, including\nany files the agent produced. To continue the same conversation, send the next request with\n`previous_response_id` set to the id you just received.\n\nFull walk-through: [Tasks](https://unifiedharnessprotocol.org/spec/2026-10-04/tasks).\n\n## Relationship to the OpenAI Responses API\n\nUHP's task surface is deliberately shaped like the OpenAI Responses API, and a conformant server\nMUST accept the subset of that request body described in [Tasks](https://unifiedharnessprotocol.org/spec/2026-10-04/tasks) and\nemit the event vocabulary described in [Streaming](https://unifiedharnessprotocol.org/spec/2026-10-04/streaming).\n\nThis is a compatibility decision, not an accident. Products already have code that speaks Responses;\nexisting SDKs, streaming parsers, and UI components work against a UHP server with no changes. What\nUHP adds is everything a *harness* needs and a model endpoint has no concept of: which harness runs\nthe work, its tools and skills, the session that survives between tasks, the files that come back,\nand the cancellation of work that is already running.\n\nWhere UHP extends the Responses surface it does so in documented, additive places — `metadata`, a\nsmall number of extra request fields, and additional object types — never by changing the meaning\nof an existing field. A client that ignores every UHP extension still gets a working task.\n\n## Implementing UHP\n\n1. Read [Architecture](https://unifiedharnessprotocol.org/spec/2026-10-04/architecture) and pick a conformance class.\n2. Generate types from [`schema/uhp-2026-09-12.openapi.yaml`](https://unifiedharnessprotocol.org/schema/uhp-2026-09-12.openapi.yaml) .\n3. Run the [conformance suite](https://unifiedharnessprotocol.org/conformance) against your server while you build:```\nbash\n   pip install -e protocol/conformance\n   uhp-conformance --base-url https://your-server --api-key \"$KEY\"\n```\n4. Publish your report. A server that passes at a class MAY describe itself as\n   \"UHP 2026-09-12 conformant ()\".\n\nTwo role-specific guides walk through this in order:\n[Implement a client](https://unifiedharnessprotocol.org/connecting) — discovery, task submission, event handling, and\nartifact retrieval — and [Implement a server](https://unifiedharnessprotocol.org/serving) — the operations a server answers\nand how it connects one or more harnesses.\n\n## Contributing\n\nChanges to this specification follow [`GOVERNANCE.md`](https://unifiedharnessprotocol.org/governance). The short version: propose in\nprose first, and no change lands unless the specification, the reference implementation and the\nconformance suite move together.\n\n## Background\n\nFor the story behind the name, the alternatives weighed and why *Unified* won the letters UHP, see\n[Background: the naming of UHP](naming).", "url": "https://wpnews.pro/news/unified-harness-protocol", "canonical_source": "https://unifiedharnessprotocol.org/", "published_at": "2026-10-16 09:21:03+00:00", "updated_at": "2026-10-16 09:39:57.206334+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "developer-tools", "ai-tools", "artificial-intelligence"], "entities": ["Unified Harness Protocol", "Codex", "Claude Code", "Hermes", "DeepSeek Harness", "Gemini CLI", "Pi", "HarnessRouter"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/unified-harness-protocol", "markdown": "https://wpnews.pro/news/unified-harness-protocol.md", "text": "https://wpnews.pro/news/unified-harness-protocol.txt", "jsonld": "https://wpnews.pro/news/unified-harness-protocol.jsonld"}}