Sous le capot

Architecture & API

La partie technique de carbon-fr, réunie : la surface de l’API, l’architecture qui la porte, la méthodologie carbone versionnée, et comment contribuer. Pour aller au bout : référence complète, playground, SDK.

00Le constat

La prévision n’existe pas dans la source.

C’est le point le plus important du projet. RTE publie une estimation des émissions au pas quart d’heure — mais uniquement pour le passé et le présent. Les seules prévisions du jeu temps réel portent sur la consommation, pas sur l’intensité carbone.

CONSTAT — A

La France n’a pas son équivalent ouvert

Le Royaume-Uni dispose d’une API carbone publique ; la France, non. Et la donnée française ne fournit aucune prévision d’intensité carbone — seulement le passé et le présent. carbon-fr comble ce manque : il rend la donnée facile à consommer et ajoute la prévision qui n’existe nulle part.

CONSTAT — B
1 collecteur

Gratuit et sans limite pour vous

La source publique impose un quota d’accès (50 000 appels/mois par jeu de données). carbon-fr le centralise une fois pour toutes : un seul collecteur alimente le service, et chacun interroge ensuite librement — sans clé, sans quota, sans dépendance.

01L’API

Une surface lisible, pensée pour les développeurs et les machines.

Deux natures d’endpoints cohabitent : le repackaging propre de données existantes, et la valeur créée par modélisation. Chaque réponse porte son identifiant de méthodologie et son millésime, pour qu’un chiffre soit toujours interprétable.

GET /intensity/now Intensité carbone nationale à l’instant t. repackaging
GET /intensity/now/all National + 12 régions en un seul appel, chacune avec son index. repackaging
GET /mix Mix de production courant, par filière, avec les parts de chaque filière. repackaging
GET /intensity/date Historique à une date ou sur une plage (consolidé/définitif), en JSON ou en CSV (?format=csv). repackaging
GET /intensity/forecast Prévision d’intensité carbone, produite par un modèle interne. valeur créée · phase 3
GET /greenest-window Meilleure fenêtre bas-carbone à venir (décalage de charge). valeur créée · phase 3
GET /intensity/index Barème de l’index qualitatif (very-low → very-high) servi avec chaque mesure et chaque point de prévision : bornes et sources auditables (ADR-0033). valeur créée
GET /regions Catalogue des régions servies (slug, libellé, code INSEE) : les valeurs acceptées par ?region=. référence
GET /eligibility/rulesets Cadres d’éligibilité électrolyseur (rfnbo / low-carbon), consommés aussi via ?eligibility= sur /greenest-window — chaque pilier tranché porte sa provenance (observée ou prévisionnelle) et son motif si indéterminé. Support à la décision, pas une certification ; à explorer sur la page Hydrogène. valeur créée

Toute réponse expose methodology (identifiant + version) et vintage (tr / consolidated / definitive) : le consommateur sait toujours quelle méthode l’a produite et s’il lit du provisoire ou du définitif.

02Architecture

Hexagonale, par construction.

« Les dépendances pointent vers l’intérieur. Le domaine ne dépend de rien. »

Le core — domaine, cas d’usage et ports — ne contient aucune IO. Changer de source, de base ou de modèle de prévision n’est jamais qu’un nouvel adapter. Écrit en Rust (edition 2024, tokio), stockage PostgreSQL natif, sans extension propriétaire.

Adapters entrants — axum, CLI
↓ appellent les cas d’usage
core — domaine · application · ports (zéro IO)
↑ implémentent les ports ↑
Adapters sortants — ODRÉ, Postgres, ForecastModel
03Méthodologie carbone

Un chiffre n’est comparable que si sa méthode est explicite.

Émissions directes ou cycle de vie ? Imports inclus ou non ? Production ou consommation ? La méthodologie est un attribut de premier ordre, versionné et sélectionnable — porté par chaque mesure, jamais modifié en silence.

● Disponible — MVP

rte-direct

L’estimation RTE reprise telle quelle : émissions de la production d’électricité en France, directement comparables à éCO2mix.

  • Émissions directes (combustion)
  • Comparable à la référence officielle
  • Identifiant + version portés par chaque Measurement
● Disponible

acv-ademe

Cycle de vie via la Base Carbone ADEME. Deux versions coexistent : @1 basée production et @2 basée consommation — imports valorisés à l’intensité du voisin (ENTSO-E) + pertes T&D, national, ?version=2.

  • Analyse de cycle de vie (ACV)
  • @2 : imports/exports inclus (consumption-based)
  • Coexiste avec rte-direct — ADR-0010, sans rupture

La méthodologie fait partie de la clé d’unicité (région, horodatage, méthodologie) : deux méthodes produisent deux valeurs distinctes pour le même instant, et toutes deux restent disponibles et comparables.

04Contribuer

Au grand jour, en citant sa source.

carbon-fr re-traite la donnée RTE et la rend consommable — sans s’y substituer, et en la citant. Aucune zone grise de licence : PostgreSQL natif, dépendances OSI, double licence permissive.

MIT Apache-2.0 Rust · edition 2024 PostgreSQL natif
1

Ouvre une issue. On discute l’idée avant d’écrire du code — on évite le travail perdu.

2

Décision structurante → un ADR. Le « pourquoi » se documente avant le « comment », au format contexte → décision → conséquences.

3

Pull request. Le quoi et le pourquoi, CI verte — 8 contrôles requis sur main : fmt, clippy, cargo-deny, tests avec PostgreSQL, build, SDK TypeScript, MSRV, cargo-semver-checks.

Kovelt/carbon-fr
carbonfr-corecrates.io · publiée
carbonfr-eligibilitycrates.io · publiée
carbonfr-sdkcrates.io · publiée
adapters ODRÉ · Postgres · HTTPdans le dépôt, non publiés
Ouvrir sur GitHub → Quickstart & SDK
05Le paysage

Là où les autres s’arrêtent à la frontière — ou ferment la porte.

Le Royaume-Uni a son API carbone ouverte ; la France n’a rien d’équivalent. Les solutions mondiales existent, mais fermées et payantes alors qu’elles reposent sur les mêmes données publiques.

carbon-fr carbonintensity.org.uk Electricity Maps
Périmètre France — national + 12 régions Royaume-Uni Mondial
Licence OSS — MIT / Apache-2.0 OSS Fermé, payant
Source RTE / éCO2mix (ouvertes) National Grid ESO Données publiques re-packagées
Auto-hébergeable Oui — binaire unique — Non
Prévision carbone Oui — climatology@1 Oui — ML, 96 h+ Oui
Méthodologie Versionnée & sélectionnable Fixée Propriétaire