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 -- 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.1.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.1-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: forge_dashboard-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 2883bfeacf4b796a91516e245429524102cb7f9371576da584d63d6af6aee86c
MD5 0c6af3602b78a88aea433fc4c61a7a0b
BLAKE2b-256 9821f2c3b916117c01612d7de0167de1c8acc03a5e8989755d36ab4af76174b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for forge_dashboard-0.1.1.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.1-py3-none-any.whl.

File metadata

File hashes

Hashes for forge_dashboard-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c1a46ab6352633d0b95cfff05d4970a95e1b669e1ebd93fe7f0f3b3eca2b0d19
MD5 fb02df64ea9b07db17c244970276ac8a
BLAKE2b-256 486734adeed33d25aa0047808092d2c6902e59b8d682d2d1b2e09a593f9c15f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for forge_dashboard-0.1.1-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