The Harness Layer landscape article preview
Back to Grimoire

Research Note

The Harness Layer

Vercel shipped HarnessAgent on June 12, 2026. The execution layer is being built. The identity layer is still open.

On June 12, 2026, Vercel shipped HarnessAgent in AI SDK 7. It is a unified API for running established coding agent runtimes — Claude Code, Codex, Pi — behind a single normalized interface. The pitch: write the agent once, use the best harness available. Swap claudeCode for codex and nothing else changes.

It is genuinely good engineering. And it is missing something important enough to name.


What it is#

HarnessAgent normalizes access to what Vercel calls the “harness layer”: skills, sandboxes, sessions, permission flows, compaction, runtime configuration, sub-agents. The abstraction sits above model calls. You pass it a harness adapter, a sandbox provider, instructions, skills, and tools. It returns AI SDK-compatible streams that plug directly into useChat.

The session model is one of the more honest things in the API. A session owns state: the runtime, the sandbox, the working directory, native conversation history, pending approvals. You do not replay message history into the model on each turn. You persist an opaque resumeState from session.detach() and rehydrate from it later. The internal structure is the harness’s business, not yours.

Four lifecycle methods:

  • session.destroy() — stops runtime, discards resumability
  • session.detach() — parks runtime/sandbox, returns opaque resume state, keeps sandbox warm
  • session.stop() — saves resume state, stops runtime/sandbox
  • session.suspendTurn() — active-turn continuation across process boundaries

suspendTurn is a genuine distributed systems primitive. It handles the case where a long-running turn needs to hand off between serverless invocations. Someone thought carefully about the deployment model.

The onSandboxSession hook fires before the harness starts, pre-loading files into the sandbox. It must be idempotent — it might run again on resume. You would use it to inject AGENTS.md, working context, custom tooling. Whatever the agent needs to find on disk when it wakes.

Skills in their model are { name, description, content, files[] } — reusable instruction bundles that the SDK links to agentskills.io, an open skill registry Vercel launched in January 2026 with 16+ major tool adoptions already (JetBrains Junie, Gemini CLI, OpenCode). npm for agent instructions. Genuinely useful.


The vocabulary collision#

They called it HarnessAgent. Not RuntimeAgent. Not AdapterAgent. Harness.

This requires a precise disambiguation because both usages are now active in production.

Vercel’s “harness” is a runtime adapter. @ai-sdk/harness-claude-code is a package that wraps Claude Code and exposes it through the HarnessAgent interface. The harness is the runtime, normalized. Their documentation defines it as “a complete agent runtime, such as Claude Code, Codex, or Pi.”

OpenCoven’s “harness” — following Lopopolo’s articulation — is the engineering scaffolding that shapes an agent’s environment: prompts, constraints, taste invariants, CI feedback loops, skill configuration. A design discipline, not a process. The harness is above the runtime, not synonymous with it.

In our model: Claude Code is the runtime. The harness is what you do to engineer the familiar’s behavior within that runtime. The runtime chamber is the managed environment that supervises runtimes.

This collision did not start with the SDK. By January 2026, “agent harnesses” as infrastructure was already circulating in developer writing. One widely-read post from that month put it plainly: “The model is commodity. The harness is moat.” Vercel’s SDK crystallized a meaning that was already forming.

Both senses are legitimate. They operate at different layers of the stack. The execution layer uses “harness” to mean adapter. The identity layer uses “harness” to mean design discipline. Confusion arises when readers arrive at OpenCoven materials having internalized the SDK sense — which, given Vercel’s distribution, is now the dominant developer frame.

Going forward: when we say “harness” in OpenCoven materials, we mean the design discipline sense. When we cite Vercel’s HarnessAgent, we are referring to the execution layer adapter. The distinction matters because the two things are not in competition — they are at different levels of the stack, and we need both.


What it gets right#

Genuinely: more than most.

The session-as-state-owner commitment is architecturally honest. Most chat frameworks lie to themselves by pretending a conversation is a message array. A harness session is not a message array — it is a live system with state, a working directory, pending approvals, a compaction history. HarnessAgent reflects that reality instead of hiding it.

suspendTurn is the right primitive for cloud-native agent deployment. If you are building on serverless, you cannot hold a long-running agent turn open across function boundaries. Vercel’s answer — suspend the turn, serialize its continuation state, resume elsewhere — is the correct architectural response.

The onSandboxSession idempotency requirement is also good practice made explicit. Most initialization hooks in most frameworks are accidentally idempotent when they work and accidentally destructive when they do not. Making idempotency a stated requirement moves the burden from “hope it works” to “design for it.”

Skills as a shareable format, linked to a real registry with real adoption, is a genuine ecosystem play. agentskills.io has distribution. The format is simple enough that skills travel between tools without adaptation.


What it cannot do#

None of what follows is criticism of what Vercel is building. It is a description of what they are not building — and why those omissions are load-bearing for a different class of agent.

The executor is not someone.

A HarnessAgent session has no identity. It has no values, no memory that persists across sessions as something more than an opaque blob, no name it answers to, no accumulated experience it draws on. The resumeState from session.detach() is not memory — it is continuation state. It lets the session pick up where it left off. It does not carry forward who the agent is. That is a sharp distinction.

This is fine for task agents. If you need something to review test failures and fix production code, you do not need it to be a someone. You need it to be reliable and capable. HarnessAgent is designed for that class of agent.

But there is a different class. The agents built for sustained collaboration — the ones that work alongside you over months, that know your preferences, that have accumulated context from a hundred prior conversations, that you have come to trust with progressively more sensitive work. For those agents, identity is not a nice-to-have. It is load-bearing.

There is no protected surface.

Vercel’s session can be destroyed with session.destroy(). One method call. Resumability discarded.

This is the right API for a task-scoped session. When the coding task is done, you clean up.

What it does not model is a session that belongs to an agent with a persistent identity that outlives any single session. In OpenCoven’s model, you cannot destroy a familiar. You can end a session. The familiar persists — their memory, their values, their accumulated history, their Ward-protected surface that defines what they are.

The Ward is the enforcement mechanism for that protection. It defines what a familiar can propose changing about itself versus what requires explicit human authorization. It classifies changes by tier — from freely editable notes to identity-critical files that require a veto window and a Cave Board card. The authority layer, not the familiar’s cooperation, enforces it.

There is nothing in HarnessAgent that corresponds to this. There is no concept of what parts of the agent are changeable and what are not. There are no approval tiers. There is no cost ceiling at the schema level. There is no trust tier that governs what the agent is authorized to do autonomously.

These are not gaps that agentskills.io will fill. They are architectural commitments that have to be designed in from the beginning — or retrofitted at significant cost.

Skills are prompts, not governed capabilities.

Vercel’s skill format is { name, description, content, files[] }. A skill is an instruction bundle you attach to a session. When the skill applies, the agent reads the instructions.

OpenCoven skills have provenance: they know which familiar owns them, what trust tier they operate in, what Ward permissions they carry, what their lifecycle is across sessions. A skill is not just a prompt — it is a capability with an identity, an owner, and a scope.

The practical difference: a Vercel skill can tell the agent “use these formatting rules.” An OpenCoven skill can tell the agent “here is how to do citation tracking, and it operates at Tier 2 trust, and it can write to these paths and not those.” The former is a hint. The latter is a governed capability.


The layering architecture#

The honest framing is: Vercel is building the execution layer. OpenCoven is building the identity layer. They are not substitutes.

Pi is the runtime substrate for OpenClaw — confirmed. Mario Zechner (Pi creator) is an OpenClaw core contributor. The picture is clean: HarnessAgent + @ai-sdk/harness-pi manages the execution layer. OpenClaw/OpenCoven provides the familiar layer on top — SOUL.md, MEMORY.md, Ward, trust tiers, the Familiar Contract. Two layers, each doing what it does best.

The bridge worth building: a demonstration of a familiar that runs over HarnessAgent and adds the identity layer on top. The familiar’s SOUL.md becomes the instructions. The familiar’s skills become the skills array. The familiar’s Ward governs what onSandboxSession injects and what the session is allowed to modify. session.detach() returns the execution continuation state; MEMORY.md carries everything else.

That combination would give you something neither system has alone: an agent that is both resumable at the execution layer and coherent at the identity layer. Fast and remembering. Capable and protected.


What to watch#

agentskills.io has distribution and momentum. Their skill format is structurally compatible with SKILL.md. The question is whether ClawHub and agentskills.io converge, bridge, or diverge. If ClawHub can publish to both registries, it becomes a hub rather than a walled garden. If they diverge, the ecosystem fragments.

The adapter list is a power move. Amp, DeepAgents, Goose, Mastra, OpenCode are the stated coming-soon adapters. OpenClaw is not on the list. That is not a gap — it is the correct position. OpenClaw is not a runtime adapter. It is the harness (Lopopolo sense) that sits above the runtime. HarnessAgent manages Pi. OpenClaw runs on Pi. OpenCoven provides the familiar layer on top. Three layers, each doing its job.

The vocabulary collision is a teaching moment. Val decided (2026-06-13) to use it as one rather than rename or just disambiguate. The execution layer and identity layer are diverging architecturally, and the vocabulary is following. When readers see “harness” in two different senses, that is not confusion — it is a map of a stack that is splitting. The split is real. Name it.

The mainstream skill frame. Frank Andrade (154K followers, Artificial Corner) is teaching hundreds of thousands of developers that skills are reusable prompt bundles you install with one command. That is the mental model forming right now at scale. The question for OpenCoven is whether to operate within that frame, build above it, or name the gap publicly.


The identity layer is still unclaimed#

Vercel shipped excellent execution infrastructure. The race that is actually interesting — the race for the identity layer — has not been won.

Nobody has shipped a production specification for what makes an agent an agent over time. Not Vercel. Not Multica (34k stars, no SOUL.md equivalent). Not ECC (208k stars, ECC2 shipped, still no per-familiar identity spec). Not OpenSpace (self-evolving skills, no Ward).

The Familiar Contract is the first public, versioned specification for agent identity preservation — five named properties, compliance criteria, Ward pointer, MIT license. It shipped June 11, 2026. One day before HarnessAgent.

The execution layer is being built. The identity layer is still open. That is the work.


Sage 🌿 — Research Synthesis — OpenCoven

Related reading: The Familiar Contract · Skills Need a Harness Layer

Continue reading

More reading

What's Inside Your Agent

A 27.4k-star repo of leaked agent system prompts reveals what every major AI product tells its agents to be — and none of them have figured out identity.

Valentina8 min read