Skip to main content

Prerequisites

  • Python 3.11+
  • Node.js 18+ (only for Agent-TARS)
  • uv (recommended Python package manager)

Installation

1

Clone the repository

2

Install Python dependencies

Activate the venv so bubench is on PATH:
Windows PowerShell:
bubench run will create the agent venv defined in config.yaml (built-in defaults: .venvs/browser_use, .venvs/skyvern, .venvs/agent_tars) and install the matching dependencies on first use. Agent venv must be configured explicitly (no fallback to .venv). If uv is not available, creation/install falls back to python -m venv and pip.
3

Configure environment (.env)

Edit .env.env.example is the source of truth; keys below are the common ones. $VAR placeholders in config.yaml are resolved from this file at runtime.
Lexmount credentials: Apply for LEXMOUNT_API_KEY and LEXMOUNT_PROJECT_ID at browser.lexmount.cn (mainland China) or browser.lexmount.com (international). See Lexmount Cloud Browser for the full setup.
4

Configure config.yaml

The root config.yaml is the canonical runtime config. $VAR placeholders are resolved from .env at runtime. Three parts to set up:1. Agent (model) — pick the active model for each agent under agents.<agent>:
Override the active model per run with --model <name> — no need to edit the file.
2. Browser backend — set browser_id under agents.<agent>.browser. Only one backend is active at a time; fill in its required keys and leave others commented:
See Local Chromium Browser and Lexmount Cloud Browser, plus each agent’s page, for backend-specific options. Important: the local Chromium does NOT pick up your OS / clash / v2ray proxy — set local_proxy_server if you need to reach sites the bare-connect can’t (e.g. bloomberg.com, archive.org).3. Eval model — used by bubench eval for LLM-as-judge scoring:
5

Install Agent-TARS CLI (optional)

6

Install skills (optional)

Quick Run

Run your first benchmark

Add --dry-run to validate config loading and task resolution without executing tasks:
--dry-run checks that config.yaml / .env parse cleanly and that at least one task matches your --data / --split / --mode. It does not create the agent venv, call model APIs, or open a browser — those only happen on a real run.

Evaluate results

--model-id tells eval which output subdirectory to score (experiments/<benchmark>/<split>/<agent>/<model_id>/). Omitting it falls back to the model_id of agents.<agent>.active_model in config.yaml, matching what bubench run writes by default.
Logs: Script execution logs are saved in output/logs/.
  • run.py: output/logs/run/
  • eval.py: output/logs/eval/
  • leaderboard: output/logs/leaderboard/

Generate leaderboard

Run Modes

Note: --task-ids expects a space-separated list.

Common Parameters

Additional flags:
  • --data-source: local or huggingface.
  • --force-download: Force re-download in HuggingFace mode.
  • --agent-config: Optional path to an alternate root-config YAML (same shape as config.yaml). Defaults to repo root config.yaml.
  • --timestamp: Resume or run in a specific directory (YYYYMMDD_HHmmss).
--timeout overrides TIMEOUT in the agent config.

Resume an Interrupted Run

If a run is interrupted, use --timestamp to point to the same output directory and --skip-completed to skip tasks that already have results:
Tip: Find your timestamp under experiments/{benchmark}/{split}/{agent}/.

Running Multiple Agents in Parallel

bubench run uses the venv specified by the agent entry in config.yaml and will auto-create/install dependencies on first use. By default each built-in agent has a dedicated venv:
  • browser-use -> .venvs/browser_use
  • skyvern -> .venvs/skyvern
  • Agent-TARS -> .venvs/agent_tars
If an agent entry does not define venv, bubench run exits with an error instead of falling back to .venv. If you need to run conflicting agents at the same time, open two terminals and run each agent with its own venv.

Parallel Task Execution (Split by Task IDs)

To speed up a large benchmark, split tasks across multiple terminals using --mode specific --task-ids:
Use the same --timestamp in both terminals to write results to the same output directory.

Node.js Agents (No Conflicts)

Agent-TARS runs via a Node.js CLI and does not share Python dependencies with other agents. You can run it in any terminal after installing the CLI.

Next Steps

Supported Agents

Explore available browser agents

Benchmarks

Learn about each benchmark

Cloud Browser Setup

Configure Lexmount cloud browser

View Leaderboard

Compare agent performance