Skip to content

Repository files navigation

InferenceX Dashboard

A Next.js dashboard for visualizing ML inference benchmark data. DB-backed with Neon PostgreSQL, React Query for data fetching, D3.js for interactive charts.

Stack: Next.js 16 (App Router) · TypeScript · Tailwind CSS 4 · shadcn/ui · D3.js · Neon PostgreSQL · Vercel · Cypress

Overview

LLM inference performance is a major concern of providing AI services, but accurate performance analysis remains elusive. Fast cadence of software development and model releases makes comparing performance between setups difficult. Existing performance benchmarks quickly become obsolete due to being static, and participants game the benchmarks with unrealistic, highly specific configurations. InferenceX tackles these issues by benchmarking popular models on major hardware platforms nightly with the latest software. For each model and hardware combination, InferenceX sweeps through different tensor parallel sizes and max concurrent requests, showing the throughput vs. latency graph for the full picture. In terms of software configurations, we ensure they are generally applicable across different serving scenarios, and we open source the repo to welcome community contributions. We hope InferenceX informs the community up-to-date and realistic LLM inference performance.

Architecture

Neon PostgreSQL → API routes (/api/v1/*) → React Query hooks → Context providers → D3.js charts

The frontend fetches data from API routes backed by a Neon PostgreSQL read replica. All presentation logic lives in the frontend — API routes return raw DB data.

Monorepo Structure

packages/
├── app/ # Next.js frontend
├── constants/ # Shared constants (GPU keys, model mappings)
└── db/ # DB layer, ETL, migrations, queries, ingest scripts

Prerequisites

  • Node.js: 24.x
  • pnpm: 10+

Install pnpm via Corepack (bundled with Node.js):

corepack enable
corepack prepare pnpm@latest --activate

Getting Started

feel free to file an github issue if u need help setting up the dashboard

1. Clone & Install

git clone https://github.com/SemiAnalysisAI/InferenceX-app.git
cd InferenceX-app
pnpm install

2. Set Up Data Source

You can run the dashboard against either a live database or a static JSON dump. The JSON dump approach requires no database setup and is the easiest way to get started.

Option A: JSON Dump (no database required, local dev only)

Download the latest DB dump from GitHub Releases, unpack it, and point DUMP_DIR at the directory. The dump is xz-compressed and split into one or more .tar.xz.part* files; reassemble them by piping cat through xz. This only works with pnpm dev; production builds require a live database.

cp .env.example .env
# Download and unpack the latest dump (requires xz; `brew install xz` on macOS)
gh release download db-dump/2026-03-30 -p 'inferencex-dump-*.tar.xz.part*'
cat inferencex-dump-2026-03-30.tar.xz.part*| xz -d -T0 | tar -x
# Add to .envecho'DUMP_DIR=./inferencex-dump-2026-03-30'>> .env

Make sure DATABASE_READONLY_URL is not set (or is commented out) in your .env.

Option B: Live Database

Set DATABASE_READONLY_URL in your .env to a Neon PostgreSQL connection string. See .env.example for details.

3. Run the Development Server

pnpm dev

Open http://localhost:3000 with your browser.

Development Scripts

These are the main scripts you'll use during development. Admin scripts for database and cache management are listed separately below. Some of these may require additional setup or environment variables.

ScriptDescription
pnpm devStart development server with Turbopack
pnpm buildProduction build
pnpm startStart production server
pnpm previewBuild then start production server locally
pnpm typecheckTypeScript type checking (all packages)
pnpm lintLint with oxlint
pnpm lint:fixAuto-fix lint issues
pnpm fmtFormat check with oxfmt
pnpm fmt:fixAuto-fix formatting
pnpm securitySecurity audit (pnpm audit + audit-ci)
pnpm testRun all tests (unit + E2E)
pnpm test:unitVitest unit tests
pnpm test:unit:coverageVitest unit tests with coverage
pnpm test:e2eCypress E2E tests
pnpm test:e2e:componentCypress component tests only
pnpm test:e2e:integrationCypress integration tests only
pnpm cleanRemove build artifacts
pnpm clean:allRemove build artifacts + node_modules

Admin Scripts

These are meant to be used for database and cache management and maintenance tasks, and should not be necessary during regular development. However, using pnpm admin:cache:invalidate pointed at your local development server can be useful to test after making changes to the database or API routes.

ScriptDescription
pnpm admin:db:migrateRun database migrations
pnpm admin:db:ingest:runIngest benchmark data from GitHub runs
pnpm admin:db:ingest:ciIngest benchmark data (CI mode)
pnpm admin:db:ingest:gcsIngest benchmark data from GCS
pnpm admin:db:ingest:supplementalIngest supplemental data
pnpm admin:db:apply-overridesApply data overrides
pnpm admin:db:resetReset the database
pnpm admin:db:verifyVerify database integrity
pnpm admin:cache:invalidateInvalidate API cache
pnpm admin:cache:warmupWarm up API cache

Deployment

Deployed on Vercel. See .env.example for all required environment variables.

About

Dashboard for InferenceX™, Open Source Continuous Inference

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages