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

Uploaded Python 3

File details

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

File metadata

  • Download URL: forge_dashboard-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 bacf44b4ab9b93bc7d33c621f308dc4e71bc4780a1f6a7b8799a57101d8b8458
MD5 77c1386ef49fe7942aade3883d4acb67
BLAKE2b-256 a74a21281710646e9577a7e628856568cec8c28c6ea85d8d673d3699f2597895

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: forge_dashboard-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 16.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for forge_dashboard-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4052d6b19b21f45e5a7a163588feaf668b514564b76a0d3d330876e9fd94185b
MD5 f7314157f22edf218c4698051a2303db
BLAKE2b-256 8abd25c598ea9d5fc6250bbdef8f82484b4310f2cfef3ba8479037b25ec5617d

See more details on using hashes here.

Provenance

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