BenchDB

A self-hosted server for benchmark results.

Your harness writes JSON and the benchdb CLI uploads it. BenchDB keeps each benchmark's history on each machine, charts it in a dashboard, and reports regressions on pull requests. It is built for teams that benchmark every commit or release.

Any language that writes JSON · Go and PostgreSQL · MIT license

BenchDB trend chart for one benchmark on two machines, with rolling means, 2σ bands, and a step change detected at one commit
The BenchDB dashboard with seeded demo data.
InputStructured JSON
ServiceGo and PostgreSQL
InterfacesWeb, CLI, and OpenAPI
LicenseMIT

How it works

You run the benchmarks. BenchDB stores and compares the results.

01

Run your own harness

BenchDB does not run benchmarks. Use any framework, on CI runners, dedicated machines, or a laptop, and write each result as JSON.

02

Upload with the CLI

benchdb results submit sends each result with its run, commit, machine, and unit. If an upload fails, rerun it on the saved files instead of rerunning the benchmark.

03

Read the trends and CI report

The dashboard charts each benchmark per machine. benchdb ci report flags a result only when it falls outside the benchmark's recent range, moves more than 2% from the baseline, and is larger than a minimum change you can set per benchmark (30 ms for timings by default).

Result history

Every result keeps its commit, run, and machine.

Each result stores its benchmark case, run, commit, machine, unit, and raw values. From a regression you can open the result, its run, and its history without searching CI logs.

Browse and compare results →
R
RunDid the whole run upload, and did any benchmark error?
#
ResultWhat was measured, on which machine, and what were the raw values?
↗
SeriesHow has this benchmark moved over time on each machine?
✓
CI reportDid the commit make each benchmark slower, faster, or neither?

Interfaces

Use the browser, CLI, or API.

CLI

Command-line client

Submit results, run CI reports, compare two results, list series, and export a history as CSV.

API

OpenAPI

Call the HTTP API from any language or generate a client from the OpenAPI document. A Go client ships in the repository.

WEB

Dashboard

Browse runs, benchmarks, per-machine trends, single results, and comparisons.

ALERT

Scheduled alerts

Schedule benchdb admin alerts evaluate and deliver in your own job runner. Alerts go to webhooks, Slack, GitHub, or email.

Quickstart

Upload your first result.