AgentCarousel
Unit tests for AI agents. The only AI testing tool that produces evidence your auditors accept — run behavioral tests in CI, score with an LLM judge, gate on regressions, and export signed bundles ready for procurement teams and government regulators.
AgentCarousel delivers a repeatable, automated way to assess AI agent efficacy and behavior — establishing the trust required before deployment. Tests run deterministically in CI, semantic scoring comes from an LLM-as-a-judge, and results can be certified by a domain expert with a signed attestation.
Why agentcarousel
- Behavioral certainty before deployment — Declarative YAML fixtures pin what your agent should and shouldn't say. Same inputs, same outputs, every time — without touching a live API.
- Evidence that stands up to scrutiny — Every run exports a signed bundle (
.tar.gz+ minisign attestation) a domain expert can certify — ready for auditors, procurement teams, and government regulators. - Semantic scoring, not just pattern matching — An LLM-as-a-judge evaluates outputs with contextual understanding, catching regressions.
- Built for regulated environments — Risk tier, data handling, and certification track are first-class fixtures. Integrates into CI and produces governance artifacts for your compliance program.
Install
# Linux / macOS — slim binary (no dashboard)
|
# Linux / macOS — full binary (includes web dashboard UI)
|
# Homebrew (macOS)
&&
# Cargo (Rust)
Upgrade an existing installation to the full variant at any time:
Quickstart
# 1. Scaffold a skill fixture
# 2. Generate cases with an LLM (no hand-writing required)
# 3. Run offline (mock mode, no API keys)
# 4. Evaluate with live generation and an LLM judge
# 5. Export a signed evidence bundle
See fixtures/regex-builder/ for a complete fixture with all cases, golden outputs, and bundle manifest.
Generate Fixtures
agc generate scaffolds validated YAML fixture cases using your configured generator LLM — no hand-writing required.
# From a skill name and description
# From an existing system prompt file
# Extend an existing fixture (deduplicates against existing case IDs)
# Preview without writing
# Machine-readable output (for agent workflows)
Generated cases are validated against the fixture schema before being written. If the LLM output fails validation, the command retries once with the errors appended to the prompt. The meta-prompt lives at templates/generate-prompt.md — teams can customize it to specify what "good coverage" means for their domain.
Typical workflow:
# edit fixtures/customer-support/prompt.md
Live Eval with LLM-as-a-Judge
# Generator LLM key (the model being tested)
# or OPENAI_API_KEY / OPENROUTER_API_KEY
# Judge LLM key (the model scoring outputs)
# or bring your own provider
# Run skill fixtures against live APIs with LLM judge
Execution modes — --execution-mode live hits real LLM APIs. Omit it (or pass mock) for deterministic offline runs.
Evaluators — --evaluator all honors each case's declared evaluator. --evaluator judge routes every case through the LLM judge regardless. --evaluator mock skips LLM calls entirely.
Filters — --filter on skill/case-id; --filter-tags accepts comma-separated tags (e.g. database, safety)
Multi-Model Comparison
agc carousel runs the same fixture suite against multiple models in parallel and prints a ranked comparison table — pass rate, effectiveness score, and latency p50 per model. Every model's run is saved to history so agc compare and the dashboard compare view work immediately.
# Rank three models head-to-head
# With judge scoring
# JSON output for downstream tooling
A/B Prompt Comparison
agc ab runs the same test (fixture) against two prompts concurrently and produces a head-to-head comparison. Pass rate, effectiveness score, and per-case winners.
# Compare two prompt variants
# With judge scoring
# JSON output
The --threshold flag controls the effectiveness delta required to declare a winner (default 0.05). Both runs are saved to history.
CI Regression Gate
agc compare compares two eval runs and exits 1 when effectiveness regresses beyond a threshold. When at least 5 matched cases carry effectiveness scores, a Mann-Whitney U test gates the exit: the regression only triggers when the delta exceeds --threshold and the p-value falls below --significance. This prevents single-run noise from failing CI.
# Compare the latest run to an explicit baseline
# Auto-baseline: finds previous run for the same skill
# Tighten the significance gate for high-stakes checks
# Tag a run as a named baseline for CI reference
GitHub Actions example:
- name: Eval
run: agc eval fixtures/ --judge --runs 5
- name: Regression gate
run: agc compare -l --baseline ${{ vars.BASELINE_RUN_ID }} --threshold 0.05
The JSON output includes p_value, significant, samples_baseline, and samples_current fields for downstream analysis.
Exit codes: 0 = no regression, 1 = regression exceeds threshold, 4 = runtime error.
Dashboard
agc dashboard serves a local web UI from the binary. Open http://localhost:7421 after starting it. Available in the full binary or with feature-flag dashboard.
Reports
# List recent runs
# Inspect a run
# Export as a signed evidence bundle
Agent Integration
Every command emits structured JSON when --json is passed or stdout is not a TTY (piped to a file, another process, or an AI coding agent):
# Parse eval results in a pipeline
|
# Machine-readable validate output
|
# Generate fixtures from an agent script
Exit codes (consistent across all commands):
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Failure (tests failed, regression detected) |
| 2 | Invalid arguments |
| 3 | Config error |
| 4 | Runtime error (IO, network, DB) |
| 5 | Not found |
Configuration
Copy agentcarousel.example.toml to agentcarousel.toml. All configuration options are documented in the example file.
Bundles
A bundle is a signed, distributable archive of a skill's fixture, cases, and evidence.
# Pack a bundle
# Verify bundle integrity
# Pull from registry
# Publish to registry
# Publish multiple runs
Trust Checks
Trust checks query a skill's registry state for use in CI gates and governed workflows — verify a deployed agent is certified and untampered before it runs.
# Check trust state from registry
# Verify with local attestation
Contributions
- Start here:
CONTRIBUTING.md - Security policy:
SECURITY.md - Changelog:
CHANGELOG.md
For fixture contributions, open an issue before implementation.