StackMap
Subscribe
Explore / gym-anything
cmu-l3

gym-anything

CMU framework that turns real software — browsers, IDEs, EMRs, CAD — into standardized agent environments: start the app, hand the agent a task, score it with automatic verifiers.

258 38 Shell MITupdated 2 days ago
Curator's take

The missing middle layer for computer-use agents: a Core runtime (environment lifecycle, actions, observations, verifiers), a benchmark collection wrapping real applications like Moodle, and reference agents (Claude, Gemini, Qwen, Kimi) — three parts connected by contracts, each independently replaceable, one CLI to run it all. The `doctor` setup command and environment caching signal real operational care. Use it to evaluate your CUA agent beyond browser-only benchmarks, or to gym-ify internal software by adding a task folder with a setup script and a checker. NOT an agent framework — the agents are references, bring your own. Young (arXiv 2026, CMU L3): environment coverage is the current bottleneck.

Mapped by ShipWithAI editors · links verified
README.md

Gym-Anything: Turn Any Software into an Agent Environment



Gym-Anything lets you test AI agents on real software — browsers, IDEs, medical records systems, CAD tools, and more — through a standard environment API.

Quickstart

# 1. Install (we recommend uv: https://docs.astral.sh/uv/)
uv venv --python 3.12
source .venv/bin/activate
uv pip install -e ".[all]"

# 2. Check what's available on your machine, and help you set up the rest.
gym-anything doctor

# 3. Run an environment interactively
gym-anything run moodle --task enroll_student -i --open-vnc

Run A Benchmark End To End

Pick an environment, pick a task, pick an agent:

gym-anything benchmark moodle --task enroll_student --agent ClaudeAgent --model claude-opus-4-6

This starts the Moodle environment, resets it, hands the task to the agent, lets the agent interact with the application through screenshots and mouse/keyboard actions, and runs the automatic checker when the agent finishes.

To run across many tasks at once:

gym-anything benchmark moodle --agent ClaudeAgent --model claude-opus-4-6 --split test

Recommended: To run with default caching for the software, which is much faster for subsequent runs:

gym-anything benchmark moodle --task enroll_student --agent ClaudeAgent --model claude-opus-4-6 --use-cache --cache-level default

Three Independent Components

The framework is built around three parts that connect through shared contracts but can each be used or replaced independently:

                  ┌──────────────┐
                  │     Core     │
                  └──┬───────┬───┘
                   ▲ │       │ ▲
                   │ ▼       ▼ │
       ┌───────────┴─┐     ┌──┴────────────┐
       │  Benchmarks │◄───►│    Agents     │
       └─────────────┘     └───────────────┘
  • Core (src/gym_anything/) — the runtime that starts environments, sends actions, captures observations, and runs verifiers.
  • Benchmarks (benchmarks/cua_world/) — a ready-made collection of environments and tasks. Each environment wraps a real application; each task defines a specific job, a setup script, and an automatic checker.
  • Agents (agents/) — reference agent implementations (Claude, Gemini, Qwen, Kimi, and others). Bring your own or use ours.

You can use Core alone with your own environments. You can plug any agent into the benchmarks. You can write a new benchmark without touching agent code.

Contributing

We welcome contributions — new tasks, new environments, bug fixes, and new agent implementations.

The simplest way to contribute is to add a new task to an existing environment. Each task is self-contained in its own folder with a description, a setup script, and a verifier. See the docs on tasks and checks for how these are structured.

If you want to contribute a new environment or agent, start by reading the contributing guide.

Where To Read Next

Continue your stack

What teams reach for next — and why each earns a place beside gym-anything. Ranked by curator confidence.