AI Observer collects telemetry from AI coding assistants running on a developer's machine and shows token usage, costs, API latency, error rates, and session activity for all of them in one dashboard. It supports Claude Code, Gemini CLI, OpenAI Codex CLI, GitHub Copilot (the VS Code extension and the CLI), and OpenCode. All data stays in a local DuckDB database, and nothing is sent to external services.
Data arrives in one of two ways. As an OpenTelemetry (OTLP) backend it receives traces, metrics, and logs over HTTP in JSON or Protobuf, which is the only path for GitHub Copilot and OpenCode. Alternatively, a file watcher reads the native session files that Claude Code, Codex CLI, and Gemini CLI already write, so no exporter configuration is needed. The two modes are mutually exclusive to avoid duplicate data. Past sessions can also be imported from those local files, with costs calculated from embedded pricing data.
It ships as one self-contained binary with an embedded React frontend, or as a multi-arch Docker image. The backend is written in Go and exposes a query API for metrics, logs, and traces. Derived metrics filter out tool-routing API calls so that token counts match those reported by ccusage, and Claude Code and Codex records are attributed to a repository and git branch when evidence is available.
Features
- Multi-tool support: Claude Code, Gemini CLI, OpenAI Codex CLI, GitHub Copilot, and OpenCode in one view
- Real-time dashboard: live updates over WebSocket as telemetry arrives
- Dashboard builder: drag-and-drop layouts with saved widgets of several types
- File watcher mode: picks up Claude Code, Codex, and Gemini session files as they are written, without OTLP setup
- Historical import: loads past sessions from local JSON and JSONL files, with date ranges and cost recalculation
- Cost tracking: embedded pricing for Claude, OpenAI, Gemini, and GitHub Copilot models, plus OpenCode plugin cost metrics
- Local analytics: DuckDB storage for fast queries over large telemetry sets
- Parquet export: exports traces, logs, and metrics to Parquet files with an optional DuckDB views database
- Data deletion: removes logs, metrics, or traces by date range or service
- OTLP-native ingestion: standard OpenTelemetry Protocol over HTTP, in JSON or Protobuf
- Repository attribution: tags Claude Code and Codex usage with repository and branch where evidence exists
