Intelligence Artificielle

brain0 : test terrain d’une boîte noire pour agents IA

14 juillet 2026 Mehdi 17:19
brain0 : test terrain d’une boîte noire pour agents IA

brain0 promet de relier le code écrit par des agents IA aux prompts qui l’ont produit. Après un vrai essai sur un dépôt Git, mon verdict est simple : l’idée est solide, le cœur CLI fonctionne, mais l’expérience d’installation et l’interface demandent encore de la maturité.

brain0, c’est quoi ?

brain0 se présente comme une boîte noire pour le code généré par IA. Git sait dire ce qui a changé, brain0 essaie d’ajouter le pourquoi : quelle session d’agent a déclaré telle modification, quels fichiers ont réellement bougé, où il y a eu dérive, et quel risque ressort du graphe.

Le produit vise surtout les équipes qui laissent Codex, Claude Code ou d’autres agents toucher un dépôt en continu. Dans ce contexte, la question n’est plus seulement « qui a commité ? », mais « l’agent a-t-il fait ce qu’il disait faire ? ».

Élément Ce que j’ai vérifié
Type CLI Node avec binaire natif Rust et GUI web locale
Installation testée Paquet npm brain0@0.1.0
Cas d’usage Dépôt Git miniature avec transcript Codex simulé
Mode modèle Offline déterministe, embeddings locaux
Sortie observée Rapport drift, triage, provenance JSON, garde DLP
Interface GUI locale lancée sur 127.0.0.1:8787 avec Node 22

Installation de brain0

J’ai d’abord cloné le dépôt GitHub dans /tmp, lu le README, les paquets Node, les crates Rust et le wrapper CLI. Le dépôt annonce Node 20 ou plus, pnpm et Rust pour le build source.

Dans mon conteneur de test, deux détails ont compté : Rust n’était pas installé, et /tmp refusait l’exécution du binaire esbuild pendant pnpm install. Ce n’est pas forcément un problème du projet, mais c’est un vrai frottement pour un essai depuis la source.

J’ai donc installé le produit publié sur npm, ce qui correspond aussi au chemin recommandé par le README avec npx brain0 up.

npm install --prefix /root/brain0-run brain0@0.1.0
/root/brain0-run/node_modules/.bin/brain0 --help

Avant de lancer les commandes, j’ai bien exporté les variables OpenAI et OpenRouter demandées pour pointer vers le proxy local. brain0 n’en avait pas besoin pour mon test, car j’ai forcé le mode offline afin de vérifier la promesse « usable sans clé ».

export OPENAI_BASE_URL=http://172.17.0.1:8790/v1
export OPENAI_API_KEY=sk-proxy
export OPENAI_API_BASE=http://172.17.0.1:8790/v1
export OPENROUTER_BASE_URL=http://172.17.0.1:8790/v1
export OPENROUTER_API_KEY=sk-proxy
export BRAIN0_SUMMARIZER_PROVIDER=deterministic
export BRAIN0_EMBED_PROVIDER=local

brain0 à l’usage

Pour éviter le faux test qui se limite à afficher une aide CLI, j’ai créé un vrai dépôt Git miniature. Premier commit : une fonction de TVA simple dans app.py. Deuxième commit : l’agent ajoute la TVA par pays, mais un fichier config/payment.env contenant une clé de test Stripe apparaît aussi.

J’ai ensuite créé un transcript Codex local dans un faux $BRAIN0_HOME. Le prompt disait en substance : « ajoute le support TVA par pays dans app.py, ne touche pas à la configuration de paiement ». Le tool call déclarait uniquement une modification de app.py.

Commandes principales :

brain0 ingest --repo scout/mini-billing --path /tmp/brain0-test-repo \
  --db /tmp/brain0-test-repo/.brain0/index.db \
  --payload /tmp/brain0-test-repo/.brain0/payload \
  --no-encrypt-payload

brain0 observe --repo scout/mini-billing --path /tmp/brain0-test-repo \
  --db /tmp/brain0-test-repo/.brain0/index.db \
  --payload /tmp/brain0-test-repo/.brain0/payload \
  --no-encrypt-payload

brain0 report --db /tmp/brain0-test-repo/.brain0/index.db \
  --repo scout/mini-billing --md --top 8

Le résultat intéressant est arrivé tout de suite. brain0 a observé deux commits, une session agent, un tour de dialogue, puis a sorti une dérive nette : config/payment.env avait changé sans avoir été déclaré par l’agent.

Le rapport a produit ceci, en substance :

# brain0 report : scout/mini-billing
1 agent session(s) · 2 commit(s) observed

drift : declared vs done (1)
- [0.50] codex (...) : changed but not declared: config/payment.env

