Run Benched benchmark suites in an existing local environment, Docker or Podman container, or ephemeral Hetzner Cloud server.
Laxate owns environment and machine orchestration. Benched owns pytest-benchmark execution, durable history, comparison, and static reports. Neither tool constructs a matrix implicitly: select or prepare one environment, then record it.
pip install laxate
pip install "laxate[hetzner]" # optional cloud providerAdd [tool.benched] configuration and pytest-benchmark tests to the target project,
then run:
laxate run local
laxate run local --quick --machine workstation
laxate compare previous latest
laxate publish
laxate previewThe project directory is bind-mounted at the same absolute path. Initialization commands must install the project and Benched into the container:
laxate run docker \
--image python:3.12 \
--init-command "pip install -e ." \
--machine docker-3.12Use --engine podman for Podman and repeat --mount for additional bind mounts.
Configure benchmark_repo in [tool.laxate], export HCLOUD_TOKEN, and register the
SSH public key named by --ssh-key-name:
laxate run hetzner \
--server-type cx23 \
--ssh-key ~/.ssh/hetzner_key \
--ssh-key-name benchmarks \
--branch main \
--python-version 3.12 \
--pushThe runner clones the selected benchmark-suite branch, creates its Python environment,
runs the repository's make benchmark target, and collects the configured results
directory.
See CLI and configuration reference for every option.
Historical ASV files are not executed. Projects migrating old results can call
benched import-asv once before using Laxate's Benched workflow.