Compteur d'impact environnemental multi-critères pour outils d'IA agentique (vendor-neutral, via EcoLogits)
Project description
AI Footprint
Connaître l'empreinte environnementale de tes sessions d'IA. AI Footprint (ai-footprint) lit les
transcripts de Claude Code, Opencode/CRUSH et Pi, estime l'impact de chaque réponse
générée, et te le restitue sous forme de rapport et de statusline — directement dans
Claude Code.
Le calcul n'est pas réinventé : il est délégué à EcoLogits, un moteur reconnu, offline et multi-critères.
Ce qu'on mesure
Pas seulement le CO₂. Cinq critères, chacun donné en fourchette (pas un faux chiffre précis — voir « Pourquoi des fourchettes ») :
| Critère | Ce que ça représente | |
|---|---|---|
| 🌍 | GWP | gaz à effet de serre (kg CO₂eq) |
| 💧 | Eau | eau consommée (L) |
| ⛏ | ADPe | épuisement des métaux/ressources (kg Sbeq) |
| ⚡ | Énergie | électricité (kWh) |
| 🔥 | PE | énergie primaire (MJ) |
Pourquoi des fourchettes ? La région exacte des datacenters d'Anthropic (donc leur mix électrique) est inconnue, et le rendement d'un datacenter (PUE) varie. Cette incertitude est irréductible : on l'affiche (min–max + valeur centrale
~) plutôt que de la cacher. Détails : docs/METHODOLOGY.md.
Installation
Rapide (une ligne)
curl -fsSL https://raw.githubusercontent.com/hrenaud/ai-footprint/main/install.sh | bash
L'installeur détecte Python ≥ 3.10, installe ai-footprint + EcoLogits, expose la
commande ai-footprint, déploie les skills, et câble la statusline + un hook
d'ingestion dans ~/.claude/settings.json (sans toucher à une statusline déjà prise
par un autre outil). Il détecte aussi Opencode/CRUSH (plugin) et Pi (extension) s'ils
sont installés, et fait un backfill initial de leurs sessions locales. Redémarre
Claude Code ensuite pour activer les skills.
Variables optionnelles : AI_FOOTPRINT_DIR, AI_FOOTPRINT_DB,
AI_FOOTPRINT_NO_CLAUDE=1 (ne pas modifier settings.json), AI_FOOTPRINT_NO_INGEST=1.
(Contributeurs : voir AI_FOOTPRINT_REF dans CONTRIBUTING.md pour
tester une branche.)
Manuelle
Python ≥ 3.10, puis pip install -e ..
Désinstallation
curl -fsSL https://raw.githubusercontent.com/hrenaud/ai-footprint/main/uninstall.sh | bash
Retire le binaire, les skills, le câblage ~/.claude/settings.json (statusline + hook
d'ingestion), le plugin Opencode/CRUSH, l'extension Pi et le répertoire source. La
base ai-footprint.db (historique d'impact) est conservée par défaut — ajoute
AI_FOOTPRINT_PURGE_DB=1 avant la commande pour la supprimer aussi.
Utilisation — via les skills (recommandé)
Dans Claude Code, tape la commande, ou demande en langage naturel :
| Skill | À quoi ça sert | Exemple |
|---|---|---|
/footprint-report |
Ton rapport d'impact complet. | « mon impact », « mon empreinte CO₂ » |
/footprint-card |
Une card PNG partageable (1080×1080) résumant ton empreinte. | « exporte mon empreinte en image » |
/footprint-resolve |
Estimer l'impact de modèles tiers/locaux non reconnus (les associe à un modèle Hugging Face). | quand le rapport liste des « modèles non couverts » |
/footprint-config |
Régler ta zone électrique (ex. France) et les paramètres datacenter. | « configure ma zone élec » |
/footprint-help |
Aide : toutes les commandes et options. | « comment utiliser ai-footprint » |
Le rapport a cinq sections : impact total, projets les plus impactants, tokens & impact par modèle, modèles non couverts, et intensité par modèle (impact par heure de travail — révèle qu'à débit égal, Opus émet bien plus que Haiku). Une sixième section, intensité par outil, apparaît automatiquement dès que tes données couvrent plusieurs outils (Claude Code, Opencode/CRUSH, Pi…) — elle révèle quel outil consomme le plus de tokens et a les impacts les plus forts, à débit égal.
Options utiles du rapport : --since 2026-06-27 (ou 27/06/26) pour une période,
--detail pour les fourchettes min–max par modèle/projet, --all-projects pour la
liste complète. /footprint-help (ou ai-footprint report --help) les liste toutes.
Card partageable
/footprint-card exporte une image PNG 1080×1080 résumant ton empreinte : le
carbone (GWP) en héro, les 4 autres critères (eau, énergie, ADPe, énergie primaire)
en tuiles, et le top 3 des projets les plus impactants. Chaque valeur est posée sur
sa fourchette min–max via une jauge à marqueur central — la signature visuelle du
projet, pour ne jamais présenter un chiffre unique trompeur.
Nécessite Chrome ou Chromium installé localement (rendu HTML → PNG en headless,
aucune dépendance Python supplémentaire). Options : --since, --theme light|dark|both (défaut light), --lang fr|en|both (défaut both), --out
(défaut ~/.ai-footprint/exports/).
Statusline dans Claude Code
La statusline affiche l'impact de la session en cours (Claude Code transmet la session ; ai-footprint ingère le transcript courant et filtre dessus). En lancement manuel, elle retombe sur le total global.
~/.ai-footprint/src/scripts/statusline.sh # ⚡ 18.9–33.5 kWh · 🌍 7.93–13.5 kgCO2e · 💧 61.3–134 L
L'installeur la câble dans ~/.claude/settings.json (et ne remplace pas une
statusline appartenant à un autre outil — il affiche alors la commande pour basculer).
Un préfixe ≈ signale que la session utilise un modèle trop récent pour le registre
EcoLogits (ex. tout juste sorti) : l'impact affiché est un repère provisoire,
extrapolé des paramètres officiels d'une version sœur connue — voir
docs/METHODOLOGY.md.
En ligne de commande (sous le capot)
Les skills appellent simplement la CLI ; tu peux l'utiliser directement :
ai-footprint ingest # parse les transcripts → base SQLite (~/.ai-footprint/ai-footprint.db)
ai-footprint report # rapport multi-critères (--since, --detail, --all-projects)
ai-footprint card # card PNG partageable (--since, --theme, --lang, --out)
ai-footprint statusline # ligne compacte
ai-footprint resolve --list # modèles non couverts à résoudre
ingest résume la couverture, p. ex. :
80 events ingérés · 33639/33709 mesurés · 70 non couverts (conservés, impact non estimé)
Les « non couverts » sont des modèles hors périmètre EcoLogits — l'event est conservé
mais exclu des totaux (afficher un faux chiffre serait pire). Beaucoup sont des
placeholders internes <synthetic> (0 token) ; les vrais modèles tiers se résolvent
avec /footprint-resolve. Voir docs/METHODOLOGY.md.
Pour aller plus loin
- docs/METHODOLOGY.md — comment l'impact est évalué : les échanges avec EcoLogits, les choix de méthodologie et leurs limites.
- CONTRIBUTING.md — côté technique : architecture, schéma de données, mise en place dev et comment étendre le projet.
Sources d'inspiration
- EcoLogits (
mlco2/ecologits) — le moteur d'impact (offline, multi-critères/phases). - claude-carbon — audit d'origine et UX de reporting.
- CodeCarbon — tracker offline, zone électrique par code pays.
- thirsty-llm — approche offline-first et fourchettes (on en rejette le modèle prix-proxy, remplacé par EcoLogits).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_footprint-1.2.0.tar.gz.
File metadata
- Download URL: ai_footprint-1.2.0.tar.gz
- Upload date:
- Size: 87.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f274c87fb14f29bb1c0dda7789475d6a0d43d8edb9ed00efb9e603f908b7b599
|
|
| MD5 |
bdc2bf7e11b6440c75e19ebef8868ae5
|
|
| BLAKE2b-256 |
e259e3917726a7a9807a9fb1f60611cd635f0f757561e4caecaaf6817a56fd94
|
Provenance
The following attestation bundles were made for ai_footprint-1.2.0.tar.gz:
Publisher:
publish-pypi.yml on hrenaud/ai-footprint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_footprint-1.2.0.tar.gz -
Subject digest:
f274c87fb14f29bb1c0dda7789475d6a0d43d8edb9ed00efb9e603f908b7b599 - Sigstore transparency entry: 2145778352
- Sigstore integration time:
-
Permalink:
hrenaud/ai-footprint@e73c28a265fb65744c0da1236cceac4817dc0c5b -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/hrenaud
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e73c28a265fb65744c0da1236cceac4817dc0c5b -
Trigger Event:
push
-
Statement type:
File details
Details for the file ai_footprint-1.2.0-py3-none-any.whl.
File metadata
- Download URL: ai_footprint-1.2.0-py3-none-any.whl
- Upload date:
- Size: 63.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
635bc60926efb7df115a5ab8cb013eb8739b8351e4e9d26b0bbc972eb24b0344
|
|
| MD5 |
1af945af7698ab1fc2f38e1473626516
|
|
| BLAKE2b-256 |
c11f86b0095d9410b0359f76f90bc6cefb08996366af1bf56f08c67f6b1ec150
|
Provenance
The following attestation bundles were made for ai_footprint-1.2.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on hrenaud/ai-footprint
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_footprint-1.2.0-py3-none-any.whl -
Subject digest:
635bc60926efb7df115a5ab8cb013eb8739b8351e4e9d26b0bbc972eb24b0344 - Sigstore transparency entry: 2145778359
- Sigstore integration time:
-
Permalink:
hrenaud/ai-footprint@e73c28a265fb65744c0da1236cceac4817dc0c5b -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/hrenaud
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e73c28a265fb65744c0da1236cceac4817dc0c5b -
Trigger Event:
push
-
Statement type: