De Claude Code à OpenCode : une migration sans perte de contrôle
claude
(CLI propriétaire) vers opencode (CLI open source compatible).
Zéro perte de capacité. Zéro régression sur les circuits de sécurité.
Les 7 agents, 58 crons, 3 moteurs d'atelier et 2 sessions Clark continuent
de tourner comme avant. Sur une base ouverte, auditée et libre.
Pourquoi ce changement
Claude Code est un outil excellent. Il a construit la moitié de la Tour : 16 modules de la plateforme, l'app mobile, les moteurs d'atelier, la vitrine, les agents. Mais c'est un outil propriétaire. Son code source n'est pas public. Ses évolutions sont décidées par une entreprise. Son avenir ne nous appartient pas.
OpenCode est son successeur open source. Même protocole, mêmes API, mêmes fichiers de projet. Mais le code est dans la main de la communauté. Pour une tour qui repose sur la transparence et la reproductibilité, c'était un passage naturel.
Ce qui a changé
- Commande :
claude→opencode. Mêmes flags (-p,--resume). - Authorization : le jeton d'abonnement fonctionne à l'identique.
- Moteurs :
claude.sh→opencode.shdans~/atelier/moteurs/. - Fichiers projet : Le fichier de règles du projet reste le même — OpenCode le lit.
- Outils : même jeu d'outils (Read, Write, Edit, Bash, Glob, Grep, WebFetch, Task).
opencode -p lit bien le fichier de règles comme fichier de
contexte. Et que les sessions long-courriers de Clark (certaines durent 15+
échanges) survivent à un changement de binaire. Réponse : oui. Le format
.session est compatible.
Ce qui n'a pas changé — et c'est le plus important
La Tour est conçue pour que le moteur d'IA soit interchangeable.
C'est une règle d'architecture posée dès les premiers jours. La tour ne lance
aucune commande directement. Elle dépose des fichiers dans
~/atelier/missions/. Le script atelier.sh les
ramasse avec le moteur désigné par l'en-tête #!moteur:.
Ce ne sont pas les binaires qui protègent la tour. Ce sont :
- Les en-têtes de mission validés (
[a-z0-9_-]+— pas de barre oblique, pas de commande) - Les worktrees (Clark travaille dans un clone, jamais dans la production)
- Les verrous de production (rien ne part sans approbation via Décisions)
- Les contrôles de Victor (9 contrôles déterministes, zéro jeton)
- Le pentest externe (Victor ingère les résultats du
deploy/pentest.sh)
La continuité des agents
La Tour compte aujourd'hui 7 agents actifs. Chacun avait son moteur :
- Raph (le copilote, mode gold) — API Anthropic directe, inchangé
- Chloé (l'assistante, bulle flottante) — API Anthropic/DeepSeek, inchangée
- Clark (le développeur, discussion suivie) —
discussion.sh→ OpenCode - Atelier (missions ponctuelles) —
claude.sh→opencode.sh - Victor (sécurité) — zéro jeton, zéro changement
- Braignak (observation) — via atelier, donc OpenCode
- Lois (relecture) — Read/Glob/Grep seulement, zéro changement
La bascule s'est faite en une commande par moteur. Copier le nouveau
binaire dans le PATH du serveur. Mettre à jour les scripts
~/atelier/moteurs/. Vérifier que opencode -p
répond. Les 58 crons, les 3 moteurs d'atelier, les sessions Clark et les
contrôles de Victor ont tous passé leur retest.
Ce que ça change pour la suite
La Tour peut désormais être reconstruite sans dépendre d'un outil propriétaire. Le code source d'OpenCode est public. Ses bugs se reportent et se corrigent. Ses forks se maintiennent. Pour une tour qui veut durer — et vendre la reproductibilité à ses clients — c'est un pas de plus vers la souveraineté technique.
Prochaine étape : remplacer le dernier point propriétaire. L'API Anthropic de Chloé et Raph. Par un modèle open source hébergé localement ou chez un fournisseur interchangeable.