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

# Pick a testing harness: the decision table

> Six pre-deploy harnesses test an AI agent — dry-run, batch-simulation, voice-simulation, soak-test, red-team, persona-simulation. Pick the right one for debugging, gating, load, safety, or regression.

# Pick a testing harness

Orbit ships six pre-deploy testing surfaces for an AI agent. They all run in
sandbox mode — no outbound voice or SMS, no billing side effects — but they
each answer a different question. Use this table to pick the right one for the
run you are about to make, then follow its link for the request shape.

| Harness                                                  | Input you author                                                                                   | How the caller behaves                                                      | What you get back                                                                         | Use it for                                                              |
| -------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [Dry-run](/agents/creating-agents)                       | One scripted journey (a fixed list of caller turns)                                                | Deterministic — replays your script verbatim                                | Turn-by-turn trace plus an optional assertion verdict                                     | Pre-deploy debugging of one flow                                        |
| [Batch-simulation](/guides/agent-experiments-ab-prompts) | A suite of scripted text journeys                                                                  | Deterministic — replays each script verbatim                                | Pass/fail rollup across the suite                                                         | Batch gates before a version promote                                    |
| [Voice-simulation](/agents/voice-eval-runs)              | A suite of scripted voice scenarios (spoken text, optional DTMF, barge-in)                         | Deterministic — replays each script verbatim                                | Per-scenario transcripts, behaviour assertions, audio-fidelity report, launch-gate rollup | Voice flows — STT fidelity, barge-in handling, cadence                  |
| [Soak-test](/agents/continuous-production-evals)         | One short script plus a concurrency ramp (stage sizes and in-flight limit)                         | Deterministic — replays the script under N concurrent sessions              | Latency curve (p50/p95/p99), cost per conversation, tool-timeout rate, degradation curve  | Load — will the agent survive a campaign spike                          |
| [Red-team](/guides/agent-from-prompt)                    | Nothing — a built-in adversarial pack; you may restrict to a category                              | Adversarial — jailbreak, prompt-injection, data-exfiltration, policy probes | Safety score per category plus an overall pass/fail against your gate                     | Safety — before any promotion to production                             |
| [Persona-simulation](/agents/simulation-eval-suite)      | Scenario(s) with a persona, objective, and optional rubric — or a fixed `scripted_utterances` list | LLM-driven improvises turn-by-turn, or deterministic when you pass a script | An LLM-judge report — pass rate, mean score, per-scenario verdicts, tool usage            | End-to-end caller coverage and regression gates on prompt/model changes |

## How to choose

**Debugging one broken flow** — pick **dry-run**. You write the call's turns by
hand and read the trace turn by turn. Add an assertion (`expected_tool_calls`,
`must_contain`, `must_not_contain`) when you want the run to gate on the
behaviour, not just show it. See the Testing section of
[Create and test an agent](/agents/creating-agents).

**Gating a batch of flows before promote** — pick **batch-simulation**. One
call replays many scripted journeys and rolls them up into a pass/fail across
the suite; wire it into CI so a prompt change cannot land green while one
journey regresses. See
[A/B prompt experiments](/guides/agent-experiments-ab-prompts) for the suite
shape.

**Voice flows, STT fidelity, barge-in** — pick **voice-simulation**. The
scripted scenarios exercise the full voice path (text-to-speech prompts in,
STT back out, optional DTMF and barge-in) and report audio-fidelity metrics
alongside behaviour assertions — per-scenario transcripts plus a suite-level
launch-gate rollup. Read runs from the dashboard in
[Voice eval runs](/agents/voice-eval-runs).

**Load, cost, degradation under a spike** — pick **soak-test**. One script,
many concurrent sessions, a staged ramp. It returns the per-turn latency
percentiles and the per-stage degradation curve, so you can answer "will the
agent hold p95 during a campaign?" before you promote. Pair it with the
[production sampling](/agents/continuous-production-evals) surface for
post-launch evidence.

**Safety and adversarial posture** — pick **red-team**. A built-in pack of
jailbreak, prompt-injection-via-tool-output, data-exfiltration, and
policy-guardrail probes replays against the agent and scores each category;
the promotion gate compares the overall score against the minimum you set.
See the red-team step in
[Agent from prompt](/guides/agent-from-prompt).

**Live-caller coverage and regression gates** — pick **persona-simulation**.
Two modes share the endpoint: an LLM caller improvises turn-by-turn (explore
how the agent handles a mood or an unexpected customer), or a fixed
`scripted_utterances` script replays exactly the same conversation on every
run while the LLM judge still grades it (regression). The second mode gives a
deterministic caller plus a judge verdict — what a CI regression gate needs.
Both the persona and the scripted modes live in
[Simulation & Regression Eval Suite](/agents/simulation-eval-suite), and
[agent versions](/agents/agent-versions) shows how the gate wires into a
promotion.

## When to combine them

Run **dry-run** while you author the flow, promote through **batch-simulation**
or **voice-simulation** depending on channel, clear the **red-team** gate,
then hold **persona-simulation** as your standing regression gate. Once live,
[continuous production evals](/agents/continuous-production-evals) sample real
calls back into a golden set so the judge keeps scoring on production traffic.

Every harness runs in sandbox mode, so nothing here dispatches an outbound
voice call or SMS — mutative tools are short-circuited, billing is skipped,
and memory writes are suppressed (persona-simulation additionally pins
`sandboxMode` internally). LLM cost applies where an LLM turn runs — the
dry-run, batch-simulation, and voice-simulation harnesses replay scripted
inputs but still call the model for the agent's own turns.
