Orchestro has a benchmark system for evaluating strategies, backends, routing behavior, recovery behavior, and workflow-like tasks.
- What The Benchmark System Does
- Suite Files
- Suite Schema
- Stored Benchmark Runs
- CLI And API Surfaces
- Current Suite Inventory
The implementation lives in src/orchestro/bench.py.
It can:
- load a suite JSON file
- execute each case through Orchestro
- validate output, status, events, failure categories, and recovery attempts
- store a benchmark summary in SQLite
- compare a run against a previous baseline
This is not just prompt matching. Some cases explicitly assert lifecycle behavior such as approvals, retries, compaction, routing, and recovery.
Suite files are JSON with a top-level suite name and cases array.
Minimal example:
{
"suite": "default",
"cases": [
{
"id": "mock-basic",
"goal": "describe a simple mock benchmark response",
"match": "contains",
"expected": "Mock backend response"
}
]
}Supported case fields include:
idgoalmatchexpecteddomainbackendstrategyprovidersenvprompt_contextexpected_statusexpected_backendexpected_eventsexpected_failure_categorymin_recovery_attemptsapproval_patternoperator_noteoperator_note_after_approval
This schema is derived from BenchmarkCase in src/orchestro/bench.py.
Benchmark run summaries are stored in SQLite and exposed through:
benchmark-runsbenchmark-comparebenchmark-metricsGET /benchmark-runsGET /benchmark-runs/{id}GET /benchmark-runs/{id}/baselineGET /benchmark-runs/compare
Stored summaries include:
- suite metadata
- backend and strategy used
- pass/fail counts and pass rate
- detailed per-case results
- aggregate metrics such as token usage, wall time, tool calls, recovery attempts, and quality distribution
CLI:
orchestro benchorchestro bench-localorchestro bench-matrixorchestro benchmark-runsorchestro benchmark-compareorchestro benchmark-metrics
API:
POST /bench/runPOST /bench/matrixGET /benchmark-runsGET /benchmark-runs/{benchmark_run_id}GET /benchmark-runs/{benchmark_run_id}/baselineGET /benchmark-runs/compare
The repo currently ships:
benchmarks/default.jsonbenchmarks/agent.jsonbenchmarks/coding.jsonbenchmarks/routing.jsonbenchmarks/workflows.jsonbenchmarks/vllm-live.json
Rough intent:
default: simple baseline sanity casesagent: tool-loop, retry, approval, and failure/recovery behaviorcoding: coding-oriented and git/tool lifecycle casesrouting: auto-routing expectationsworkflows: higher-level multi-step operator flowsvllm-live: live local model smoke/evaluation cases
For operational commands around these suites, see Testing And Operations. For daily-driver validation, see Examples.