Présentation de ThinkRail
ThinkRail est un IDE open source publié sous licence Apache‑2.0 par JetBrains. Il se définit comme un « agentic IDE » : un agent de codage nommé pi s’exécute en‑processus et interagit avec l’utilisateur via une interface web. Le produit fonctionne sur macOS, Windows et Linux et s’installe via un lanceur local qui ouvre une UI navigateur. Le modèle d’utilisation repose sur la création de workspaces qui sont des git worktree isolés, chaque workspace disposant de sa propre branche et de son propre répertoire de travail (cwd).
curl -fsSL https://raw.githubusercontent.com/JetBrains/thinkrail/main/install.sh | bashArchitecture technique
Le code est structuré en trois couches distinctes. La couche engine host (package packages/server) expose un serveur HTTP + WebSocket via la fonction createServer() et gère un AgentSessionManager qui crée une session pi par onglet. La couche wire (package packages/contracts) définit un protocole typé et versionné, garantissant la compatibilité entre le serveur et le client UI. Enfin, la couche UI client (package apps/web) est une application React mobile‑first qui se connecte au serveur via le protocole décrit.
Chaque workspace possède un terminal PTY réel, un diff Git en temps réel et un éditeur Monaco (moteur de VS Code) qui rend la syntaxe et le markdown. Le modèle pi peut être sélectionné par session, et le nombre de tokens ainsi que le coût associé s’affichent dynamiquement dans l’en‑tête.
Gestion des worktrees et spécifications
ThinkRail transforme chaque branche de travail en un git worktree placé sous ~/.thinkrail/worktrees/. Cette isolation évite les conflits entre agents : l’agent A peut travailler sur feature/auth tandis que l’agent B corrige fix/flaky-test, sans que les modifications ne se mélangent. La suppression d’un workspace supprime simplement le worktree, laissant le dépôt principal intact.
Le projet adopte une approche spec‑first. Chaque module possède un fichier SPEC.md contenant du front‑matter (id, type, status, parent) qui s’intègre dans un graphe de spécifications maintenu par l’extension pi‑spec‑graph. L’agent lit, recherche et met à jour ces spécifications, garantissant que l’intention du projet persiste au-delà des sessions interactives.
Implications et limites
Sur le plan technique, l’utilisation de worktrees minimise le risque de corruption du dépôt principal, mais elle impose la présence de git et d’un fournisseur pi authentifié, ce qui peut compliquer le déploiement en environnements CI stricts. Le modèle en‑processus de pi réduit la latence d’interaction mais augmente la consommation de mémoire, surtout lorsqu’on exécute plusieurs sessions simultanément. Le protocole typé assure la stabilité des échanges, mais toute évolution majeure du schéma nécessite une mise à jour synchronisée du serveur et du client, ce qui peut ralentir l’adoption de nouvelles fonctionnalités.
En résumé, ThinkRail propose une architecture modulaire qui combine isolation Git, édition riche via Monaco et un agent de codage intégré. Son modèle open source permet aux équipes de l’auditer, mais la dépendance à un fournisseur de modèles pi et la complexité de la gestion de multiples worktrees restent des points d’attention pour les organisations soucieuses de la scalabilité et de la sécurité.