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 (K8sGPT has no notion of an alert and scans the namespace). Aurora runs under its default read-only
observability_onlypolicy; HolmesGPT and K8sGPT got the cluster admin kubeconfig, and no transcript contains a mutating command. - HolmesGPT ran through
holmes askwith default toolsets and a 40-step cap it never reached; the lab has no Alertmanager, soholmes investigatewas not used. Its own command allow-list blockedkubectl rollout historyin 12 runs, the same problem Aurora's policy had in the first lab report. - 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.
Every tool ran twice per scenario. Aurora's verdicts were checked by a person. HolmesGPT’s and K8sGPT’s were graded by the judge model, then re-graded from scratch by a second model. It agreed on all 38 HolmesGPT verdicts and disputed 6 K8sGPT labels, where K8sGPT only restated the symptom: the judge said partial or wrong, the reviewer said no answer. We kept the judge’s labels, and every grade file carries both opinions. No person has checked these 76 yet. Aurora's runs are from commit 87d22baf, before the three fixes the first lab report prompted; the six reruns on the fixed build are in the repo and not in this table.
What is not comparable: K8sGPT's row. Its analyzers flag objects and the model explains the flag, so it is scored on a criterion built for alert-driven investigators. It ran on Sonnet 4.5 because it sends a temperature parameter that Bedrock rejects for Sonnet 5; we did not try a proxy that strips it. Costs are recorded for Aurora only; HolmesGPT's token counts were not captured.
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-19. Scenario and tool versions are recorded with every run in the repo.