Skip to main content

agentarena

Race your AI agents. Any agent, any task, your data.

CI PyPI version Python 3.11+ License: MIT

$ agentarena run

 agentarena v0.1.0 — racing 3 agents on 3 tasks
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 Task 1/3: fix-type-error
   claude-code ····· PASS   15s   $0.08   4.2K tokens   2 calls
   aider ··········· PASS   23s   $0.14   8.7K tokens   5 calls
   codex ··········· PASS   31s   $0.21  12.1K tokens   8 calls

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 RESULTS
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

              Pass Rate   Avg Time   Avg Cost   Total Tokens
 claude-code  3/3 100%      45s       $0.20       34.6K
 aider        2/3  67%      69s       $0.35       65.2K
 codex        2/3  67%      71s       $0.42       82.2K

 Winner: claude-code (highest pass rate, lowest cost)

Why agentarena?

Every company building AI is asking the same question: which agent actually works best?

Today that answer is opinions, blog posts, and vibes. Your manager asks for a POC — you spend two weeks manually testing three tools and write a Google Doc that says "I think Claude was better."

agentarena gives you hard numbers in 30 minutes:

Who you are What you get
Developer picking a tool Run agents on YOUR codebase, see which passes more tests, costs less, runs faster
Team doing a POC One command, one report — give your manager data, not opinions
Agent builder Prove your agent beats competitors with reproducible benchmarks
Company evaluating vendors Compare digital workers on your actual workload

Inspired by the ActionEngine paper which found 11.8x cost differences and 5.67x token usage variance between agent architectures on identical tasks. agentarena makes these differences visible on your own data.

Install

pip install agentarena

Quick Start

1. Create a bench.yaml in your project:

agentarena init

2. Define your tasks and agents:

project: my-app
timeout: 120

tasks:
  - name: fix-type-error
    prompt: "Fix the TypeScript type error in src/auth/login.ts"
    validate: "npx tsc --noEmit"

  - name: add-pagination
    prompt: "Add offset/limit pagination to GET /api/users endpoint"
    validate: "bun test test/api/users.test.ts"

agents:
  - name: claude-code
    command: "claude --print --max-turns 10 '{prompt}'"
    patterns:                                          # optional: extract metrics
      tokens_in: "input tokens:\\s*([\\d,]+)"
      tokens_out: "output tokens:\\s*([\\d,]+)"
      cost: "cost:\\s*\\$?([\\d.]+)"

  - name: aider
    command: "aider --message '{prompt}' --yes-always --no-git"

  - name: my-custom-agent                              # any CLI tool works
    command: "my-tool run '{prompt}'"

3. Run the race:

agentarena run

How It Works

For each task x agent combination:

  1. Creates a clean sandbox (git worktree for code repos, temp directory for anything else)
  2. Runs the agent CLI with your prompt
  3. Runs your validation command (tests, typecheck, lint — anything with an exit code)
  4. Collects metrics: wall time, tokens, cost, LLM calls, pass/fail
  5. Cleans up the sandbox

Works with any project — git repos, plain directories, any language, any domain.

CLI

agentarena run                          # Race all agents on all tasks
agentarena run --task fix-type-error    # Run specific task
agentarena run --agent claude-code      # Run specific agent
agentarena run --json                   # Export as JSON
agentarena run --csv                    # Export as CSV
agentarena run --md                     # Export as Markdown
agentarena init                         # Create starter bench.yaml
agentarena history                      # List past runs

Metric Extraction

agentarena uses regex patterns defined in your config to extract metrics from agent output. No code changes needed for new agents:

agents:
  - name: my-agent
    command: "my-agent '{prompt}'"
    patterns:
      tokens_in: "Input:\\s*(\\d+) tokens"        # regex with one capture group
      tokens_out: "Output:\\s*(\\d+) tokens"
      cost: "Total:\\s*\\$([\\d.]+)"
      llm_calls: "(\\d+) API calls"

No patterns? agentarena still measures wall time and pass/fail — works for any tool.

Examples

See examples/ for ready-to-use configs:

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

MIT

Release files for agentarena 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentarena 0.1.0
File Size Uploaded
agentarena-0.1.0.tar.gz 29.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agentarena 0.1.0
File Interpreter ABI Platform
agentarena-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 48.3 kB

Release files / agentarena-0.1.0.tar.gz

Download URL agentarena-0.1.0.tar.gz
Size 29.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ec5bcfde27c1e56bd37dcad5f94ef1b23c69bb0807a3e8e343dc2078915f5115
BLAKE2b-256 checksum
How to use checksums
52f0b27a741fbd784e3aa94341e25c595819c0afcbdcc41f8cb3feab92497838
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 26, 2026.

Transparency log

Release files / agentarena-0.1.0-py3-none-any.whl

Download URL agentarena-0.1.0-py3-none-any.whl
Size 18.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ed5faee614f8dbc8abc37f15ef23be4d77fe63308e488df3b296081b60438982
BLAKE2b-256 checksum
How to use checksums
7497462765ec1a0d3c8cfe1cf8d96fcf45f9a2535572eeffbf918aee01e281b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 26, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release 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