Skip to main content
turbobench

⚖️ Matched environments. Measured fairly. ⚖️

turbobench is a local Python CLI for reinforcement-learning environment authors, researchers, and provider maintainers who need fair performance comparisons between compatible implementations. It verifies that two providers produce matching transitions before timing them, then writes a portable, self-verifying evidence bundle. Run it with a built-in workload profile and two provider references.

Optional comparison videos replay the same locked providers and semantic action trajectory. Only valid, conclusive evidence can produce unmarked promotional media; diagnostic output is clearly watermarked.

Install

Install the published CLI from PyPI with uv tool install turbobench-cli or pip install turbobench-cli. The installed command and Python import remain turbobench.

For a development checkout:

git clone https://github.com/tsilva/turbobench.git
cd turbobench
uv sync --frozen --group dev

Run uv run turbobench profiles list and uv run turbobench providers list to choose a compatible profile and provider pair.

Commands

uv run turbobench doctor vizdoom/basic-v1       # check the host, tools, and profile assets
uv run turbobench profiles list                 # list immutable workloads
uv run turbobench providers list                # list built-in and registered providers

uv run turbobench compare vizdoom/basic-v1 \
  --left vizdoom-turbo@1.3.0.post23 \
  --right vizdoom@1.3.0 \
  --output turbobench-results/vizdoom            # create a result bundle

uv run turbobench verify turbobench-results/vizdoom  # verify integrity and consistency
uv run turbobench report turbobench-results/vizdoom  # print the generated report
uv run turbobench promo turbobench-results/vizdoom --diagnostic

uv run --frozen ruff check .                    # lint the project
uv run --frozen pytest -m "not acceptance"      # run tests without proprietary assets

Long-running commands write progress to standard error and reserve standard output for their final machine-readable JSON.

Notes

  • The controller supports Python 3.11 and newer. Provider runtimes default to CPython 3.14. uv, FFmpeg, and FFprobe are required.
  • Built-in profiles cover supermario/canonical-v1, breakout/start-v1, and vizdoom/basic-v1. Shapes 1, 16, and 32 are measured and reported independently.
  • Provider references accept provider, provider@latest, provider@VERSION, and provider@checkout:/absolute/path. latest excludes prereleases, yanked releases, incompatible artifacts, and releases still inside the seven-day quarantine.
  • Set TURBOBENCH_ROM_PATH, TURBOBENCH_ASSET_ROOT, or RETRO_DATA_PATH to locate required local game payloads. ROMs and local paths are never written to portable bundles; only canonical digests are recorded.
  • Every official result must pass provider compatibility, matched correctness, system-load, alternating paired-measurement, statistical uncertainty, provenance, and asset gates. Quick runs and explicit overrides remain diagnostic.
  • Result bundles contain the exact provider lock, shape-local statistics, report, chart, raw evidence, verification records, and optional media. manifest.json binds every portable file by size and SHA-256; turbobench does not upload or publish bundles.
  • Official v1 hosts are Apple-silicon macOS and x86-64 Linux. Third-party providers can register through the turbobench.providers entry-point group.

Architecture

turbobench architecture

License

MIT

Download files

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

Source Distribution

turbobench_cli-1.0.1.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

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

turbobench_cli-1.0.1-py3-none-any.whl (72.4 kB view details)

Uploaded Python 3

File details

Details for the file turbobench_cli-1.0.1.tar.gz.

File metadata

  • Download URL: turbobench_cli-1.0.1.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for turbobench_cli-1.0.1.tar.gz
Algorithm Hash digest
SHA256 40dc811a649628b038d5ce8e7aa3f7ebe3d0e4c0f571268f53d47882f9d3f76c
MD5 ef403d02b506b5a29c19e8f98baa8dd3
BLAKE2b-256 5ac74642bb64ccdab99107e535a68ce94c91c7ccbe56c017e44f817dc5afefd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbobench_cli-1.0.1.tar.gz:

Publisher: release.yml on tsilva/turbobench

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbobench_cli-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: turbobench_cli-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 72.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for turbobench_cli-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8334594b0555a25480fb5f70c304bb6b40119f1efe2914ffd14bd00fea313e9e
MD5 9b7d7e415a5833117ad8159a22ed94c7
BLAKE2b-256 e86dbeb972198f016a9d3191322a14e40e323ae36ca4e498ea1cb842a2d1fb7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbobench_cli-1.0.1-py3-none-any.whl:

Publisher: release.yml on tsilva/turbobench

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

2.0.7

2 files

2.0.6

2 files

2.0.5

2 files

2.0.4

2 files

2.0.3

2 files

2.0.1

2 files

1.0.5

2 files

1.0.2

2 files

This release

1.0.1 This release

2 files

1.0.0

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