Files
oh-my-pi/packages/stats
can1357 153fd78345 feat(stats): added token usage breakdown by agent type
- Implemented agent type classification and persistence in the database, including a backfill for legacy records.
- Added `AgentType` categorization and aggregated token usage metrics to the backend services.
- Created an `AgentTokenShare` visualization component to display usage distribution on the overview dashboard.
- Integrated agent-based tracking into existing data pipelines, view models, and testing suites.
2026-06-22 17:42:58 +02:00
..
2026-06-22 07:23:40 +02:00

@oh-my-pi/omp-stats

Local observability dashboard for AI usage statistics.

Features

  • Session log parsing: Reads JSONL session logs from ~/.omp/agent/sessions/
  • SQLite aggregation: Efficient stats storage and querying using bun:sqlite
  • Web dashboard: Real-time metrics visualization with Chart.js
  • Incremental sync: Only processes new/modified log entries

Metrics Tracked

Metric Calculation
Tokens/s output_tokens / (duration / 1000)
Cache Rate cache_read / (input + cache_read) * 100
Error Rate count(stopReason=error) / total_calls * 100
Total Cost Sum of usage.cost.total
Avg Latency Mean of duration
TTFT Mean of ttft (time to first token)

Usage

Via CLI

# Start dashboard server (default: http://localhost:3847)
omp stats

# Custom port
omp stats --port 8080

# Print summary to console
omp stats --summary

# Output as JSON (for scripting)
omp stats --json

Programmatic

import { getDashboardStats, syncAllSessions } from "@oh-my-pi/omp-stats";

// Sync session logs to database
const { processed, files } = await syncAllSessions();

// Get aggregated stats
const stats = await getDashboardStats();
console.log(stats.overall.totalCost);
console.log(stats.byModel[0].avgTokensPerSecond);

API Endpoints

Endpoint Description
GET /api/stats Overall stats with all breakdowns
GET /api/stats/models Per-model statistics
GET /api/stats/folders Per-folder/project statistics
GET /api/stats/timeseries Hourly time series data
GET /api/sync Trigger sync and return counts

Data Storage

  • Session logs: ~/.omp/agent/sessions/ (JSONL files)
  • Stats database: ~/.omp/stats.db (SQLite)

Dashboard

The web dashboard provides:

  • Overall metrics cards (requests, cost, cache rate, error rate, duration, tokens/s)
  • Time series chart showing requests and errors over time
  • Per-model breakdown table
  • Per-folder breakdown table
  • Auto-refresh every 30 seconds

License

MIT