Mission Control
Unified AI usage dashboard across coding agents and local inference
- React
- TypeScript
- Vite
- Tailwind
- Express
- SQLite
- Bun
- TanStack Query
- SSE
A React + Express + SQLite dashboard that ingests Claude Code, Codex CLI, Hermes, ComfyUI, and Lemonade telemetry into one place - sessions, activities, consumption, runtime health, failures, jobs, and generations. Run the hub on a central host; attach collectors on the machines where you do AI work.
Problem
Coding agents, CLI tools, local LLM routers, and image pipelines all produce usage, health, and failure signals - but each has its own logs, APIs, and partial dashboards. How do you see sessions, tokens, runtime load, and job outcomes in one system without coupling the UI to a single agent platform?
Approach
Mission Control is a source-agnostic observability stack with a simple deploy shape:
Hub (central host) - Express + SQLite + the React dashboard. This is the single place you open in a browser. Server-side pollers for lab services that live on that host (Hermes / llama-swap, ComfyUI, optional Lemonade) run next to the API.
Collectors on AI machines - On each workstation or laptop where you run coding agents, a desktop collector tails Claude Code and Codex JSONL logs and pushes batches to the hub’s ingest API. You can run collectors on as many machines as you use; each source/instance is registered independently.
Ingest contract - Batched events (session, activity, inference_request, runtime_snapshot, runtime_event, quota_snapshot, generation_job, job_run) are Zod-validated and deduped on a stable natural key so at-least-once delivery is safe.
UI - Dashboard, Activities, Sessions, Runtime, Failures, Consumption, Jobs, Generations, and Settings, with SSE invalidation and TanStack Query for live updates.
Dollar costs are only attached when a source actually provides billable figures - no fabricated pricing for local inference.
Outcome
A production-running unified usage dashboard for multi-tool AI work: agent sessions and tool calls next to local runtime occupancy, consumption trends, failure analysis, and generation jobs - without requiring every source to speak the same native product model.
Architecture
Hub-and-spoke: install Mission Control (API + SPA + SQLite) on a central host; run desktop collectors on the machines where coding agents produce logs; run server-side pollers on the hub for co-located inference and generation services. Collectors emit a shared ingest contract over HTTP → dedupe → SQLite. The SPA reads REST aggregates and SSE streams. Hub and spokes typically talk over a private network (e.g. workstation + home-lab box).