Skip to main content
ageval: Write your agent eval once. Run it anywhere.

ageval

English · 简体中文


stars release CI license docs install uv demo

Table of contents

TOC


How to avoid rewriting scaffolds for the huge set of agent runtime × model × environment combinations?

ageval keeps one stable Core and swaps the agent under test and the environment through plugins. Install the CLI and skills so a coding agent can design or convert a benchmark and finish the eval; after results land on the Hub, datasets, plugins, and Agent packages can be shared or reused publicly.

Getting started

uv tool install ageval-cli
# install everything, or only what you need
uv tool install 'ageval-cli[all]' # every CLI extra (not the Hub service)
uv tool install 'ageval-cli[e2b]' # one extra at a time

ageval -V

Run a dataset straight from the Hub, or any local dataset root:

ageval registry list                        # datasets visible on the Hub
ageval run official/minimal-demo@0.1.3 --task terminal-jsonl-agg
ageval run <org>/<name>@<version> --task <task-id>
ageval executors -v
ageval view <org>/<name>@<version> --no-browser

Install skills

Install skills for your local coding agent (CLI usage, plugins, dataset authoring, and more):

# install all
npx skills add ZJU-REAL/ageval
# install specific ones
npx skills add ZJU-REAL/ageval --skill ageval-cli

Develop from source

To try the in-repo dataset examples and Agent catalog packs, or to build from source, clone the repo:

git clone https://github.com/ZJU-REAL/ageval.git
cd ageval
uv sync --frozen --all-packages
uv run ageval -V

Run the in-repo minimal example and inspect the results in the local Viewer:

uv run ageval tasks examples/datasets/minimal-demo
uv run ageval run  examples/datasets/minimal-demo --task terminal-jsonl-agg
uv run ageval view examples/datasets/minimal-demo --no-browser

Features

Quickly switch the agent under test

Environments and agent runtimes both plug in. The default path is ACP; nooa, dsh, and miniswe use the same plugin path. Change one line in profiles.yaml, or pass --agent for a one-off switch.

Let the Agent run the eval

With the CLI and skills installed, a coding agent can author or convert a dataset and run the eval end to end. Afterwards, ageval view replays the trajectory locally: phase timing, tool calls, and a reproduce command for failed tasks. See Getting started.

Share and reuse on Hub

Upload datasets, plugins, Agent packages, and results to ageval Hub. Leaderboard scores name the Agent and environment used; pull a published Agent with --agent; compare models side by side.

Screenshots

Plugin marketplace Compare models on Hub
Plugin marketplace: environment and agent runtime plugins Compare models under one Agent on Hub
More screenshots

nooa plugin: NVIDIA's official agent runtime

nooa plugin detail: NVIDIA official agent runtime

Leaderboard: scores bound to environment and Agent

Hub leaderboard: scores for environment and Agent combinations

Models Hub: success rate and cost by model

Models Hub: panorama of models across datasets and Agents

Model detail: one model across datasets and Agents

Model detail: performance on each dataset and Agent

How it works

End-to-end flow

  1. ageval lock resolves the plugin graph (ExtensionGraph), checks capabilities and credentials, and writes lock.json (secrets stay locators).
  2. ageval run opens an environment and uploads task files (local / Docker / E2B, …).
  3. run.py drives the task loop inside that environment; swapping env or Agent does not require editing this file.
  4. Only evaluator.py can return PASS; gold uploads after the run; cleanup always runs.
%%{init: {"theme":"base","themeVariables":{"actorBkg":"#eaf1ff","actorBorder":"#5B7BFF","actorTextColor":"#10233f","actorLineColor":"rgba(45,49,66,0.2)","signalColor":"#4f5d75","signalTextColor":"#2d3142","labelBoxBkgColor":"#eaf1ff","labelBoxBorderColor":"#5B7BFF","labelTextColor":"#10233f","noteBkgColor":"#f1f5f9","noteBorderColor":"#64748b","noteTextColor":"#1e293b"}}}%%
sequenceDiagram
    autonumber
    actor u as you
    participant r as run entry
    participant e as Environment<br/>local / docker / e2b…
    participant t as run.py + Agent
    participant v as evaluator.py

    u->>r: ageval lock<br/>dataset + profiles → lock.json
    Note over r: the check fails — the run does not start
    u->>r: ageval run
    r->>r: mint run identity
    r->>e: open one environment
    r->>e: upload task files
    e->>t: execute run.py
    loop task loop
        t->>t: ACP invoke · attach_stdio
    end
    t-->>r: trajectory.jsonl
    Note over r,v: run ends → gold uploads, then evaluation
    r->>v: run evaluator.py
    v-->>r: PASS / FAIL / ERROR
    r->>r: record · finally cleanup<br/>lock.json · result.json · trajectory.jsonl

