[lievito]
Document contractuel

Pacte de transparence

Ce que lievito voit et ne voit jamais. Document forwardable à votre DPO, votre DSI, votre CSE. Techniquement vérifiable par le développeur en une commande.

Pacte de transparence — lievito v1.0

Version : v1.0-privacy-2026-05 Mise à jour : 2026-05-16 Statut : ce document est versionné dans le git du repo. Toute modification produit une nouvelle version et un changelog. La version vivante de cette page est servie en cache 1h.

Ce pacte décrit, ligne par ligne, ce que lievito voit et ne voit jamais sur les machines de vos développeurs. Il sert de contrat moral entre l'entreprise pilote, ses développeurs, et l'éditeur. Il est techniquement vérifiable par n'importe quel dev en une commande.

Ce qui est envoyé à lievito

Pour chaque session Claude Code détectée par le hook Stop ou par la commande org sync, le CLI envoie un payload JSON identique à celui-ci :

{
  "claude_session_id": "01H...",
  "started_at": "2026-05-16T09:14:22Z",
  "ended_at": "2026-05-16T09:31:08Z",
  "model": "sonnet",
  "input_tokens": 12340,
  "output_tokens": 4520,
  "cache_creation_tokens": 880,
  "project_name": "carbon-team"
}

Vous pouvez à tout moment vérifier ce payload sur votre machine avec :

lievito org sync --dry-run

Cette commande affiche le contenu exact qui serait transmis pour chacune de vos sessions. Aucun appel réseau n'est effectué. Cette commande est documentée et supportée publiquement.

Ce qui n'est jamais envoyé

Aucune des données suivantes ne quitte la machine du développeur :

  • Le contenu textuel de vos prompts
  • Le code source que vous lisez ou écrivez
  • Les réponses générées par Claude
  • Les noms de fichiers, chemins d'accès, branches git
  • Le contenu de vos messages, threads, commentaires
  • Les variables d'environnement
  • L'IP publique du développeur
  • Les credentials, tokens, secrets accessibles à Claude Code

L'audit du script d'installation et du hook Stop sont publics. Empreinte du install.sh à publier dans le changelog à chaque release.

Mécanisme de whitelist par repo

L'administrateur de votre organisation peut activer une liste blanche de patterns git remote.origin.url. Quand cette liste est active :

  1. Le hook Stop résout l'URL du remote du dossier où Claude Code est lancé
  2. Si l'URL ne matche aucun pattern de la liste blanche, le payload n'est jamais construit. Aucune session, aucun nom de projet, aucun token ne quitte la machine
  3. Une ligne d'audit locale enregistre uniquement un hash tronqué (12 caractères) du nom de projet, à des fins de debug
  4. En cas de doublon avec le check serveur, le serveur reçoit le hash uniquement, jamais le nom en clair

Cette protection permet aux développeurs qui mélangent comptes pros et persos (un seul abonnement Claude Pro pour plusieurs employeurs, projets perso le soir, contributions open source) de garantir que seuls leurs repos professionnels remontent.

Hébergement et conservation des données

  • Localisation : Supabase EU, datacenter Paris (région eu-west-3)
  • Conformité : RGPD article 28 (sous-traitance), DPA disponible sur demande
  • Conservation : 30 jours pour les sessions individuelles, 13 mois pour les agrégats mensuels (équipe, organisation). Au-delà, suppression automatique.
  • Backups : chiffrés au repos AES-256, conservés 7 jours

Droits du développeur (RGPD)

Chaque développeur dispose d'une URL personnelle, signée par HMAC, qui lui permet de :

Article 15 — Droit d'accès

Consulter sur /me/<token> toutes les données qui lui sont associées : sessions, mix modèle, heatmap horaire, ratio output/input, dernière activité. Cette page n'est accessible à personne d'autre, pas même à l'admin de l'organisation.

Article 20 — Droit à la portabilité

Le bouton "Télécharger mes données" sur /me/<token> produit un export JSON complet, immédiatement, sans validation administrative.

Article 17 — Droit à l'effacement

lievito org leave

Cette commande révoque le token CLI et supprime les données associées au développeur côté serveur. La suppression est définitive.

Mode incognito ponctuel

