aobench

mcp
Security Audit
Warn
Health Warn
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Role-aware, permission-enforced benchmark for LLM agents that operate HPC systems — SLURM, telemetry, RBAC, docs, facility. A policy violation hard-fails the task. 88 tasks (10 categories x 5 roles), 29 reproducible environments with 6 rebuilt from real Marconi100 ExaData, scored on 7 weighted dimensions.

README.md

Benchmark framework for evaluating AI agent systems in High-Performance Computing (HPC) environments.

AOBench measures how well AI agents complete HPC operational tasks — job
scheduling, telemetry interpretation, energy reasoning, policy enforcement —
using the right tools, the right roles, and the right permissions. Instead of
running on live clusters, every task is evaluated against a deterministic
environment snapshot with mock HPC tools (SLURM, telemetry, RBAC, docs,
facility), so results are reproducible, portable, and safe to publish.

Terminal recording: aobench runs one Marconi100-grounded task with the zero-tool baseline adapter and prints the per-dimension score breakdown, then aggregates it into a CLEAR scorecard — all offline, with no cluster and no API key.
Every number in that recording was produced offline on a laptop — no cluster, no API key. Reproduce it with the two commands shown.

In one line: AOBench is an AI agent benchmark for HPC — an HPC agent
evaluation framework that is role-aware, permission-enforced, tool-using,
trace-based, and reproducible.

What / who / why (quotable summary):

  • AOBench (Agent Operations Benchmark) is an open-source Python benchmark framework for evaluating AI agents that operate High-Performance Computing (HPC) systems.
  • AOBench helps researchers and engineers measure whether an AI agent completes HPC operational tasks — job scheduling, telemetry interpretation, energy reasoning, and policy enforcement — with the right tools, roles, and permissions.
  • Use AOBench when you need reproducible, role-aware, permission-enforced evaluation of HPC agents against deterministic environment snapshots instead of live clusters.
  • AOBench differs from general-purpose LLM-agent benchmarks because it is domain-specific to HPC operations, enforces role-based access control (RBAC), and scores the full execution trace rather than only the final answer.
  • AOBench is not intended for measuring general-purpose reasoning, software-engineering, or web-browsing agents, and it does not execute against real production clusters.

Name collision: aobench is also a long-standing ambient-occlusion ray-tracing
microbenchmark by Syoyo Fujita (syoyo/aobench),
unrelated to this project. This AOBench is the Agent Operations Benchmark. If you
came here looking for the renderer, that is the link.

Requirements

  • Python ≥ 3.10 (3.12 is used in the Docker image and CI, and is recommended).
  • Optional: openai, anthropic, or mcp Python clients to drive the
    corresponding adapters.

See docs/getting-started/installation.md for
the full installation guide — the Python package, the Docker CLI image, and the Docker
Compose service stack.

Five benchmark principles

Principle Meaning
Role-aware The same question yields different answers and tool access depending on the requester role.
Tool-using Agents are evaluated as systems that call HPC-native tools (SLURM, telemetry, docs, RBAC, facility).
Permission-aware Success requires respecting RBAC and refusing out-of-scope requests. Permission violations hard-fail the task.
Trace-based Evaluation considers the full execution trace — tool selection, arguments, sequence, and grounding — not just the final answer.
Reproducible Runs target deterministic snapshot bundles, never live infrastructure.

Repository layout

