⚖️ 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 and standardized cross-provider parity checks. Immutable
parity profiles pin the original authority, exact checks, full workload, and quick
development workload. Both parity and benchmark runs produce portable,
self-verifying evidence.
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 turbobench-cli 2.0.0 from PyPI:
uv tool install turbobench-cli==2.0.0
Alternatively, install it in an active virtual environment with
python -m pip install turbobench-cli==2.0.0. 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 turbobench profiles list and turbobench providers list to choose a
compatible profile and provider pair. Prefix CLI commands with uv run when
working from a development checkout.
Commands
turbobench doctor vizdoom/basic-v1 # check the host, tools, and profile assets
turbobench profiles list # list immutable workloads
turbobench providers list # list built-in and registered providers
turbobench parity supermario/canonical-v2 \
--candidate env-supermariobrosnes-turbo-emu@checkout:/absolute/path/to/repo \
--allow-dirty --quick # test current work diagnostically
turbobench parity vizdoom/basic-v2 \
--candidate env-vizdoom-turbo@artifact:/absolute/path/to/final.whl \
--output turbobench-parity/vizdoom # certify the exact final wheel
turbobench verify-parity turbobench-parity/vizdoom --require-canonical
turbobench compare vizdoom/basic-v1 \
--left env-vizdoom-turbo@1.3.0.post27 \
--right vizdoom@1.3.0 \
--output turbobench-results/vizdoom # create a result bundle
turbobench compare breakout/start-v3 \
--left env-breakoutatari2600-turbo-native@VERSION \
--right stable-retro@1.0.1 \
--output turbobench-results/breakout-vs-stable-retro
turbobench compare breakout/start-v3 \
--left env-breakoutatari2600-turbo-native@VERSION \
--right env-stableretro-turbo@VERSION \
--output turbobench-results/breakout-vs-stable-retro-turbo
turbobench verify turbobench-results/vizdoom # verify integrity and consistency
turbobench report turbobench-results/vizdoom # print the generated report
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. - Current performance profiles cover
supermario/canonical-v1,breakout/start-v3, andvizdoom/basic-v1. Historical profiles remain available for verifying their existing result bundles. Shapes 1, 16, and 32 are measured and reported independently. - Provider references accept
provider,provider@latest,provider@VERSION,provider@artifact:/absolute/path.whl, andprovider@checkout:/absolute/path.latestexcludes prereleases, yanked releases, incompatible artifacts, and releases still inside the seven-day quarantine. - Set
TURBOBENCH_ROM_PATH,TURBOBENCH_ASSET_ROOT, orRETRO_DATA_PATHto locate required local game payloads. ROMs and local paths are never written to portable bundles; only canonical digests are recorded. - The
breakout/start-v3profile compares the Atari 2600 BreakoutStartworkload against either original Stable Retro or Stable Retro Turbo. ReplaceVERSIONwith an exact release, use@latest, or select a clean checkout with@checkout:/absolute/path. - 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.
- Exact release parity accepts only the final local wheel on the chosen canonical host. Checkout snapshots include tracked edits and nonignored untracked source, so developers do not need to commit before running a quick diagnostic check.
- Turbo providers are preflighted against the normative Turbo Vector API v2 contract. Contract reports are hash-bound into result bundles; malformed v2 providers stop before any workload, while historical v1 providers remain diagnostic-only.
- Result bundles contain the exact provider lock, shape-local statistics, report, chart, raw
evidence, verification records, and optional media.
manifest.jsonbinds 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.providersentry-point group.
Architecture
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file turbobench_cli-2.0.4.tar.gz.
File metadata
- Download URL: turbobench_cli-2.0.4.tar.gz
- Upload date:
- Size: 2.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab3d078342b4dc37fac9d958ed7d2a7a614a924ddfefb69d840402c5d95e45e2
|
|
| MD5 |
207d4b80f2025105732cf993bbdc8615
|
|
| BLAKE2b-256 |
ed38e36af6c3dab03c93021ec82eba49e27d929c4644c58b96d70f4b67536d3e
|
Provenance
The following attestation bundles were made for turbobench_cli-2.0.4.tar.gz:
Publisher:
release.yml on tsilva/turbobench
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turbobench_cli-2.0.4.tar.gz -
Subject digest:
ab3d078342b4dc37fac9d958ed7d2a7a614a924ddfefb69d840402c5d95e45e2 - Sigstore transparency entry: 2679612695
- Sigstore integration time:
-
Permalink:
tsilva/turbobench@e0b4b940ed130c5830548a47835e940c312a567f -
Branch / Tag:
refs/tags/turbobench-cli-v2.0.4 - Owner: https://github.com/tsilva
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e0b4b940ed130c5830548a47835e940c312a567f -
Trigger Event:
push
-
Statement type:
File details
Details for the file turbobench_cli-2.0.4-py3-none-any.whl.
File metadata
- Download URL: turbobench_cli-2.0.4-py3-none-any.whl
- Upload date:
- Size: 93.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3f62a35ba8db3a5aa2075b4e5998253425f9653ebe4f2c363f72709b4611c81
|
|
| MD5 |
cde710c1dde33ce65df180006230c1c4
|
|
| BLAKE2b-256 |
22ec17ff3767512def0b8ed2b93e9d9e6fce9338cd8a6b95c65b0ff64f2f601c
|
Provenance
The following attestation bundles were made for turbobench_cli-2.0.4-py3-none-any.whl:
Publisher:
release.yml on tsilva/turbobench
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turbobench_cli-2.0.4-py3-none-any.whl -
Subject digest:
c3f62a35ba8db3a5aa2075b4e5998253425f9653ebe4f2c363f72709b4611c81 - Sigstore transparency entry: 2679612753
- Sigstore integration time:
-
Permalink:
tsilva/turbobench@e0b4b940ed130c5830548a47835e940c312a567f -
Branch / Tag:
refs/tags/turbobench-cli-v2.0.4 - Owner: https://github.com/tsilva
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e0b4b940ed130c5830548a47835e940c312a567f -
Trigger Event:
push
-
Statement type: