Skip to main content
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.

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:
examples/one-agent-job.ts
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 says how each one runs a request.

Inner and outer

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