Basic Usage
Run evals from the command line:CLI Options
Runnable Specification
The runnable can be specified in two ways: 1. Via CLI flag:Tag Filtering
Filter evals by tags using-t or --tags:
Output Capture
By default, stdout/stderr from your agent is captured and only shown on failure. Use-s to see output live:
Streaming JSON Output
Use--format json to stream structured events instead of the rich terminal report. One JSON object is written per line (JSONL) to stdout, and each result event is emitted as the eval completes — human-readable output goes to stderr, so stdout stays parseable:
Event Reference
Every line is a JSON object with anevent field: start (once, before any eval runs), result (once per eval), summary (once, at the end).
start
result — one per eval. With --jobs 1 results arrive in file order; with --jobs > 1 they arrive in completion order, so use name to correlate.
Each entry in
validators:
summary
The document written by
-o/--output has the same shape: the summary fields at the top level plus a results list, where each entry matches the result event (minus the event key).
Parallel Execution
Use-j/--jobs to run evals concurrently. Results are reported in completion order, which pairs naturally with --format json for streaming consumers:
Saving Results
Use-o/--output to write the full results document as JSON after the run:
File Discovery
Naming Patterns
Timbal discovers eval files matching these patterns:eval*.yaml- e.g.,eval_search.yaml,evals.yaml*eval.yaml- e.g.,search_eval.yaml,my_eval.yaml
Directory Structure
Configuration File
Create anevalconf.yaml in your project root for shared configuration:
evalconf.yaml.
Output Format
Successful Run
Failed Run
Exit Codes
CI/CD Integration
GitHub Actions
GitLab CI
Pre-commit Hook
Debugging
Verbose Output
Run Single Eval
Test a specific eval during development:Environment Variables
Set environment variables for testing:Best Practices
Organize evals by speed
Organize evals by speed
Separate fast smoke tests from slow regression tests:
Use meaningful exit codes
Use meaningful exit codes
Check exit codes in scripts:
Set timeouts
Set timeouts
Prevent hanging tests with timeouts (in milliseconds):