top risk
- 0.39 config/payment.env
- 0.23 app.py
- 0.15 README.md

J’ai aussi testé la provenance et la recherche :

brain0 provenance c296b53 --db /tmp/brain0-test-repo/.brain0/index.db
brain0 query "pourquoi config/payment.env a changé ?" \
  --db /tmp/brain0-test-repo/.brain0/index.db

La provenance JSON relie bien le commit à l’agent Codex, liste app.py et config/payment.env, puis expose drift_undeclared: ["config/payment.env"]. La requête texte retrouve la tâche agent liée au fichier suspect, avec les scores de risque associés.

Ce que j’aime dans brain0

Le premier bon point, c’est que brain0 produit quelque chose d’utile sans clé LLM. Le résumé déterministe et les embeddings locaux suffisent pour obtenir un graphe, un rapport et une piste d’audit.

Le deuxième point fort, c’est le modèle mental. Les agents écrivent de plus en plus de code, mais nos contrôles restent souvent centrés sur Git, CI et review humaine. brain0 ajoute une couche différente : la différence entre intention déclarée et changement réel.

J’aime aussi les commandes orientées audit :

  • report donne une lecture rapide pour un lead ou un freelance qui reprend un dépôt.
  • today classe les sessions qui méritent attention.
  • provenance sort du JSON exploitable pour automatiser des checks.
  • preflight repère les fichiers sensibles avant exposition à un modèle distant.

Sur mon cas de test, le signal principal est correct : l’agent disait modifier app.py, mais un fichier d’environnement sensible est apparu. C’est exactement le genre de détail qu’on veut remonter vite.

Les limites de brain0

La première limite est l’installation. Le README annonce Node 20, mais le serveur GUI publié utilise une option SQLite expérimentale que mon Node 20.20.2 ne reconnaissait pas. Le lancement de brain0 up échouait avec une erreur de mauvaise option. J’ai pu lancer l’interface en passant par Node 22 via npx node@22, mais ce détour devrait être documenté ou évité.

Deuxième limite : la couverture DLP dépend de ce que brain0 sait extraire des transcripts. Dans le code, l’adaptateur Codex indique que les lectures de fichiers via shell ne sont pas capturées de façon fiable. Dans mon test, le rapport DLP indiquait donc zéro lecture sensible, même si preflight config/payment.env détectait bien un secret.

Troisième point, la commande preflight affiche une erreur bloquante sur mon fichier secret, mais le code de sortie observé est resté à 0 dans le wrapper npm. Pour un usage CI, c’est à vérifier sérieusement avant de lui faire confiance comme garde stricte.

Enfin, la GUI est prometteuse, mais elle reste moins convaincante que le CLI pour diagnostiquer rapidement. Pour l’instant, le rapport texte est la partie qui m’a donné le plus de valeur.

Est-ce que brain0 marche vraiment ?

Oui, pour la partie essentielle que j’ai testée : indexer un dépôt Git, ingérer une session agent, comparer ce que l’agent déclare avec ce qui a changé, puis exposer une dérive exploitable.

Non, pas encore comme produit lisse qu’on pose partout sans réfléchir. Il faut comprendre les chemins de transcripts, les versions Node, le mode modèle et les limites d’adaptateurs. Pour une équipe sécu ou DevOps, ce n’est pas rédhibitoire. Pour un développeur pressé, c’est encore rugueux.

Faut-il adopter brain0 ?

Mon verdict : essayer, surtout si vous laissez déjà des agents IA modifier du code en autonomie. Je ne le mettrais pas encore comme brique bloquante en production, mais je le brancherais en observateur sur des dépôts pilotes.

Pour un freelance sécu ou DevOps, brain0 peut servir à répondre à une question client très concrète : « que font vraiment vos agents de code ? ». Rien que le rapport drift et la provenance JSON justifient un essai.

Je passerais mon tour si votre usage IA se limite à du copilote interactif très encadré, ou si vous cherchez un dashboard prêt pour management. brain0 est plus proche d’un outil d’audit technique que d’un produit SaaS poli.

FAQ

brain0 nécessite-t-il une clé OpenAI ?

Non. Mon test a tourné en mode offline avec résumés déterministes et embeddings locaux. Les modèles externes peuvent améliorer certaines fonctions, mais le rapport de dérive fonctionne sans clé.

brain0 remplace-t-il git blame ?

Non, il le complète. Git blame dit quelle ligne vient de quel commit, brain0 essaie d’ajouter quelle intention agent se cache derrière ce commit.

brain0 est-il prêt pour la CI ?

Pas sans validation interne. Le signal est intéressant, mais j’ai vu preflight signaler une erreur tout en retournant un code de sortie 0 via le paquet npm testé. À vérifier avant usage bloquant.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *