AI SRE benchmark
19 Kubernetes faults. 3 agents. Every trace public.
We break a small app on a kind cluster in known ways, hand each agent only the alert, and grade the root cause against the fault we injected. A judge model scores first, then a person checks every verdict. Misses are published with the hits. Arvo builds Aurora and wrote the scenarios; read the numbers with that in mind.
How a run works
- kind v0.33.0, Kubernetes v1.37.0, 3 nodes. The
shopapp: nginx, a Python API, a worker, redis, a load generator. Synthetic, no customer code. - One fault is injected with the scenario's
break.sh;check.shproves it is visible. - Each agent gets the alert text and read-only cluster access. Aurora runs under its default
observability_onlypolicy. - Correct means every
must_identifyitem in the scenario is stated and no listed wrong answer is asserted. Judge: us.anthropic.claude-opus-5-5, then a person.
Aurora's verdicts were checked by a person and come from two repeats per scenario. HolmesGPT's and K8sGPT's are the judge model's only, from one repeat each, until a person reviews them; the second repeat and the review are next.
What is not comparable yet: K8sGPT has no notion of an alert, it scans the namespace. It also ran on Sonnet 4.5 because it always sends a temperature parameter that Bedrock rejects for Sonnet 5. Costs are recorded for Aurora only.
Rerun it, or add your agent
Everything is in Arvo-AI/aurora-lab: scenarios, the runner, every transcript and grade, and this table as results.json.
git clone https://github.com/Arvo-AI/aurora-lab && cd aurora-lab ./lab.sh up && ./lab.sh break 03-bad-image-tag ./runner/h2h.sh 03-bad-image-tag runs/mine
To put another agent on the board, open an issue titled "Benchmark: <agent>" with a script that takes the alert text and prints the root cause. We run it on all 19 faults and publish the result, whatever it is. Submit an agent.
Read the full write-up: lab report v1. Fix the faults yourself: runbooks, each with Aurora's real trace.
Results updated 2026-10-15. Scenario and tool versions are recorded with every run in the repo.