The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the OpenChainBench listing page.
Open, reproducible benchmarks for crypto infrastructure. Aggregators, bridges, RPCs, oracles, price feeds, prediction markets, perp DEXes, cross-chain messaging. Same metric, same conditions, every provider. Live at openchainbench.com.
OpenChainBench publishes one benchmark at a time, each shipping with the harness that produces its data. The goal is to make performance an observable property of crypto infra, measured in the open, by anyone who wants to add a provider or a metric.
Community-run, MIT-licensed harnesses + CC-BY-4.0 data, PRs from any party including the providers we benchmark.
/metrics Prometheus endpointAdding a benchmark, writing a harness, or fixing a number: see CONTRIBUTING.md + the visual walkthrough at /contribute.
Every benchmark is licensed CC-BY-4.0 and exposed through endpoints designed for citation by journalists, devs, and AI agents:
| Endpoint | Audience | What it returns |
|---|---|---|
/llms.txt · /llms-full.txt | LLM crawlers | Plain-text index (short) + full Markdown context (long) per the llmstxt.org convention. |
/api/citable | Devs, agents | Flat JSON: every benchmark with current value, leader, headline sentence, citation URL, OG image URL. |
/api/stat/<slug> | Devs, agents | Single benchmark: full rankings, sparkline (24h), methodology, paste-ready quote, attribution URL. |
/api/cite/<slug>/<format> | Zotero, Mendeley, Perplexity | Citation in bibtex, apa, ris, or txt with the correct MIME type. |
/api/openapi.json | LangChain, custom GPTs, generic clients | OpenAPI 3.1 schema describing every endpoint. |
/api/mcp/mcp | MCP clients (Claude Desktop, Cursor, ChatGPT tools) | MCP server: list_benchmarks, get_benchmark, query_prom tools + openchainbench://benchmark/{slug} resource. |
/api/freshness | Live UI, dashboards | {slug → asOf ms} map. Edge-cached 5 s. |
/api/llm-context | LLM system prompts | Every benchmark with rankings + methodology in one Markdown blob. |
/benchmarks/<slug>/opengraph-image | X, LinkedIn, Slack, iMessage | 1200×630 PNG with current value + leader + sparkline. Auto-served on link unfurl. |
/benchmarks/<slug>/share-card?template=... | Manual export | 5 templates (ranking / snapshot / headline / compare / leaderboard), ?theme=dark supported. |
/api/badge/<bench>/<provider> | Provider sites, READMEs | 360×36 embeddable SVG with the provider's rank + headline figure. |
/rss.xml · /feed.json | Feed readers, agent tooling | RSS 2.0 + JSON Feed 1.1 mirrors, one entry per live bench, updated on release. |
/sitemap.xml · /robots.ts | Crawlers | Every AI crawler (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, …) explicitly allowed. |
Structured data on every bench page: Dataset + StatisticalReport + Observation + TechArticle + FAQPage + BreadcrumbList JSON-LD, plus a schema.org Dataset microdata graph layered on the visible "At a glance" infobox.
Journalist citation format (what /api/stat/<slug>.headlineSentence emits):
| Route | What lives there |
|---|---|
/ | Hero + Latest benchmarks table + Live dashboard |
/benchmarks · /benchmarks/[slug] | Catalog grid + per-bench leaderboard with chart, ledger, chain/region filters, share cards, FAQ |
/benchmarks/[slug]/[chain] | Chain-scoped bench view with per-chain explainer |
/products/[slug] | The one page per product: every bench it appears in, top-1 counts, related products, and a view per category it belongs to (Trading app, Perpetuals, Prediction markets, Data API, Bridge, RPC, Hyperliquid) selectable by pill or URL hash |
/chains/[slug] | Per-chain hub: live native price, TVL history, every bench that touches this chain grouped by category |
/compare/[a]-vs-[b] | Head-to-head comparison across shared benches, canonical alphabetical order enforced at the edge |
/alternatives/[slug] | "Alternatives to X" landing pages with live leaderboard from the referenced bench |
/answers/[slug] | Q&A pages backed by a live bench, formatted for AI answer engines |
/hyperliquid | HyperLiquid frontends cohort; each builder's dashboard (revenue, volume, first-active date) is the Hyperliquid view on its /products/[slug] page |
/perps · /prediction-markets · /rpc | Vertical hubs aggregating multiple benches per topic |
/mcp | MCP server docs + install instructions |
/methodology · /contribute · /team · /about · /press · /badges | Static |
ocb-par-main in Paris) via docker compose. A handful of multi-region harnesses (rpc-capabilities-us/eu/sgp, evm-quote-latency, aggregator-head-lag regional) stay on Railway and federate into the VPS Prom.kv.openchainbench.com/aggregate/{latest,benches/<slug>,variants/<slug>/<sig>}.json. Site reads CDN first (~20 ms edge), falls back to SRH, then to the last-known-good snapshot key on cold cache.main on every push (with sitemap smoke test + auto-rollback + bench-page warm-up); dev branch runs on staging preview.src/middleware.ts) handles lowercase 308 normalization, /compare/<b>-vs-<a> → canonical alphabetical, 410 Gone for removed benches, 301 for renamed ones, and cache-key normalization on read-only public APIs.wss://stream.openchainbench.com/ws) is a separate service run by the OpenChainBench maintainers because it holds upstream API keys; the browser talks to it directly, Vercel only serves the static shell.Full walkthrough with diagrams + a "clone-and-run-it-yourself" section is in docs/architecture.md.
Read CONTRIBUTING.md for the long-form guide. TL;DR:
📊 Propose a benchmark issue with the metric + methodology/metrics works)/metrics)dev: spec YAML + harness ref + Prom scrape configmain when data lands410 Gone with a link to the current catalog so previously-indexed URLs decay cleanly.dateModified + asOf so LLMs can tell fresh data from stale.License: harness code MIT · dataset CC-BY-4.0 · attribution required. See LICENSE.