Skip to main content

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 into projection.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/pack and POST /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 fixed scripted_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. Pinning scripted_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 with scripted_utterances as the regression gate. Fail the build if either gate drops below its threshold.

GitHub Actions example

GitLab CI example

Keep the thresholds in repository variables so a team can raise them without editing pipeline code. Run batch-simulation before persona-simulation: if the fast correctness gate fails, you avoid the more expensive judge calls.