CLAUDE_CARBON_OFF=1 claude

Lance Claude Code sans que le hook ne remonte la session. Utile pour les phases d'expérimentation, side projects, ou simplement quand le dev ne souhaite pas être mesuré sur une période donnée.

Rotation du lien personnel

Si un développeur soupçonne que son URL /me/<token> a fuité (partage involontaire, screenshot diffusé), il peut demander une rotation via :

lievito me rotate

L'ancien lien retourne immédiatement une erreur 404. Le nouveau lien lui est renvoyé par email.

Ce que voit l'administrateur

L'administrateur de l'organisation (typiquement un responsable RSE, un tech lead ou un EM) accède au dashboard avec une session Supabase magic link distincte. Il voit :

  • Les agrégats par organisation (CO₂ total, coût total, mix modèle global)
  • Les agrégats par équipe (top 5 équipes, tendance 30 jours)
  • Le top membres par CO₂, classé par activité brute
  • La heatmap globale heure × jour pour l'organisation entière
  • Les projets consommateurs (top 10 par CO₂)
  • Le profil d'usage individuel d'un membre, uniquement si ce membre a explicitement consenti à le rendre visible (V2)

Il ne voit pas :

  • Le contenu de la heatmap individuelle de chaque dev sur la page /me/<token> (URL signée par dev, jamais partagée à l'admin)
  • Les sessions individuelles sans passer par le détail d'un membre, qui logue une consultation dans audit_events

Audit log

Toute action administrative significative est tracée dans la table audit_events :

  • Activation/désactivation de la whitelist de repos
  • Modification du budget CO₂ mensuel
  • Suppression d'un membre, fusion d'équipes
  • Export du dashboard en PowerPoint
  • Consultation du profil d'un membre individuel

Cet audit log est consultable par tout administrateur dans l'onglet Settings > Audit. Il garantit que toute opération sensible est observable, y compris par le DPO ou la DSI cliente.

Engagement de l'employeur signataire

En activant lievito pour son organisation, l'employeur s'engage par écrit à :

  1. Ne pas utiliser ces métriques dans le cadre d'évaluations de performance individuelle des développeurs
  2. Ne pas utiliser ces métriques pour des décisions disciplinaires (sanction, licenciement, lettre de recadrage)
  3. Communiquer ce pacte de transparence à tout développeur invité à rejoindre l'organisation, avant son installation du CLI

Cet engagement est constitutif du DPA signé par l'employeur lors de l'onboarding pilote.

Sécurité technique

  • Authentification dev : token HMAC signé avec un secret stocké côté serveur, jamais transmis au client. Rotation possible via incrément d'un compteur en DB.
  • Authentification admin : magic link Supabase via email, session cookie HTTP-only, durée 7 jours.
  • Transport : TLS 1.3 obligatoire (HSTS preload), aucune route en HTTP clair.
  • Stockage : cli_token en SHA-256 hash, jamais stocké en clair. Email en clair (nécessaire pour l'envoi de notifications RGPD).
  • Isolation : RLS Supabase par org_id, vérifiée à chaque requête côté serveur. Le service-role n'est utilisé que dans deux routes (ingestion CLI et page /me), avec scope explicite côté code.

Vérification publique du CLI

Le script d'installation est servi à https://lievito.gaetanwittebolle.com/install.sh. Avant exécution, vous pouvez :

  1. Lire le script : curl https://lievito.gaetanwittebolle.com/install.sh | less
  2. Comparer le hash SHA-256 du script à l'empreinte publiée dans le changelog du repo
  3. Auditer le hook installé dans ~/.claude/settings.json après installation
  4. Vérifier les commandes git effectivement utilisées par le hook (uniquement git config --get remote.origin.url)

Support et contact

Pour toute question, signalement, demande RGPD (accès, rectification, portabilité, suppression, opposition), contact :

Toute demande RGPD reçoit une réponse écrite sous 30 jours conformément au délai légal.

Historique des révisions

VersionDateChangements
v1.02026-05-16Document initial. Périmètre design partner.

Toute modification matérielle de ce pacte (ce qui est envoyé, qui voit quoi, droits du dev) déclenche une nouvelle version. Les pilotes signataires reçoivent une notification email avec diff lisible.