Core base

ageval Core is a fixed five-phase pipeline: lock → environment → run → evaluate → record. Inputs are the user, dataset, and profiles; outputs land in evidence (lock.json, result.json, trajectory.jsonl). At ageval lock, one environment plugin and one Agent plugin are bound. Before the run starts, limits cap wall-clock time, memory, process forks, and call counts; cleanup always runs. Swapping an Agent or an environment does not require changing Core.

ageval Core base overview

Plugins

Core does not hard-code a particular Agent or environment. Plugins declare what they provide and what capabilities they need; ageval lock resolves a dependency graph (ExtensionGraph), and later dispatch follows that graph.

# Agent plugin (e.g. dsh)
plugin_id: dsh
slots:
  exclusive:
    - id: executor
inject:
  - service: environment
    capabilities: [exec, upload]

# Environment plugin (e.g. docker)
plugin_id: docker
slots:
  exclusive:
    - id: environment

Plugin mechanism: dependency graph drives Core dispatch

Project structure

ageval/
├── src/ageval/
│   ├── cli/                         # argv, help, exit code
│   ├── application/
│   │   ├── composition.py           # sole production wiring; CLI imports build_* here
│   │   ├── lock.py                  # load_and_lock
│   │   ├── run.py                   # mint identity → run_attempt
│   │   ├── campaign.py / suite/     # matrix · suite · Always-k
│   │   └── agent_ops/ / plugin_ops / registry_ops/
│   ├── attempt/                     # Attempt pipeline
│   │   ├── __init__.py              # run_attempt
│   │   └── phases/                  # environment → run → evaluate → record · cleanup
│   ├── config/                      # dataset + task.yaml + profiles
│   ├── environments/protocol.py     # EnvironmentProvider · caps; no vendor SDK
│   ├── plugins/
│   │   ├── slots.py                 # exclusive / chain
│   │   └── contrib/                 # acp · local · docker/attempt (official base, in the wheel) · e2b · daytona · ssh
│   ├── runtime/                     # identity, parent Agent Service, task_worker
│   ├── evaluation/                  # bind PASS
│   └── evidence/                    # trajectory.jsonl layout
├── src/ageval_sdk/                  # ageval_sdk for run.py (no PASS, no host credentials)
├── plugins/                         # external ageval.plugin/1 (nooa, dsh, miniswe, …)
├── examples/
│   ├── datasets/
│   │   ├── minimal-demo/            # terminal-jsonl-agg · tau2-dialog-min · multiagent-env-min
│   │   └── tau3-airline-5/            # airline-00 … airline-04
│   └── agents/                      # ageval.agent/1
├── apps/viewer                      # ageval view SPA
├── apps/hub                         # Hub SPA
├── services/registry/               # package + results HTTP
├── docs/                            # mechanism design
└── website/                         # product docs

Docs

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ageval_cli-0.7.3.tar.gz (9.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ageval_cli-0.7.3-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

Details for the file ageval_cli-0.7.3.tar.gz.

File metadata

  • Download URL: ageval_cli-0.7.3.tar.gz
  • Upload date:
  • Size: 9.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for ageval_cli-0.7.3.tar.gz
Algorithm Hash digest
SHA256 2c6d1ea937bd0d60664d45ee15e28cbdddb0b703a360a2ec5560bf38f9fd0347
MD5 032c0257835c5728ada4669167fe84fe
BLAKE2b-256 76412f53c85a735299dae6f47703d994769e748cdf453e5090994d94abd528e4

See more details on using hashes here.

File details

Details for the file ageval_cli-0.7.3-py3-none-any.whl.

File metadata

  • Download URL: ageval_cli-0.7.3-py3-none-any.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for ageval_cli-0.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 db7615cdf41c5b058d45478fd06d3b5d420e62b0c46b498d252bd2c89a4ed011
MD5 72819581bf3db3fec815a927bc2d09b7
BLAKE2b-256 cf0702d986ad465f61d05acff812a102d001a18e81bfb2f0ea254aec802b9a90

See more details on using hashes here.

Release history Release notifications | RSS feed

0.8.1

2 files

0.8.0

2 files

This release

0.7.3 This release

2 files

0.7.2

2 files

0.7.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page