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 section for the request shape.Dry-run
Use dry-run for pre-deploy debugging of one flow. You write the caller turns by hand and read the trace turn by turn. Add assertions (expected_tool_calls,
must_contain, must_not_contain) when you want the run to gate on behaviour,
not just show it.
Surface
- API:
POST /api/v1/agents/:id/dry-run - Dashboard: Agents → your agent → Testing → Dry run
Request example
Response envelope
Limits
- Maximum turns per scenario: 20
- Per-turn timeout: 30 seconds
- Assertion arrays cap at 20 entries each
Cost and token implications
Dry-run replays scripted caller turns, but the agent still calls the model for every assistant turn. Tool calls are mocked in sandbox mode, so you pay for LLM tokens only — no provider egress, no billing events.Batch-simulation
Use batch-simulation for gating a batch of text flows before promotion. One call replays many scripted journeys and rolls them up into a pass/fail across the suite.Surface
- API:
POST /api/v1/agents/:id/batch-simulation - Dashboard: Agents → your agent → Testing → Batch simulation
Request example
Response envelope
Limits
- Maximum journeys per suite: 15
- Maximum turns per journey: 8
- Per-turn timeout: 30 seconds
- Rate limit: 3 runs per minute
Cost and token implications
Batch-simulation is deterministic on the caller side but still calls the model for every assistant turn. Cost is reported per journey and rolled up intoprojection.cost_cents.
Voice-simulation
Use voice-simulation for voice flows — STT fidelity, barge-in handling, cadence, DTMF capture, transfer, escalation, and polite endings.Surface
- API:
POST /api/v1/agents/:id/voice-simulations - Dashboard: Agents → your agent → Testing → Voice simulation
Request example
Response envelope
Limits
- Maximum scenarios (personas) per suite: 10
- Maximum turns per scenario: 12
- Per-turn timeout: 30 seconds
- Rate limit: 3 runs per minute
Cost and token implications
Voice-simulation replays scripted turns but routes them through the voice path. STT and TTS costs apply only when the runtime returns real audio-path measurements; in text-mode replay you pay only the agent LLM tokens.Soak-test
Use soak-test for load, cost, and degradation under a spike. One script, many concurrent sessions, a staged ramp. It returns the per-turn latency percentiles and the per-stage degradation curve.Surface
- API:
POST /api/v1/agents/:id/soak-test - Dashboard: Agents → your agent → Testing → Soak test
Request example
Response envelope
Limits
- Maximum total sessions across all stages: 50
- Maximum in-flight sessions per stage: 10
- Maximum ramp stages: 6
- Maximum turns per session: 8
- Per-turn timeout range: 1,000–30,000 ms (default 30,000 ms)
- Rate limit: 2 runs per minute
Cost and token implications
Soak-test is the most token-intensive harness because it multiplies the script by the number of concurrent sessions. The response reports total cost and tokens so you can project campaign-spike spend before promoting.Red-team
Use red-team for safety and adversarial posture. 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.Surface
- API:
GET /api/v1/agents/:id/red-team/packandPOST /api/v1/agents/:id/red-team/run - Dashboard: Agents → your agent → Testing → Red team
Request example
Response envelope
Limits
- Built-in pack size: 12 probes (3 per category)
- Maximum categories per run: 4 (the full set)
- Per-probe timeout: 30 seconds
- Rate limit: 3 runs per minute
Cost and token implications
Red-team spends one agent LLM call per probe. There is no second judge model — scoring is deterministic canary-token matching. It is typically the cheapest safety harness relative to persona-simulation.Persona-simulation
Use persona-simulation for end-to-end caller coverage and regression gates on prompt or model changes. Two modes share the endpoint: an LLM caller improvises turn-by-turn, or a fixedscripted_utterances list replays
deterministically while the LLM judge still grades it.
Surface
- API:
POST /api/v1/agents/:id/persona-simulation - Dashboard: Agents → your agent → Testing → Persona
Request example (live persona)
Request example (scripted regression)
Response envelope
Limits
- Maximum scenarios per batch: 100
- Maximum turns per scenario: 12
- Maximum concurrency: 5
- Rubric criteria per scenario: 10
- Default pass threshold: 70
- Rate limit: 2 runs per minute
Cost and token implications
Persona-simulation is the most token-expensive harness: every scenario turn calls the agent model, the persona LLM, and the judge LLM. Pinningscripted_utterances removes the persona-LLM cost but keeps the agent and judge
calls.
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 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. LLM cost applies where an LLM turn runs:CI wiring pattern
Wire batch-simulation first as a fast correctness gate, then persona-simulation withscripted_utterances as the regression gate. Fail
the build if either gate drops below its threshold.