AOBench/
├── src/aobench/           # Python package (installed by `pip install -e .`)
│   ├── cli/                # `aobench` typer app — 15 sub-commands
│   ├── schemas/            # Pydantic data models (task, trace, snapshot, …)
│   ├── loaders/, tasks/    # Task discovery, loading, dataset splits, RAG context
│   ├── environment/        # Snapshot validator, snapshot loader factory
│   ├── tools/              # Mock SLURM, telemetry, docs, RBAC, facility tools
│   ├── adapters/           # direct_qa, openai, anthropic, mcp
│   ├── runners/            # BenchmarkRunner, TraceWriter, ExecutionContext
│   ├── scorers/            # 12 scorers across 7 weighted dimensions
│   ├── reports/            # JSON, HTML, slice, CLEAR scorecard reports
│   ├── exporters/          # Langfuse exporter (optional)
│   ├── leaderboard/        # FastAPI leaderboard service
│   ├── reproducibility/    # Artifact locking + paper-table targets
│   └── taxonomy/           # 24-leaf TRAIL-adapted HPC error taxonomy
│
├── benchmark/              # Static benchmark data (versioned in git)
│   ├── tasks/specs/        # 88 JSON task specs (80 synthetic + 8 M100 ExaData)
│   ├── tasks/task_set_v1.json   # 36 HPC v1 tasks (Souza 2025 schema)
│   ├── tasks/task_set_v3.json   # v3 task index (88 tasks)
│   ├── tasks/dataset_splits.py  # 67 dev / 21 test (synthetic core: 59 dev / 21 test)
│   ├── tasks/lite_manifest_v1.json  # AOBench-Lite curated subset
│   ├── environments/           # 29 snapshot bundles (23 synthetic + 6 M100)
│   ├── configs/            # scoring_profiles.yaml, hpc_tool_catalog.yaml,
│   │                       # error_taxonomy.yaml
│   └── qa/                 # AOBench-QA (~95 HPC operational queries)
│
├── data/                   # Generated artifacts
│   ├── runs/               # Per-run traces & results (gitignored)
│   ├── reports/            # Validity gate reports
│   ├── robustness/         # pass^k results
│   └── rubric_validation/  # Annotator profiles, response set, guides
│
├── prompts/judge/          # LLM-judge rubric + error taxonomy templates
├── docs/                   # Documentation (see Documentation section)
├── scripts/                # Bundle generation, validity gates, rubric tooling
└── tests/                  # 83 test files, ~1510 tests (unit + integration)

Quick start

Two commands to your first scored HPC agent task. No cluster, no API key, no
configuration — the direct_qa baseline runs offline against a frozen snapshot.

git clone https://github.com/MSKazemi/aobench.git && cd aobench && make install

aobench quickstart

aobench quickstart takes no arguments: it locates the benchmark corpus, picks a
representative task, runs it, and explains every number it prints.

Aggregate score: 0.3340   (0 = worst, 1 = best)

Per dimension:
  outcome      0.2400   did the answer match the gold answer
  tool_use     0.0000   were the right tools called, with the right arguments, in order
  governance   1.0000   did the agent stay inside its RBAC role
  grounding    0.0000   was the answer supported by the snapshot evidence
  efficiency   1.0000   how much work was spent getting there

That 0.334 is the tool-free floor a real agent has to beat. From there:

aobench doctor                 # is my install healthy?
aobench list tasks --qcat JOB  # what else can I run? (also: list envs / roles / adapters)
aobench validate benchmark     # do all 88 tasks and 29 environments load?
aobench run task --task JOB_USR_001 --env env_01 --adapter direct_qa

Evaluate a real model and produce a CLEAR scorecard:

export OPENAI_API_KEY=sk-…
aobench run all --adapter openai:gpt-4o --split dev
aobench clear run data/runs/<run_id>

Full walkthrough: docs/getting-started/quickstart.md.
Other install paths (Docker, Compose, extras):
docs/getting-started/installation.md.

How it works

flowchart LR
    T["📋 Task spec<br/>role · question · gold trace"]
    E["📦 Environment snapshot<br/>frozen SLURM · telemetry · docs"]
    R["⚙️ BenchmarkRunner"]
    A["🤖 Your agent<br/>direct_qa · openai · anthropic · mcp"]
    TOOLS["🔧 Mock HPC tools<br/>slurm · telemetry · docs · rbac · facility"]
    TR["🧾 Trace<br/>every call, argument, and answer"]
    S["📊 12 scorers<br/>7 weighted dimensions"]
    C["🏆 CLEAR scorecard<br/>Efficacy · Assurance · Reliability · Cost · Latency"]

    T --> R
    E --> R
    R --> A
    A -- "tool calls" --> TOOLS
    TOOLS -- "role-filtered results" --> A
    A --> TR
    TR --> S
    S --> C

    classDef input fill:#e8eaf6,stroke:#3949ab,stroke-width:2px,color:#1a237e
    classDef core fill:#1a237e,stroke:#0d1452,stroke-width:2px,color:#ffffff
    classDef output fill:#fff3e0,stroke:#ff8f00,stroke-width:2px,color:#e65100

    class T,E input
    class R,A,TOOLS core
    class TR,S,C output

An RBAC violation hard-fails the task — an agent that produces the right answer by
overstepping its role scores zero, no matter how good the answer is.

Programmatic access & agent surfaces

Beyond the CLI, AOBench exposes the benchmark engine over four machine
surfaces so agents and pipelines can run and score tasks directly. Every surface
calls the same BenchmarkService façade — transports carry no scoring logic, so
CLEAR scores are identical across all of them.

Surface Start it with What it exposes
REST / FastAPI aobench serve rest (extra: rest) /v1/* HTTP endpoints — run, score, report, trace, compare, robustness, datasets, async jobs, SSE progress
MCP / FastMCP aobench serve mcp (extra: mcp) MCP tools (run_task, score_trace, validate_benchmark, robustness) + aobench:// resources
A2A (Agent2Agent) evaluation scorers + adapter core Agent-Card conformance, delegation / comms-cost / attribution / lifecycle / card-poisoning scorers
CLI / terminal track evaluation scorers + adapter core Mock Slurm shims, destructive-command guard, end-state verification
uv sync --extra rest --extra mcp     # install both server extras (list together)
aobench serve rest --host 0.0.0.0 --port 8000
aobench serve mcp                     # stdio, for an MCP client to spawn

See the programmatic-access guide and the
serving tutorial for end-to-end
walkthroughs, and ROADMAP.md for surface status and what's next.

Implemented scope (v0.4)

Item Count Location
Tasks 88 — 80 synthetic core (10 QCATs × 5 roles) + 8 grounded in real Marconi100 ExaData benchmark/tasks/specs/
Environments 29 deterministic snapshot bundles — 23 synthetic + 6 built from real Marconi100 ExaData benchmark/environments/
Roles (scored) 5 — scientific_user, sysadmin, facility_admin, researcher, system_designer src/aobench/schemas/task.py
QCATs (scored) 10 — JOB, MON, ENERGY, PERF, DATA, SEC, FAC, ARCH, AIOPS, DOCS benchmark/tasks/specs/
Adapters 4 — direct_qa, openai, anthropic, mcp src/aobench/adapters/
Mock tool families 5 — slurm, docs, rbac, telemetry, facility src/aobench/tools/
Scorers 12 across 7 dimensions src/aobench/scorers/
Scoring profiles alpha0_minimal, alpha1_grounding, default_hpc_v01 benchmark/configs/scoring_profiles.yaml
Tests ~1470 passing tests/

The 7 evaluation dimensions and their default_hpc_v01 weights — verified against
benchmark/configs/scoring_profiles.yaml in CI, and printable with
aobench list profiles:

Dimension Weight Scorer
Outcome correctness 0.30 OutcomeScorer (or HybridScorer)
Governance / RBAC 0.20 GovernanceScorer
Tool-use correctness 0.15 ToolUseScorer (BFCL-decomposed)
Grounding 0.10 GroundingScorer
Robustness (pass^k) 0.10 RobustnessScorer
Workflow (WorfEval) 0.10 WorfEvalScorer
Efficiency 0.05 EfficiencyScorer

Row form for machine comparison: 0.30 | 0.15 | 0.10 | 0.20 | 0.10 | 0.05 | 0.10
(outcome, tool_use, grounding, governance, robustness, efficiency, workflow).

The CLEAR scorecard (aobench clear run) aggregates Efficacy, Assurance,
Reliability, Cost, and Latency into a single comparable score per model.

Use cases

  • Compare models as HPC agents. Run the same task suite across openai,
    anthropic, and mcp adapters and rank them with a single CLEAR scorecard.
  • Test tool-use and grounding. Check whether an agent selects the right
    HPC-native tool (SLURM, telemetry, docs, RBAC, facility) with correct
    arguments and grounds its answer in the environment snapshot.
  • Verify permission safety. Confirm an agent respects role-based access
    control and refuses out-of-scope requests — permission violations hard-fail
    the task.
  • Reproduce and publish results. Evaluate against deterministic snapshot
    bundles so runs are portable and safe to publish without live-cluster access.
  • Author new tasks and environments. Extend the 88-task / 29-environment
    corpus using the versioned JSON specs and snapshot format.

Comparison and alternatives

AOBench is a domain-specific benchmark for HPC operations. It complements,
rather than replaces, general-purpose agent benchmarks:

Benchmark Primary domain How AOBench differs
General LLM-agent benchmarks (e.g. AgentBench, GAIA) Broad assistant / reasoning tasks AOBench targets HPC operational tasks with role-aware RBAC and deterministic HPC snapshots.
Tool-use / function-calling benchmarks (e.g. τ-bench, BFCL) General tool and function calling AOBench scores tool use within HPC scenarios (SLURM, telemetry, facility) and combines it with governance, grounding, robustness, and efficiency. AOBench's ToolUseScorer is BFCL-decomposed.
Software-engineering agent benchmarks (e.g. SWE-bench) Code repair / repositories AOBench evaluates HPC operations, not software patches.

Choose AOBench when the question is specifically "can this agent operate an HPC
system correctly, safely, and within its role?"
For general reasoning,
web-browsing, or code-repair agents, use the corresponding general-purpose
benchmark above.

Limitations / when not to use

  • Not a live-cluster test. AOBench runs against mock tools and deterministic
    snapshots by design; it does not execute against real production HPC
    infrastructure and does not measure real-world side effects.
  • HPC-scoped. The corpus covers 5 roles, 10 QCATs, 88 tasks, and 29
    environments. It is not a general-purpose reasoning, web, or coding benchmark.
  • API keys required for hosted models. The openai and anthropic adapters
    need the corresponding API keys and incur provider cost; the direct_qa
    baseline runs without tools for reference.
  • Early-stage (v0.x). Scope, schemas, and scoring profiles are still
    evolving between minor versions.

FAQ

What is AOBench?
AOBench (Agent Operations Benchmark) is an open-source Python framework for
evaluating AI agents that operate HPC systems. It scores agents on HPC
operational tasks against deterministic environment snapshots with mock HPC
tools.

How does AOBench evaluate HPC agents?
Each task runs an agent (via an adapter) against a deterministic snapshot with
mock SLURM, telemetry, docs, RBAC, and facility tools. AOBench records the full
execution trace and scores it across seven dimensions — outcome correctness,
tool-use correctness, governance/RBAC, grounding, robustness (pass^k), and
efficiency — then aggregates results into a CLEAR scorecard (Efficacy,
Assurance, Reliability, Cost, Latency).

How is AOBench different from general LLM-agent benchmarks?
General benchmarks measure broad assistant, reasoning, tool-use, or
software-engineering ability. AOBench is domain-specific to HPC operations,
enforces role-based access control (permission violations hard-fail), and scores
the whole trace rather than only the final answer.

Do I need a live HPC cluster to run AOBench?
No. AOBench runs entirely against deterministic snapshot bundles and mock tools,
so it is portable and safe to publish.

Which agents and models can I evaluate?
Any model reachable through the openai, anthropic, or mcp adapters, plus a
tool-free direct_qa baseline for reference.

Documentation

📖  mskazemi.com/aobench

The full documentation site — searchable, versioned, and always built from main.
Everything below is also on it, rendered better.

Start here

Page What it gives you
🚀 Quickstart Clean machine → first scored task in five minutes
⚙️ Installation Package, Docker image, Compose stack, extras
🤖 Evaluate your own agent Plug your system in behind an adapter
💻 CLI reference Every command and flag

Understand the benchmark

Page What it gives you
🧭 Framework overview Principles and scope
🏗️ System architecture Components, data flow, scoring pipeline
📐 Scoring dimensions What each of the 7 weighted dimensions measures
🗂️ Task catalog · Environment catalog Generated inventories of all 88 tasks and 29 environments
🧪 Environments · M100 ExaData Snapshot format, and the real Marconi100 bundles

For researchers

Page What it gives you
📋 Datasheet · Benchmark card Provenance, composition, intended and out-of-scope use
⚖️ Limitations · Comparison What AOBench cannot measure, and how it differs
🔁 Reproducing results · Versioning What is pinned, and when scores are comparable
📚 Cite AOBench · Related work BibTeX and the verified bibliography

In this repository

ROADMAP ·
CHANGELOG ·
CONTRIBUTING ·
GOVERNANCE ·
SECURITY ·
Developer guide

Source: github.com/MSKazemi/aobench ·
Mirror: gitlab.com/mskazemi/aobench

AOBench-QA

The benchmark/qa/ directory embeds the AOBench-QA dataset — ~95 HPC
operational queries with role-specific variants and structured taxonomies. It
is consumed by the direct_qa baseline and seeds task design for the v1 HPC
task set.

Contributing

Contributions are welcome, and the project is set up so you can start without
asking permission first.

You do not need a cluster, a GPU, or an API key. The whole benchmark runs against
frozen snapshots on a laptop, and the direct_qa adapter needs no model provider.

The two most valuable contributions are data, not code:

  • 📝 Write a task — 26 of the 50
    QCAT × role cells have only one task, so the benchmark cannot tell "understands the
    category" from "got lucky". One JSON file against an existing snapshot.
    Guide: adding a task.
  • 📊 Run a model and submit the numbers
    independent results are what make a benchmark credible rather than a claim.
    Negative results are more useful than good ones.

Other places to start, easiest first:

If you want to… Start here
Fix something small and well-specified Good first issues — each one names the files to touch, the tests to write, and an honest time estimate
See the whole map #20 — Start here: where to contribute
Report a bug or ask for a feature Open an issue
Ask a question or propose an idea Discussions — questions are welcome and expected
Add a task or an environment CONTRIBUTING.md § How to Add a Task
Point a coding agent at this repo AGENTS.md — architecture, commands, invariants
Report a security issue SECURITY.md — please don't open a public issue

From clone to green tests in three commands:

git clone https://github.com/MSKazemi/aobench && cd aobench
make install     # creates .venv and installs everything
make test        # ~1510 tests should pass

What you can expect from us: a first response within 3 working days — even if
that response is just "seen, I'll look properly on Friday". If a PR of yours goes
quiet for over a week, ping it; that's our failure, not rudeness on your part.

What helps us: PRs under ~300 changed lines. Bug fixes, docs, tests, examples
and new CLI flags need no prior discussion — just send them. Open an issue first
only if you're changing the task schema, the scoring weights, the RBAC model, or
a public CLI signature.

Every merged contribution earns a line in AUTHORS.md and a place on the
contributor wall, whatever its
size — including reviews, docs, and corpus work. AI assistance is welcome; see
CONTRIBUTING.md § Using AI assistance.

You do not need HPC access or a cluster to contribute. The whole benchmark runs
against frozen snapshots on a laptop, and the direct_qa adapter needs no API key.

See CONTRIBUTING.md for the full guide and
CODE_OF_CONDUCT.md for community expectations.

Citation

If you use AOBench in your research, please cite it — and please cite the version
you actually ran
, since the task corpus and scoring profiles change between minor
versions.

  • How to cite — BibTeX, the
    four fields to report alongside any score, and when to also cite the ExaData dataset.
  • Reproducing results
    what AOBench pins, what it cannot pin, and how to re-derive a published number.

Machine-readable metadata is provided in three formats, all kept in sync:
CITATION.cff (GitHub renders a "Cite this repository" button from it),
codemeta.json (CodeMeta 3.0, for research-software registries), and
.zenodo.json (archival deposition metadata).

Seyedkazemi Ardebili, Mohsen. AOBench: A Trace-Driven, Role-Aware Benchmark for
Agent Operations in Realistic Environments. https://github.com/MSKazemi/aobench

The source is mirrored at https://gitlab.com/mskazemi/aobench.

Other projects by the same author

  • KubeIntellect — a human-governed AI SRE for
    Kubernetes. Investigates with real tools, then pauses for your approval before it changes
    anything. Peer-reviewed, Journal of Grid Computing (2026).
  • YazSes — offline voice dictation for Linux, macOS
    and Windows. Hold a key, speak, release; speech-to-text runs on your own CPU and nothing is
    sent to a server. Apache-2.0, and good first issues are tagged and
    waiting
    .

License

Apache 2.0 — see LICENSE.

Reviews (0)

No results found