OpenChainBench is community-run. Anyone can submit a benchmark, fix a number, propose a methodology change. The web tutorial at /contribute walks through the steps; this file is the long-form reference. For a concrete end-to-end worked example, see docs/walkthrough.md.
benchmarks/ Self-contained YAML spec per benchmark
harnesses/ Open-source code for each benchmark runner (you host yours)
infrastructure/ Shared services. currently just one Prometheus
src/ The Next.js site that renders specs
scripts/ Validate + dry-run tooling
docs/ Methodology, ADRs, style guide
.github/ CI, issue templates, PR template
OpenChainBench is a federation. Each harness is hosted by whoever wrote it. the project shares only one Prometheus that scrapes every harness's public /metrics URL. You never share API keys with the maintainers.
| Goal | Right channel |
|---|---|
| Float a rough idea | Discussions → Ideas |
| Ask a methodology / harness question | Discussions → Q&A |
| Propose a benchmark formally | Issue → 📊 Propose a benchmark |
| Report a number that looks wrong | Issue → 🐞 Data quality |
| Submit a provider correction | Issue → ✏️ Provider correction |
| See what's planned | Roadmap project board |
- Open an issue with the 📊 Propose a benchmark template. Sketch the metric, providers, methodology, where you'll host the harness. get feedback before you write code. The issue lands in the
Requestedcolumn of the roadmap. - Write the spec. Drop a YAML at
benchmarks/<slug>.yml. The format is described inbenchmarks/README.mdand validated bysrc/lib/spec-schema.ts. - Build the harness at
harnesses/<slug>/. A harness is a data producer only. it exposes/metricsover HTTPS with the metric names and labels your spec references. Seeharnesses/README.mdfor the contract and the existing Go harnesses as reference implementations. - Deploy the harness on whatever infra fits. Railway, Fly, Cloud Run, a VPS. Expose
/metricsover HTTPS at a stable public URL. You own the runtime, the secrets and the budget. The maintainers never see your API keys. - Append a scrape job to
infrastructure/prometheus/prometheus.ymlpointing at your public URL so the shared Prometheus picks up your harness. Format documented ininfrastructure/README.md. - Open a PR referencing the issue (
Closes #N). CI runspnpm validate(schema lint),pnpm typecheck,pnpm lint, andpnpm build. Once green and reviewed, a maintainer merges, redeploys the central Prometheus to apply the new scrape job, and rebuilds the materialization worker (its image bakes the spec list at build time). The site serves the new bench on the next worker sweep + ISR cycle (≤ 2 min).
pnpm install
pnpm validate # schema-lint every spec in benchmarks/
pnpm spec:dry-run <slug> # query Prometheus and print numbers without rendering
pnpm dev # http://localhost:3000
pnpm build # production build- No pre-determined winners. Specs do not mark a "winner". The leader on every page is computed at render time from the lowest p50.
- Keep titles factual.
Bridge. End-to-End LatencynotThe Fastest Bridge of 2026. - Tail before mean. Headlines use p50 and p99. The arithmetic mean is reported in the table but never used as a takeaway.
- State the timeout. Failures are excluded from latency aggregates and counted toward success rate. Both numbers are reported.
- Write methodology before findings. A spec without methodology is rejected.
If you can't reproduce a number, file a provider correction (you measured a different value for your service) or a data quality issue (the site is showing something obviously wrong or stale). Material errors are corrected in place with a dated note on the report.
- Code of conduct. short, applies to all project spaces (issues, PRs, discussions).
- Security policy. private vulnerability reporting via GitHub advisories.
Code: MIT. Reports & figures: CC-BY-4.0.