個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Can AI agents resolve production incidents?
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
SREGym: A Benchmarking Platform for SRE Agents
🔍 Overview
SREGym is an AI-native platform to enable the design, development, and evaluation of AI agents for Site Reliability Engineering (SRE). The core idea is to create live system environments for SRE agents to solve real-world SRE problems. SREGym provides a comprehensive SRE benchmark suite with a wide variety of problems for evaluating SRE agents and also for training next-generation AI agents.檢視完整 README ↗SREGym is inspired by our prior work on AIOpsLab and ITBench. It is architectured with AI-native usability and extensibility as first-class principles. The SREGym benchmark suites contain 90 different SRE problems. It supports all the problems from AIOpsLab and ITBench, and includes new problems such as OS-level faults, metastable failures, and concurrent failures. See our problem set for a complete list of problems.
SREGym has been used to simulate real-world cloud failures, such as:
SREGym-Lite is a curated set of 17 representative problems with varied difficulty levels that are friendly to run. It is the recommended starting point for new users and can run easily on a Kind setup with 8 vCPU and 16 GB of memory.
git clone --recurse-submodules https://github.com/SREGym/SREGym
cd SREGym
uv sync
uv run prek install
When resolving dependencies, uv excludes packages uploaded in the last seven days. The agent image applies the same delay to pip dependencies and npm-based agent installers. The existing lockfile keeps its pinned versions. A new package version, including a security fix, can be unavailable until the delay ends.
The delay requires upload-time metadata from the package registry. It does not cover existing installed packages, container images, OS packages, Git dependencies, or direct downloads. The DinD image uses an older uv for frozen installs. Resolve dependencies outside that image with uv 0.11.8 or later.
Choose either a) or b) to set up your cluster and then proceed to the next steps.
SREGym runs on a self-managed Kubernetes cluster that you provision on Linux hosts you have SSH and root access to (e.g. CloudLab, bare-metal machines, or cloud VMs/VPS instances). We provide an Ansible playbook that builds the cluster for you. Follow this README to set it up.
[!NOTE] A managed Kubernetes service won't work out of the box, since SREGym's setup needs SSH and root access to the nodes for OS-level cluster configuration. Instead, spin up a few plain VMs/VPS instances and add them to
inventory.yml.
SREGym can be run on an emulated cluster using kind on your local machine. However, not all problems are supported.
For an experimental Docker-in-Docker environment with a private cluster per run, including parallel problem execution, see the DinD guide.
Note: If you run into pod crashes or "too many open files" errors, see the kind README for required host kernel settings and troubleshooting.
bash kind/setup_kind_cluster.sh
For existing clusters, see the upgrade and baseline instructions.
To get started with the included Stratus agent:
# OpenAI
export OPENAI_API_KEY="sk-proj-..."
# Anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
# Google
export GEMINI_API_KEY="..."
# AWS Bedrock
export AWS_PROFILE="bedrock"
export AWS_DEFAULT_REGION="us-east-2"
uv run main.py --agent stratus --model gpt-5
Or start with SREGym-Lite:
uv run main.py --suite sregym-lite --agent stratus --model gpt-5
Or run the SREGym-Lite faults on Frappe, Saleor and Slack Spine (see the ported suite):
uv run main.py --suite sregym-lite-ia --agent stratus --model gpt-5
Use --judge-model to override the judge model separately (defaults to --model):
uv run main.py --agent stratus --model gpt-5 --judge-model anthropic/claude-sonnet-4-6-20250627
Each problem runs up to two agent stages, diagnosis then mitigation. By default a
run attempts every stage the problem supports. --stages narrows that:
# Diagnose only; never enter the mitigation stage
uv run main.py --problem network_policy_block --stages diagnosis
# Both, stated explicitly (the default)
uv run main.py --suite sregym-lite --stages diagnosis mitigation
--stages is independent of --problem and --suite: the stages decide what an
attempt does, the problem selection decides which problems it does it to. Stages must
be given in the order above.
Useful mainly when iterating on a problem's diagnosis oracle, where a mitigation
attempt is wasted time — note that --agent-timeout is a budget for the whole agent
phase, so a slow diagnosis otherwise eats into mitigation's share.
[!NOTE] A single-stage run is reported as
complete, since completeness is measured against the stages that were configured. It is not, however, useful input tosregym/results/report.py's difficulty tables, which treat a missing mitigation result as inconclusive.
Naming a stage the problem has no oracle for is an error rather than a silent skip, so a typo cannot produce a run that reports success having measured nothing.
Agents always run in isolated Docker containers, preventing access to SREGym internals like problem definitions and grading logic. The image is built automatically on first run.
Use --force-build to rebuild the container image after updating dependencies or agent code:
uv run main.py --agent codex --model gpt-5 --force-build
Filtered access is the default. Agents can reach the selected model provider and internal services, but not other internet destinations. Application pods also have outbound restrictions.
Use --internet-access open for unrestricted internet access.
To allow an extra destination in filtered mode, add --allow-agent-endpoint:
uv run main.py --agent codex --model gpt-5.6-sol \
--allow-agent-endpoint https://telemetry.example.com/v1
Repeat the option for more destinations.
Agent containers are hardened by default: every Linux capability is dropped except DAC_OVERRIDE, which container
root needs to write to the host-owned /logs and /workspace bind mounts, and no-new-privileges is set. This
blocks apt-get, which cannot drop to the _apt user without setuid/setgid. If your agent installs tooling
during a run, turn it off:
uv run main.py --agent codex --model gpt-5 --container-hardening off
Jev is disabled by default. To enable it for Codex, set TYPESAFE_API_KEY and run:
uv run main.py --agent codex --model gpt-5.6-luna --reasoning-effort medium \
--problem <problem-id> --jev-model jev-latest --force-build
Jev reviews diagnostic tests and submissions using evidence sent to TypeSafe.
--profile controls how much infrastructure SREGym stands up. It is independent of
--suite — the profile selects what gets deployed, the suite selects which problems run.
| Profile | Behaviour |
|---|---|
full (default) | The standard stack. Use this for results you intend to compare against the leaderboard. |
svelte | Additionally drops components that nothing in SREGym reads, and shortens metric retention. |
uv run main.py --suite sregym-lite --agent stratus --model gpt-5 --profile svelte
svelte removes:
sregym/,
mcp_server/ or clients/ queries OpenSearch or Grafana; the bundled Jaeger is deleted
moments after deployment anyway, by Jaeger.create_external_name_service().openebs-device StorageClass.
SREGym only provisions through openebs-hostpath.Measured on one astronomy-shop problem (peak RSS / peak CPU, sampled over the run):
full | svelte | |
|---|---|---|
| OpenSearch | 1096 MiB / 1709m | — |
| Grafana | 475 MiB / 303m | — |
| OpenEBS NDM (7 pods) | ~190 MiB / 582m | — |
[!WARNING]
sveltechanges what an agent can observe in the cluster, so its scores are not comparable withfull. It is intended for local iteration on memory-constrained hosts, not for leaderboard submissions. Note that--profile svelteand--suite sregym-liteare unrelated: you can run either without the other.
SREGym uses LiteLLM model strings directly (no config file needed). Just pass any supported model string via --model:
| CLI Flag | Default | Purpose |
|---|---|---|
--model | gpt-5 | Sets both agent and judge model |
--judge-model | (same as --model) | Override just the judge evaluator model |
--judge-backend | api | Judge access through the existing API endpoint, or codex, claudecode, copilot, or cursor |
Set the required environment variable for your provider before running:
| Provider | Model String Examples | Required Environment Variables |
|---|---|---|
| OpenAI | gpt-5, gpt-4o | OPENAI_API_KEY |
| Anthropic | anthropic/claude-sonnet-4-6-20250627 | ANTHROPIC_API_KEY |
gemini/gemini-2.5-pro | GEMINI_API_KEY | |
| AWS Bedrock | bedrock/us.anthropic.claude-sonnet-4-5-20250929-v1:0 | AWS_PROFILE, AWS_DEFAULT_REGION |
| Azure | azure/gpt-4o | AZURE_API_KEY, AZURE_API_BASE, AZURE_API_VERSION |
SREGym supports local models through Ollama and OpenAI-compatible servers such as vLLM and LM Studio. The examples below use Ollama.
Set AGENT_API_KEY as well if the endpoint requires authentication.
[!CAUTION] When you use
--internet-access filtered, the agent runs on an isolated Docker network. It cannot reach a local model server that listens only on127.0.0.1orlocalhost. Configure the server to listen on a host-reachable interface, such as0.0.0.0, and usehttp://host.docker.internal:<port>as the API base. Protect the exposed port with authentication or a firewall. This requirement is the same for Kind and external Kubernetes clusters because the connection is between the agent container and the machine running SREGym.
Stratus with Ollama:
ollama pull qwen3-coder:30b
export AGENT_API_BASE="http://127.0.0.1:11434"
uv run main.py --agent stratus --model ollama_chat/qwen3-coder:30b
OpenCode with Ollama:
OpenCode uses the endpoint's OpenAI-compatible /v1 API.
export AGENT_API_BASE="http://127.0.0.1:11434/v1"
uv run main.py --agent opencode --model local/qwen3-coder:30b
When --judge-model is not set, SREGym reuses the agent model and endpoint for the judge. This works directly for Stratus because its model identifier is LiteLLM-compatible. For OpenCode, SREGym normalizes local/<served-model> to openai/<served-model> for the judge, because OpenCode's local/ provider uses an OpenAI-compatible endpoint.
For vLLM, LM Studio, or another OpenAI-compatible server, point AGENT_API_BASE to its /v1 endpoint and use openai/<served-model> with Stratus or local/<served-model> with OpenCode.
To use a different LiteLLM judge provider, pass --judge-model explicitly:
export JUDGE_API_BASE="http://127.0.0.1:11434"
uv run main.py --agent opencode --model local/qwen3-coder:30b --judge-model ollama_chat/qwen3-coder:30b
Separate judge endpoint:
Set JUDGE_API_BASE and JUDGE_API_KEY when the judge uses a different endpoint or credential:
export JUDGE_API_BASE="https://example.test/v1"
export JUDGE_API_KEY="..."
uv run main.py --agent stratus --model ollama_chat/qwen3-coder:30b --judge-model gpt-5
Choose a subscription judge independently of the agent with --judge-backend (default api).
uv run main.py --agent cursor --model auto --judge-backend codex --judge-model gpt-5.5
| Judge backend | Credentials |
|---|---|
codex | Subscription login in $CODEX_HOME/auth.json, default ~/.codex/auth.json |
claudecode | CLAUDE_CODE_OAUTH_TOKEN |
copilot | COPILOT_GITHUB_TOKEN |
cursor | CURSOR_API_KEY |
Set --judge-model to a model supported by the selected CLI.
For Copilot, use export COPILOT_GITHUB_TOKEN="$(gh auth token)" to reuse an existing GitHub CLI OAuth login.
OpenAI:
uv run main.py --agent stratus --model gpt-5
Anthropic:
uv run main.py --agent stratus --model anthropic/claude-sonnet-4-6
Google:
uv run main.py --agent stratus --model gemini/gemini-2.5-pro
AWS Bedrock:
uv run main.py --agent stratus --model bedrock/us.anthropic.claude-sonnet-4-5-20250929-v1:0
Note: For AWS Bedrock, ensure your AWS credentials are configured via ~/.aws/credentials and your profile has permissions to access Bedrock.
See the full list of supported providers and model strings in the LiteLLM docs.
If our work is useful for you, please cite it:
@article{clark:arxiv:2026,
author = {Jackson Clark and Yiming Su and Saad Mohammad Rafid Pial and Yifang Tian and Lily Gniedziejko and Hans-Arno Jacobsen and Yinfang Chen and Tianyin Xu},
title = "{SREGym: A Live Benchmark for AI SRE Agents with High-Fidelity Failure Scenarios}",
journal = {arXiv:2605.07161},
year = 2026,
month = MAY,
}
We are grateful to the generous support from
Licensed under the MIT license.