Loading...
Loading...
Create and run evaluation suites, watch live benchmark progress, view scorecards, compare model performance, and integrate eval runs with CI workflows from the CLI.
npx skill4agent add cheaper-inference/omniroute cli-evalnpm install -g omniroute # or: npx omniroute
omniroute --versionevalomniroute evaleval suitesomniroute eval suiteseval listomniroute eval listeval get <suiteId>omniroute eval get <suiteId>eval create--file <path>omniroute eval createeval run <suiteId>-m, --model <id>--combo <name>--concurrency <n>--tag <tag>--watchomniroute eval run <suiteId>eval list--suite <id>--status <s>--since <ts>--limit <n>omniroute eval listeval get <runId>omniroute eval get <runId>eval results <runId>--failedomniroute eval results <runId>eval cancel <runId>--yesomniroute eval cancel <runId>eval scorecard <runId>omniroute eval scorecard <runId>simulate [prompt]--file <path>-m, --model <id>--combo <name>--reasoning-effort <level>--thinking-budget <n>--explainomniroute simulate [prompt]omnirouteomniroute eval suites list # List all eval suites
omniroute eval suites list --json # JSON output
omniroute eval suites get <suiteId> # Full suite definitionomniroute eval suites create \
--name "code-quality" \
--rubric "exact-match" \
--samples-file ./samples.jsonl # JSONL: {input, expected_output}exact-matchcontainsllm-judgeregex--samples-file{"input": "What is 2+2?", "expected_output": "4"}
{"input": "Translate 'hello' to Spanish", "expected_output": "hola"}omniroute eval suites run <suiteId> \
--model claude-sonnet-4-6 # Run suite against a specific model
omniroute eval suites run <suiteId> \
--model gpt-4o \
--watch # Live TUI progress (EvalWatch)--watchRUN_ID=$(omniroute eval suites run <suiteId> --model claude-sonnet-4-6 --output json | jq -r '.id')
omniroute eval get $RUN_IDomniroute eval list # List all eval runs
omniroute eval list --json
omniroute eval get <runId> # Run details (status, model, score)
omniroute eval results <runId> # Per-sample results
omniroute eval scorecard <runId> # Full scorecard with pass/fail per sample
omniroute eval cancel <runId> # Cancel a running evalomniroute eval scorecard <runId> --output json{
"id": "sample-1",
"score": 0.95,
"passed": true,
"input": "What is 2+2?",
"output": "4",
"expected": "4"
}for MODEL in claude-sonnet-4-6 gpt-4o gemini-2.0-flash; do
omniroute eval suites run $SUITE_ID --model $MODEL --output json | jq '{model: .model, score: .score}'
done# Run and fail CI if score drops below threshold
SCORE=$(omniroute eval suites run $SUITE_ID --model claude-sonnet-4-6 --output json | jq -r '.score')
python3 -c "import sys; score=float('$SCORE'); sys.exit(0 if score >= 0.90 else 1)"suites createinvalid rubricexact-matchcontainsllm-judgeregexsuites runmodel not foundomniroute models --search <name>eval getstatus: failedomniroute logs --search evalscorecardrunningomniroute eval get <runId>statuscompleted