One record vocabulary
Session lifecycle, tool calls, results, usage and warnings share a common event envelope. Vendor details stay in the adapter.
Read the event protocol →Observe · steer · compare
Keep the agent’s loop. Give your workflow a consistent way to drive it. Metaharness turns harness runs into a common stream of events, with explicit control and evidence of what happened.
Rust · JSON Lines · CLI first, library second
# Inspect the adapter’s declared contract.
$ metaharness capabilities claude
# Exercise the seam, without a model.
$ metaharness conformance claude
# Same interface. A different harness.
$ metaharness conformance codex
01 / The shape of a run
Each harness keeps its own loop and tools. Its adapter translates the documented surface into one protocol your process can read and steer.
Read events.
Send steering commands.
JSONL→ commands inNormalize the record.
Report the control boundary.
Keep the harness’s loop.
Declare what each arm supports.
Claude Code and Codex expose control seams. The b10x adapter observes its loop; it does not claim an approval seam. Understand the differences →
02 / Three commitments
Session lifecycle, tool calls, results, usage and warnings share a common event envelope. Vendor details stay in the adapter.
Read the event protocol →A constructed environment limits ambient inputs. The run’s own record determines which hermetic claims are proven, missing or unknown.
Read the hermetic contract →On a supported seam, decide each call from a sealed frame or ask the embedder. Unsupported controls are refused by name.
Explore the control seam →03 / Choose an adapter
A common protocol does not make every harness equally controllable. Each adapter documents its version pins, observations and remaining limits.
04 / Start with the contract
Begin with the free conformance vectors. Then connect your workflow through events, commands and a sealed frame.
Open the quickstart