What you’ll learn
- Which fields an agent record holds, and which of them XORCISE actually reads.
- What the harness field selects, and which three harnesses ship.
- What updating, renaming, and deleting an agent do to the runs already attached to it.
What an agent record holds
Only the name is required. Everything else refines how the agent is recorded, or how its telemetry is handled once it starts working.
XORCISE sets three more fields itself: an internal id that survives renames, a version that starts at
1, and the time the agent was registered.
Choosing a harness
A harness is the tool that drives your model and does the work — OpenHands, the Claude Code CLI, the Codex CLI, or something you wrote yourself. The harness you record is not cosmetic and it does not only affect presentation. That single value selects three things at once:- The replay adapter — the code that turns your harness’s OpenTelemetry into the timeline, the terrain map, and the trace feed. A harness-specific adapter recovers real tool input and output; the generic one recovers span names and a best guess at a body.
- The telemetry provider — which environment variables the run’s launch profile hands you, and whether the run id travels as an OpenTelemetry resource attribute or falls back to a marker in the connect prompt.
- The launch provider — the ready-made command on the live run page that starts the harness with this run’s prompt and telemetry already wired in.
Pick one of the three when it matches what you actually run. Otherwise pick
generic, which is also what an agent gets when you leave its harness out. Every agent has a harness, and generic is a supported configuration, not a broken one. The generic adapter still produces a usable timeline from ordinary spans, and it also covers an agent that emits no telemetry at all. It is verified against no harness, though, so the web UI says so when you pick it or leave the harness blank: runs replay with it as a best effort, and the span-support panel shows each kind of span as unknown, with an amber question mark, until you look at a run.
Those four are the complete list. Any other value is your own label. XORCISE saves it, and warns you that no harness answers to it, naming the closest real harness when one is near. The CLI asks you to confirm before it saves. The web UI shows the warning before you save and again once the agent is saved, and the API returns it with the saved agent. A run of such an agent replays with the generic adapter unless its trace identifies a harness by itself.
The CLI prints friendly labels for a handful of other slugs, so an agent registered with --kind gemini shows as Gemini CLI in xorcise agent list. Nothing is behind those labels — no adapter, no telemetry provider, no launch command — and such an agent replays through generic exactly as a generic one does. Do not read the label as support. Any other label is title-cased in the CLI, so my-agent-cli prints as My Agent Cli, and the web UI shows it as you typed it.
An agent that an earlier release saved with no harness, or a blank one, reads generic once you run xorcise db upgrade. Its runs are not rewritten: each keeps the harness it was created with.
Holding the harness still is what makes several agents comparable. The experimental playbook benchmark pins every contestant to
openhands for exactly that reason: with the scaffold fixed, the difference between two results is the model.Running without telemetry
An agent that emits nothing still runs and still scores. Deterministic checks read the artifacts your agent submitted and the facts XORCISE observed about the run itself, so they are untouched. The judge still runs, on a prompt that says plainly that no trace exists, and any criterion it cannot evidence is left unscored: it counts as zero in the score, and the result carries an upper bound that grants that weight. What you lose is the replay — an empty timeline, terrain map, and trace feed — not the grade. How grading works has the arithmetic.Agent versions and history
Every change to an agent bumps its version, and every result records the version the agent was on when that run was created. A score therefore always names the exact declaration that produced it, which is what makes a series of runs comparable over time. Renaming is safe. The record keeps its internal id, so the runs, results, and version history all stay attached to the new name.
The Agents page. Each row is a record, not a process — the harness column is what decides how that agent's telemetry is replayed.
Register an agent
Both interfaces create the same record, at version1, immediately selectable when you create a run.
- CLI
- Web UI
--name is required. --kind, --model, --endpoint, and --otel are all optional, and every flag is listed in the CLI reference. Leaving out --kind saves generic.Manage agents
List what is registered, change a declaration, review a track record, or remove an agent entirely.- CLI
- Web UI
update changes only the fields you pass and bumps the version; passing no field at all is refused rather than silently versioning the record.--force (Delete anyway in the web UI), which accepts that those containers or tailnet nodes may be left running.
Next steps
Missions
The other half of every run — what a mission contains, and where missions come from.