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.
- 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/.
- FastAPI ingest (
POST /v1/events, OpenTelemetry GenAI schema) → Redis stream → worker → TimescaleDB → read 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).
- 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.
- 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.
- 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
+ Mterm.
- 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.
- 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.
- Build the connectable device that consumes
/v1/impact/current(concepts inreferences/04-hardware-demonstration-ideas.md): intensity orb / e-ink / LED meter.
- Confirm licensing for any bundled coefficient data before any public release.
- Privacy review pass before broader use.