> ## Documentation Index
> Fetch the complete documentation index at: https://docs.obversa.ai/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: the loop, the tools, the memory and the guardrails. Claude Code, Codex and their kin are agent harnesses; Obversa drives them as engines.

You do not write an agent harness to use Obversa; you point Obversa at one.
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.

Obversa treats each of those as an engine. One bounded call to an engine is
one step, and the step's result is what the workflow reads. The file below
uses a stand-in engine from the testing module so it runs offline; a real
team names a seat helper such as `claude()` or `codex()` instead:

```ts 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);
```

## 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, returns and a person at the gate. | Obversa.                                |

## Things that catch people out

* **A harness does not review itself well.** A second seat from a different
  provider catches what the first agrees with. The workflow is where that
  second seat is declared.
* **Each call is fresh.** Every engine call runs in a new process, so
  nothing leaks from one step to the next except what the workflow hands
  over. See [engine plugins](/plugins).
* **The name is shared.** Harness engineering, in this crowd, means
  building the inner loop. Obversa is the layer above it. See
  [what is a meta-harness](/glossary/meta-harness).

## Where to go

[Plugins and tools](/plugins) for the harnesses Obversa drives today;
[one agent, one job](/packages/runtime) for the runtime's smallest call.
