D'un robot à un écosystème
En deux mois et 269 commits, j'ai reconstruit un robot capable de jouer avec mon chat — avec un LLM comme co-pilote. Six jours après l'avoir mis en pause, je lançais ce qui allait devenir une plateforme entière. Le récit du détour qui a tout déclenché.
Le robot qui devait apprendre à voir a appris à voir, en deux mois. Le 17 janvier 2026, j'ouvrais un dépôt vide pour ce nouveau picar — l'énième version d'un projet de robotique que je trimballe depuis des années. Le 15 mars 2026, deux cent soixante-neuf commits plus tard, il jouait à cache-cache avec mon chat. Et puis je l'ai rangé.
Il sort de temps en temps. Il le cherche, fonce, va se cacher dans deux ou trois endroits ; le chat lui saute dessus, puis disparaît à son tour. La boucle s'arrête là : la deuxième passe — celle où le robot reprendrait sa traque — je ne l'ai pas encore écrite. Pendant que ce robot attendait, une plateforme entière s'est construite à côté de lui, faite de tout ce qui lui manquait pour devenir le robot que je voulais vraiment.
Un an pile entre les deux PiCar
J'avais déjà fait des robots sous ROS. Le précédent, PiCar v1, est sorti en janvier 2025 — quatre dépôts créés le même jour, code intégralement écrit à la main, sans assistant IA. Il marchait bien. Mais l'ambition que j'avais pour la suite — vision par ordinateur, assistant IA embarqué capable de raisonner sur son environnement — m'était inaccessible dans ce format. La complexité explosait trop vite pour un humain seul à la barre.
L'année 2025 m'a fait deux cadeaux. Le premier : j'ai pris le temps de tester les LLM sur du code, ce que tout le monde faisait à ce moment-là, et de voir que ça devenait, doucement, utilisable. Le second, c'est l'envie. Pas de faire un meilleur PiCar, mais de me prouver à moi-même que j'apprendrais l'IA en l'utilisant — en codant avec elle, jour après jour. Le robot était l'excuse. Le co-pilotage avec un LLM, le vrai sujet.
Le 17 janvier 2026 — un an pile après PiCar v1 — j'ouvrais le dépôt picar. Premier commit substantiel le même matin : « SIM: rendu GPU /dev/dri + fallback CPU ». La simulation Gazebo avant même la mécanique. Ça donnait le ton de la session entière.
Deux mois, deux cent soixante-neuf commits
Pendant les cinquante-sept jours qui ont suivi, j'ai poussé en moyenne 4,7 commits par jour sur ce dépôt. Drivers, abstraction matérielle, communication entre nœuds ROS 2, SLAM, planification Nav2, modules de vision, panneaux de contrôle dans l'interface web. Stack hybride : Python pour le robot, TypeScript pour l'UI, Shell pour les déploiements PC et Raspberry Pi.
C'est la période où j'ai le plus appris depuis dix ans. Le LLM faisait la moitié du clavier ; je faisais la moitié de la décision. Ça produit un effet difficile à décrire tant qu'on ne l'a pas vécu : tu cesses de gaspiller des heures à lire des docs de bibliothèques peu documentées, parce que l'agent t'en restitue déjà l'essentiel. Tu cesses de fuir des modules que tu ne maîtrises pas, parce que l'agent te tient la main dessus pendant les deux premiers prototypes. Tu apprends sept fois plus vite, ce qui veut dire que le projet avance sept fois plus vite, ce qui veut dire que tu décides sept fois plus souvent — et c'est là que se joue ta valeur ajoutée d'humain dans la boucle.
Le 15 mars 2026, dernier commit picar : « feat: refactor HealthPanel and RobotPanel to streamline shutdown and restart actions ». Le robot, à ce moment-là, jouait avec mon chat. Une boucle de chasse-cache fonctionnelle, observable, drôle. Pas terminée — il manque la deuxième passe — mais bien là, dans le salon, sortant de temps en temps de son coin pour faire ce qu'il sait faire.
Le déclic en parallèle, daté à six jours près
Pendant que je codais picar, autre chose se passait. Le 31 janvier 2026 — deux semaines après le premier commit picar — je créais deux dépôts en parallèle : knowledge (les documents et décisions techniques) et knowledge-api (le service qui les expose, avec son MCP Server).
À ce stade je n'avais construit qu'un seul serveur MCP, simple, pour comprendre ce que le protocole pouvait faire. J'avais creusé ce qu'on pouvait brancher derrière : du code en direct, des API, des bases de données. C'est en jouant avec les bases vectorielles que j'ai vraiment compris ce que veut dire recherche sémantique. J'ai monté un MCP qui exposait ma propre base de connaissances. Et un soir, j'ai testé une boucle : j'ai donné à un LLM le document de vision du gestionnaire de projet dont je rêvais, en lui ouvrant l'accès à cette knowledge. Il a codé tout seul, pendant des heures. Le résultat partait en vrille au bout d'un moment et il a fallu l'arrêter — l'œil humain, les garde-fous et la rigueur restent indispensables. Mais quelque chose s'était passé.
Le récit détaillé de cette nuit-là tient dans un autre article — la boucle de rétroaction MCP — parce qu'elle mérite mieux que trois paragraphes. Ce qui compte ici, c'est la date. Le 15 mars, dernier commit picar. Le 21 mars, premier commit MCP-Unified. Six jours. Six jours seulement entre l'arrêt du robot et le début d'une cascade qui allait produire, en moins de deux mois, une nouvelle vague de briques.
Pourquoi ranger le robot
Le robot marchait. La question n'était pas de le sauver — elle était de savoir ce que je voulais en faire ensuite. Et ensuite, c'était : plus de vision (sémantique, pas pixel), plus de raisonnement (planifier une scène, pas une trajectoire), plus d'autonomie longue (savoir où il en est, ce qu'il a fait, ce qu'il doit faire demain). Tout ça, vu de mon coin de salon, ressemblait moins à un robot qu'à un écosystème.
Je suis allé construire cet écosystème. Brique par brique, ce qui aurait dû être un outil interne pour mon robot s'est transformé en plateforme pour tout ce que je voulais opérer. Les noms sont sur la page Stack ; ce qui compte ici c'est le rythme. Entre le 21 mars et le 17 mai 2026 — soit cinquante-sept jours — une cascade de nouveaux dépôts s'est déversée dans l'écosystème. À un rythme soutenu, une nouvelle brique presque tous les deux jours. Ce rythme-là est à la fois exaltant et un peu inquiétant. Il fait l'objet d'un article séparé, vingt-trois briques en cinquante-sept jours, parce qu'il dit beaucoup sur ce que la boucle de rétroaction MCP rend possible — et sur ce qu'elle coûte.
Le code du robot, lui, est versionné dans son dépôt et indexé dans la knowledge. Quand je rouvrirai picar, le MCP saura ce que mes modules font déjà avant d'en proposer de nouveaux. Les décisions techniques auront un endroit pour vivre. Le dashboard saura me dire si le pod du robot tourne. Tout ce qui m'avait freiné la première fois n'existera plus comme obstacle.
Le robot attend son retour
En attendant, il sort de temps en temps. Pas pour ses missions futures — pour jouer avec le chat.
Le prototype, celui que j'ai laissé tel quel le 15 mars 2026, sait faire deux choses : trouver le chat dans la pièce, et se cacher. Il déclenche la chasse, le chat le voit, le chat fonce, le robot file dans un coin. Le chat lui saute dessus en deux bonds. Puis le chat va se cacher à son tour derrière le canapé, dans la position d'attendre.
C'est là que ma boucle s'arrête. Je n'ai pas encore écrit la suite : le moment où le robot reprend sa traque, où il re-cherche le chat caché et re-se-cache à son tour. La deuxième passe. Celle qui transformerait le jeu en un vrai cycle.
C'est probablement la première fonctionnalité que j'écrirai quand je rouvrirai ce projet. Symboliquement, c'est la bonne — boucler ce qui n'avait pas été bouclé, avec les outils qui auront permis tout ce qui a été construit entre-temps. Le chat sera content. Et moi, j'aurai eu, pendant les deux mois passés à coder un robot et les mois suivants passés à construire la plateforme qui le rendra meilleur, la meilleure raison qui soit pour bâtir un écosystème entier : un chat qui n'attend que ça.
Voir aussi