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
- [Installation](https://cmu-l3.