Skip to content

Latest commit

 

History

History
63 lines (49 loc) · 3.96 KB

File metadata and controls

63 lines (49 loc) · 3.96 KB

AI-Meter — Roadmap

Track AI usage → translate it into environmental impact (energy, CO₂e, water), with a future connectable hardware device. This file is the at-a-glance status.


✅ Done

Research & design (references/)

  • Landscape of AI-impact tracking tools, methodology, data sources, hardware ideas, and an opinionated recommendation set (Option C, event-driven).
  • Research on in-browser capture (vs "AI Wattch" and peers) and on per-provider tokenization.
  • Architecture diagrams (Excalidraw) under references/diagrams/.

Backend — Dockerized, event-driven (aimeter/, db/, data/)

  • FastAPI ingest (POST /v1/events, OpenTelemetry GenAI schema) → Redis streamworkerTimescaleDBread API. The stream is the only path into the DB.
  • Impact engine (pure, tested): usage → IT energy → ×PUE → ×grid intensity = CO₂e; water via the Li et al. formula. Versioned coefficients stamped on every row.
  • De-dup / supersede by a stable per-turn request_id — one logical turn = one row (handles reasoning-model partial→final and overlapping captures).
  • TimescaleDB hypertables + continuous-aggregate hourly rollups.
  • Read API: /v1/impact/current (hardware feed), /summary, /rollup, /events/recent, /methodology.
  • Live monitor page at /monitor (polished: intensity orb, dark/light theme, CO₂/energy/water toggle, per-model bars, real-data methodology dialog, persistent Clear).
  • CORS for the extension, container restart policies, static dir volume-mounted for instant monitor edits.
  • Runs entirely in Docker (TimescaleDB built on ECR-mirrored Postgres to avoid Docker Hub limits).

Browser extension — MV3 (extension/)

  • Captures usage on ChatGPT / Claude / Gemini with no proxy; posts token counts only (never text) to /v1/events.
  • MAIN-world network interceptor (exact model slug + per-turn id) + DOM capture + overlap de-dup.
  • Real per-provider tokenizers (vendored, offline): OpenAI o200k = exact, Gemini Gemma = near-exact, Claude BPE = approximate.
  • Service worker: enrich (opaque per-install subject id, region) + durable retry queue. Popup with settings + recent.
  • Privacy by default: counts + model only, never prompt/response content.

Verification

  • 24 unit tests (impact engine + all three tokenizers), run in a container.
  • End-to-end verified live (see COWORK-TESTING.md): real prompts → one accurate, content-free event per turn → live in the monitor.

🔜 To do / next

Impact accuracy (coefficients are provisional)

  • Replace order-of-magnitude energy-per-token table with measured values (ML.ENERGY, HF AI Energy Score).
  • Expand the grid-intensity table beyond the ~15 bundled regions; make grid + water region- and time-aware.
  • Add uncertainty ranges to impact outputs (not just point estimates).
  • Add embodied/manufacturing carbon (BoaviztAPI) — the + M term.

Browser extension

  • Count full re-fed context for ChatGPT input tokens (currently the new message only).
  • Keep DOM selectors current as the AI sites change (extension/src/adapters/index.js).
  • Finish the offline-queue edge test (stop API → queue → flush).
  • Optional: package for the Chrome/Firefox stores; add an opt-in "exact Claude count" mode via the vendor API.

Backend / production

  • API authentication + multi-user / per-subject isolation.
  • Real-time push channel (SSE or MQTT) for the hardware instead of polling.
  • Retention / downsampling policy; a production deploy target (not just local Docker).
  • CI (GitHub Actions) to run the unit tests on push.

Hardware (Phase 2)

  • Build the connectable device that consumes /v1/impact/current (concepts in references/04-hardware-demonstration-ideas.md): intensity orb / e-ink / LED meter.

Project / ops

  • Confirm licensing for any bundled coefficient data before any public release.
  • Privacy review pass before broader use.