NVIDIA/omniperf: GitHub Pages as a Robotics Performance Database

A zero-dependency Isaac Lab dashboard uses manifest-driven JSON, Git LFS, Chart.js, and preview images to turn benchmark runs into a browsable, versioned record.

7 min read · NVIDIA/omniperf

A warehouse of labeled benchmark folders feeds a wall-mounted dashboard with GPU cards, sparkline charts, and tiny preview thumbnails. The image frames Omniperf as an archive of performance history, not a live monitoring console.
Omniperf reads benchmark artifacts like a ledger. The dashboard is just the front door.
Key Takeaways

The dashboard is really a ledger

Omniperf does not behave like a conventional observability app. It behaves like a tidy archive with charts on top. The important thing is not that it shows performance, but that it preserves performance history as versioned artifacts.

That is a strong fit for Isaac Lab. Robotics benchmarks need comparability more than novelty, and the repo keeps that comparison surface small: JSON files in docs/data/, preview images beside them, and a static site that reads the lot without asking a server for help.

lightweight, zero-dependency static site that tracks key performance metrics (FPS, GPU utilization, memory, startup times) for Isaac Lab benchmarks over time.

NVIDIA, Authoring Organization · NVIDIA/omniperf README

The manifest is the control plane

The clever part of Omniperf is that the front end does not discover the world by probing a backend. It loads manifest.json, learns which GPU datasets exist, and resolves the selected hardware lane into the matching data file. Tabs, filters, and comparison views all sit on top of that one indirection.

That makes the app feel simple even when the data is not. Add a new GPU dataset, point the manifest at it, and the UI can present a fresh history lane without changing the rendering code.

A manifest resolves a GPU dataset, then fans out into charts, filters, and preview images. The data stays frozen, which is why the comparisons stay deterministic.

The rest of the interface is a thin layer of selection logic. Presets narrow the benchmark recipe, filters cut across backend and renderer choices, and the charts respond by rendering the historical slices that matter. The result is less like a live ops console and more like a well-indexed research notebook.

Why previews belong beside the metrics

Numbers tell you throughput, memory, and startup time. They do not tell you whether a gain came with a visual regression, a broken scene, or a renderer artifact that only shows up in the frame itself. Omniperf makes room for both, and that is the part most dashboards miss.

A close-up of an opened benchmark dossier on a desk, with one page showing a small line chart and the other showing a preview image from the simulation. The composition explains how Omniperf links quantitative performance data to visual evidence in the same review surface.
A faster run is not always a better run. The preview image helps verify that the scene still looks right.

That is especially useful in robotics, where the wrong scene can still produce a pretty chart. A visual preview makes the benchmark evidence harder to misread, because it ties the curve back to what the simulator actually drew.

How NVIDIA keeps it low-friction

The maintenance story is almost as interesting as the UI. The whole project leans on static hosting, vanilla JavaScript, Chart.js, and Git LFS for the heavier history files. That combination keeps the repo portable and avoids the tax of a service layer.

cd "$(dirname "$0")/docs" && python3 -m http.server $PORT

That tiny local server script tells you a lot. There is no build step to nurse, no framework to keep in sync, and no database schema to migrate. Contributors can inspect the site with the same files that GitHub Pages will serve.

What it replaces

ApproachHosting modelData modelBest fitTradeoff
OmniperfStatic pages on GitHub PagesManifest plus versioned JSON and previewsHistorical robotics benchmarkingNarrow by design, but extremely legible
Generic observability dashboardServer-backed SaaS or self-hosted stackLive time-series databaseOperational monitoringMore flexible, but overbuilt for frozen benchmark artifacts
Notebook plus CSV workflowLocal files and ad hoc scriptsSpreadsheets, plots, and screenshotsOne-off analysisHard to compare across time and teammates
BI dashboard with a databaseApp server plus warehouseStructured schemas and queriesEnterprise reportingHeavier to maintain and less repo-native

The trade is obvious once you see it. Omniperf gives up generality to gain clarity. It is not trying to replace Grafana or BI tools, because its job is smaller and more exact: make Isaac Lab benchmark history easy to browse, compare, and trust.

The larger lesson

The best tooling often looks plain because the complexity belongs in the data, not the interface. Here, the interface is intentionally thin so the real work stays visible: benchmark runs are artifacts, the manifest is the contract, and preview images are evidence.

That is why this repo feels more durable than flashy. It turns performance into something you can revisit later, not just admire once. For a robotics platform, that is the right kind of boring.