Empreinte carbone temps réel par job GPU — transparence opérateur datacenter, conformité CSRD/ESRS E1, optimisation carbon-aware.
CarbonTrack instrumente un datacenter pour publier en continu l'empreinte carbone de chaque job GPU, au format conforme ESRS E1 (CSRD) et à la norme ISO/IEC 21031:2024 (Software Carbon Intensity).
Trois usages :
- Dashboard public — transparence mix énergétique, jauge gCO₂/kWh temps réel, widget embeddable.
- Espace client — rapport PDF ESRS E1 vérifiable, CO₂ par projet, comparaison vs AWS/GCP/Azure.
- API & hint — API REST versionnée + endpoint carbon-aware scheduling hint pour décaler les jobs non-urgents vers les créneaux les plus propres.
Premier pilote : DataOne Eybens (Grenoble, GPU AMD Instinct, liquid cooling direct). Indifférent au vendor GPU (AMD ROCm + NVIDIA CUDA via abstraction).
- Pression réglementaire : CSRD/ESRS E1 continue d'exiger Scope 2 double-méthode (location + market-based) pour l'exercice 2025 publié en 2026.
- Gap produit : les outils ESG génériques (Sweep, Watershed, Persefoni) s'arrêtent au niveau "site / mois". Aucun ne descend au job GPU individuel — l'unité économique réelle d'un DC IA.
- Avantage France : mix RTE ~32 gCO₂/kWh (2023) vs ~385 en Virginie. Quantifier cet avantage en temps réel = argument commercial direct.
Prérequis : Docker, uv (Python), pnpm (Node 20+), just.
git clone <repo> carbontrack && cd carbontrack
cp .env.example .env # renseigner ELECTRICITY_MAPS_API_KEY, ANTHROPIC_API_KEY
just bootstrap # install deps Python + JS + pre-commit hooks
just up # Docker Compose : api + web + widget + redis + questdb + postgres
just seed # charge fixtures RTE + ADEME Base Empreinte V23.6
# Dashboard public
open http://localhost:3000
# API
curl http://localhost:8000/v1/carbon/intensity| Couche | Techno |
|---|---|
| API | Python 3.12 · FastAPI · Pydantic v2 · APScheduler |
| Persistence | QuestDB (timeseries) · PostgreSQL 17 (relationnel) · Redis 7 (cache / quota) |
| Frontend | Next.js 15 · React 19 · TypeScript 5.6 · Tailwind · shadcn/ui · Recharts |
| Widget | esbuild (ESM, zéro dépendance, ~4 KB gzipped) |
| Rapport PDF | WeasyPrint + Jinja2 + matplotlib |
| LLM | Anthropic claude-haiku-4-5 (avec prompt caching) |
| Sources carbone | RTE ODRÉ eco2mix · Electricity Maps · ADEME Base Empreinte V23.6 |
| Déploiement | Docker · GitHub Actions · GCP Cloud Run ou Scaleway Serverless Containers |
| Observabilité | OpenTelemetry · Prometheus · Grafana Cloud · Loki |
Détail complet : carbontrack.md.
MVP en 3 semaines découpé en 10 chantiers (A → J).
Voir PLAN.md pour la todolist complète et les dépendances inter-chantiers.
carbontrack/
├── apps/
│ ├── api/ # FastAPI (Python 3.12, uv)
│ ├── web/ # Next.js 15 (dashboard)
│ └── widget/ # JS embeddable (esbuild, ESM, 0 dep)
├── packages/
│ ├── shared-types/ # TypeScript types partagés (web ↔ widget)
│ └── shared-ui/ # composants shadcn/ui réutilisables
├── infra/
│ ├── docker/ # Dockerfile par service
│ ├── compose/ # docker-compose.yml + overrides
│ └── deploy/ # Cloud Run / Scaleway manifests
├── tests/
│ ├── fixtures/ # réponses RTE / Electricity Maps capturées
│ └── golden/ # golden tests calcul SCI
├── docs/ # methodology.md, api.md
├── carbontrack.md # spec MVP (source of truth)
├── PLAN.md # plan détaillé chantiers A-J
├── CLAUDE.md # instructions agent Claude Code
└── justfile # recettes dev
- SCI — ISO/IEC 21031:2024 :
SCI = ((E × I) + M) / Rappliqué par job - CSRD ESRS E1 — Scope 2 location-based (RTE) + market-based (PPA client), E1-5 (énergie) + E1-6 (GES)
- GHG Protocol — export CSV compatible Watershed / Sweep / Persefoni / IBM Envizi
Chaque rapport PDF inclut un hash SHA-256 en pied de page pour vérification tierce.
MIT © 2026 — à déterminer avec DataOne selon accord commercial.