Overview
Bencher is a continuous benchmarking platform that helps systems software engineers catch performance regressions before they merge. How Bencher Works: 1. Run: Run your benchmarks locally or in CI using the exact same bare metal runners and your favorite benchmarking tools. The bencher CLI orchestrates running your benchmarks on bare metal and stores the results. 2. Track: Track the results of your benchmarks over time. Monitor, query, and graph the results using the Bencher web console based on the source branch, testbed, benchmark, and measure. 3. Catch: Catch performance regressions locally or in CI using the exact same bare metal hardware. Bencher uses state of the art, customizable analytics to detect performance regressions before they merge. For the same reasons that unit tests are run to prevent feature regressions, benchmarks should be run with Bencher to prevent performance regressions. Performance bugs are bugs!
Tools
create_branch
Claudecreate_measure
Claudecreate_report
Claudesubmit_run unless the branch and testbed are already known to exist.create_testbed
Claudecreate_threshold
Claudeparameters is the filter over variants, and a variant is checked when any entry in the filter is a subset of its parameters; the default checks every variant. metric names the metric the threshold checks and defaults to value. Every threshold that matches a metric row runs, so a row may earn several boundaries and several alerts.list_alerts
Claudelist_benchmarks
Claudelist_branches
Claudelist_jobs
Claudelist_measures
Claudelist_plots
Claudelist_projects
Claudebencher_run_), only that project is returned; with a user API key, all projects visible to the user are returned.list_reports
Claudeexpand is set to true.list_testbeds
Claudelist_thresholds
Claudeperf_image
Claudequery_perf, plus an optional title.query_perf
Claudebranches, testbeds, benchmarks, and measures are comma-separated lists of UUIDs; use the corresponding list tools to find them. start_time and end_time bound the results in milliseconds since epoch.submit_run
Clauderesults field takes the raw output of a benchmark harness as strings; the server parses them using the adapter in settings.adapter (defaults to magic auto-detection). Branch, testbed, and thresholds are created on the fly if they do not exist. Prefer the bencher run CLI when benchmarks are executed from a local checkout; use this tool when the results are already in hand.update_alert
Claudebencher_run_) can only update the alert status (e.g. acknowledge or dismiss).update_benchmark
Claudebencher_run_) cannot rename benchmarks.update_branch
Claudebencher_run_) cannot rename branches.update_measure
Claudebencher_run_) cannot rename measures.update_testbed
Claudebencher_run_) cannot rename testbeds.update_threshold
Claudeview_alert
Claudealert argument is an alert UUID.view_benchmark
Claudebenchmark argument accepts a benchmark slug or UUID.view_branch
Claudebranch argument accepts a branch slug or UUID.view_job
Claudejob argument is a job UUID.view_measure
Claudemeasure argument accepts a measure slug or UUID.view_metric
Claudemetric argument is a metric UUID.view_plot
Claudeplot argument is a plot UUID.view_project
Claudeproject argument accepts a project slug or UUID.view_report
Claudeview_testbed
Claudetestbed argument accepts a testbed slug or UUID.view_threshold
Claudethreshold argument is a threshold UUID.




