Skip to main content

Observability dashboard for LLM inference with thinking budget and mode tracking

Project description

forge-dashboard

Observability dashboard for LLM inference with reasoning mode support. Ingests OpenTelemetry trace and metric data from forge-observe, stores it in SQLite, and serves a React frontend for visualizing thinking budget burn, token splits, and mode switches.

What it shows

  • Budget burn over time -- how fast the thinking budget is being consumed
  • Think vs response token split -- what fraction of output is thinking vs user-facing
  • Mode switch timeline -- when the router flips between thinking and instruct mode
  • Alert rules -- threshold alerts on budget exhaustion, token ratios, error rates

Architecture

forge-observe (OTel SDK)
        |
        | OTLP/HTTP JSON (POST /v1/traces, /v1/metrics)
        v
forge-dashboard (FastAPI + SQLite)
        |
        +-- React frontend (Vite + Recharts + Tailwind)

The backend accepts OTLP JSON exports, parses forge-specific span attributes (forge.thinking_tokens, forge.budget_remaining, etc.), and stores them for dashboard queries. Authentication is via API keys scoped to projects.

There are two ways to send data:

  • Direct -- point forge-observe's OTLP exporter straight at http://<dashboard-host>:8000/v1/traces. Works for single-node setups.
  • Via forge-cloud (separate project, not yet released) -- if you run forge-cloud as a central proxy, configure it to forward traces to the dashboard. forge-cloud handles auth and routing so individual services only need the proxy address.

Running locally

# backend
pip install -e ".[dev]"
forge-dashboard
# serves on http://localhost:8000

# frontend (separate terminal)
cd frontend
npm install
npm run dev
# serves on http://localhost:5173, proxies /v1/* to backend

Setup

  1. Start the backend. It creates a SQLite database on first run.
  2. Set a setup secret and create a user and project via the API:
export FORGE_SETUP_SECRET="your-secret-here"
# then start the backend

# create user
curl -X POST http://localhost:8000/v1/users \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-here" \
  -d '{"email": "you@example.com"}'

# create project (use the user id from above)
curl -X POST http://localhost:8000/v1/projects \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-secret-here" \
  -d '{"name": "my-project", "owner_id": 1}'
# response includes api_key -- save it
  1. Enter the API key in the dashboard Settings page, or use it in forge-observe's exporter config.
  2. Point forge-observe's OTLP exporter at http://localhost:8000/v1/traces.

Configuration

Environment variables:

Variable Default Description
SQLITE_PATH forge_dashboard.db Path to SQLite database file
FORGE_SETUP_SECRET (none) Required to create users/projects via API
FORGE_ALERT_INTERVAL_SECONDS 60 How often to evaluate alert rules
FORGE_RETENTION_DAYS 7 Data retention period
FORGE_CORS_ORIGINS http://localhost:5173 Comma-separated allowed CORS origins

Tests

pip install -e ".[dev]"
pytest -v

Project status

Backend is functional with OTLP ingestion, query API, alerting, and data retention. Frontend is a working prototype with budget, token split, mode timeline, and alert management views. Notification delivery (email, Slack, etc.) is not yet implemented -- alert firings are recorded in the database only.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

forge_dashboard-0.1.2.tar.gz (25.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

forge_dashboard-0.1.2-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file forge_dashboard-0.1.2.tar.gz.

File metadata

  • Download URL: forge_dashboard-0.1.2.tar.gz
  • Upload date:
  • Size: 25.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for forge_dashboard-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5c5379f53339c4662a95ad90d928a04352e8db153828cde9cdbd5f5cf622b9cd
MD5 d5ac5c29d6f9088c036848f35dac2ab2
BLAKE2b-256 566c12e66c68af4902eae5bcc02e57c16cbaf20c1924b23e574cf325cb9b1344

See more details on using hashes here.

Provenance

The following attestation bundles were made for forge_dashboard-0.1.2.tar.gz:

Publisher: publish.yml on ArkaD171717/FORGE-Dashboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file forge_dashboard-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for forge_dashboard-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1a2939f029c3056c781e088b4f61ee0e3bbfa3f7dcd084648f4d2bed82c1f34b
MD5 1b78d775bebce8e29c3b99c55a7f6607
BLAKE2b-256 0b66083c84a60b914475e50dc3a3515525d07849a9f98c9221d41d1f9cf6205c

See more details on using hashes here.

Provenance

The following attestation bundles were made for forge_dashboard-0.1.2-py3-none-any.whl:

Publisher: publish.yml on ArkaD171717/FORGE-Dashboard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page