> ## Documentation Index
> Fetch the complete documentation index at: https://obversa.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# What Is an Agent Harness?

> The software around a model that turns it into an agent. Claude Code, Codex and their kin are agent harnesses; Obversa runs them as a team.

Point Obversa at an agent harness; you don't write one to use it. An agent
harness is the software around a model that turns it into an agent: the
loop that reads the model's answer and acts on it, the tools it may call,
the memory it keeps between turns, and the guardrails. Claude Code, Codex,
OpenCode and Grok's CLI are agent harnesses. The layer that runs several of
them as a team is the neighbour term, [a meta-harness](/docs/glossary/meta-harness).

## In Obversa

Each harness is an engine, one bounded call to it is one step, and the
step's result is what the workflow reads. Each call starts fresh, so
nothing leaks from one step to the next except what the workflow hands
over. The smallest use binds one engine to one job:

```ts examples/one-agent-job.ts {4,8} theme={null}
import { agentJob, run } from '@obversa/runtime';
import { MockEngine } from '@obversa/runtime/testing';

const engine = new MockEngine(() => 'ready');

const job = agentJob({
  label: 'prepare-item',
  engine: 'offline',
  prompt: 'Prepare the item.',
});

const result = await run(job, {
  engine: 'offline',
  engines: { offline: engine },
});

console.log(result.outcome.status);
```

The engine here is a stand-in from the testing module, so the file runs
offline. In a real team, `engines.claude('claude-sonnet-4-5')` or
`engines.codex('gpt-5.6-luna')` takes its place, and
[Plugins and tools](/docs/packages) says how each one runs a request.

## Inner and outer

| Layer | What it is | Where it lives |
| - | - | - |
| The model | The weights behind an API. | The provider. |
| The agent harness | The loop, tools, memory and guardrails around one model. | Claude Code, Codex, OpenCode, Grok CLI. |
| The workflow | Several harnesses given roles, with reviews that run a step again and a person at the gate. | Obversa. |

The word "harness" names both the inner and the outer layer. Harness
engineering usually means building the inner loop. Obversa is the layer
above it. In a workflow, give each review to a harness running another
model family: `workflow()` refuses a reviewer from the same family as the
writer it reviews.

## Next steps

* [What is a meta-harness?](/docs/glossary/meta-harness): the outer layer.
* [Plugins and tools](/docs/packages): the harnesses Obversa drives.
* [Installation](/docs/get-started/installation): the file above, run for real.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.