đ Orca : un worktree par ticket, et vos agents autour

đ Introduction
Depuis que je dĂ©lĂšgue une partie du code Ă des agents, le goulot dâĂ©tranglement sâest dĂ©placĂ© vers la gestion de lâĂ©tat local. Un agent corrige un bug sur une branche, pendant ce temps jâai une review Ă faire sur une autre, et un deuxiĂšme agent attend son tour parce que le dĂ©pĂŽt nâa quâun seul checkout. RĂ©sultat : des git stash en cascade, des terminaux quâon ne sait plus rattacher Ă quelle tĂąche, et un onglet Linear ouvert Ă cĂŽtĂ© pour se souvenir de ce quâon Ă©tait censĂ© faire.
Orca prend ce problĂšme par le bon bout. LâidĂ©e tient en une phrase : chaque tĂąche vit dans son propre git worktree, avec ses agents, ses terminaux, son diff et son ticket attachĂ©. Le reste de lâapplication est construit autour de cette unitĂ©.
Je lâutilise surtout avec Claude Code, dans la continuitĂ© de Laravel Boost. Voici une visite guidĂ©e, captures Ă lâappui, puis la façon dont Orca sâarticule avec le harness engineering que je dĂ©crivais dans lâarticle prĂ©cĂ©dent.
đ Quâest-ce quâOrca ?
Orca est une application desktop open source, sous licence MIT, développée par Stably AI. Elle se présente comme un « agent development environment » : un endroit unique pour lancer des agents de code CLI cÎte à cÎte, avec des terminaux, un éditeur, un diff, un navigateur et une CLI. Elle tourne sur macOS, Windows et Linux, et une app compagnon existe pour iOS et Android.
Orca nâembarque aucun modĂšle. Il orchestre les agents que vous avez dĂ©jĂ : Claude Code, Codex, Cursor CLI, Gemini, Copilot, OpenCode et Pi sont prĂ©configurĂ©s, et nâimporte quel agent qui tourne dans un terminal fonctionne. On garde ses propres abonnements.
Lâinterface principale, capture officielle du README Orca.
La capture résume bien le produit :
- Ă gauche, la barre latĂ©rale : Tasks (les tickets), Automations, Orca Mobile, Search, puis la liste des workspaces. Chaque carte affiche le dĂ©pĂŽt, la branche, les agents actifs, leur dernier message et lâĂ©tat de la PR liĂ©e.
- Au centre, le workspace
improve-readmeavec deux agents ouverts dans le mĂȘme worktree : Claude Code Ă gauche, Codex Ă droite, et un terminal en dessous qui installe les dĂ©pendances. - Ă droite, lâexplorateur de fichiers du worktree.
- En bas, la barre dâĂ©tat avec la consommation Claude et Codex (fenĂȘtre de 5 heures et hebdomadaire).
- En incrustation, lâapp mobile, qui liste les machines appairĂ©es et les sessions Ă reprendre.
đ Pourquoi les worktrees changent tout ?
Parce quâun worktree donne Ă chaque tĂąche son propre dossier sur disque, sur sa propre branche, tout en partageant le mĂȘme .git. Deux agents lancĂ©s sur deux tĂąches distinctes peuvent modifier le mĂȘme fichier en mĂȘme temps sans conflit local.
La commande existe dans git depuis longtemps :
git worktree add ../mon-projet-fix-login -b fix/login origin/main
cd ../mon-projet-fix-login
# ⊠travailler, commiter, pousser
git worktree remove ../mon-projet-fix-loginRien de neuf, donc. Mais Ă la main câest pĂ©nible : nommer le dossier, choisir la base, rĂ©installer les dĂ©pendances, se rappeler quel dossier sert Ă quoi, nettoyer derriĂšre.
Orca automatise toute cette plomberie. La boĂźte de dialogue « Create Worktree » demande un nom de tĂąche, une ref de dĂ©part (origin/main par dĂ©faut, mais aussi une branche locale, un SHA ou une branche distante) et, Ă©ventuellement, un lien vers un ticket. Le git fetch et le git worktree add tournent en arriĂšre-plan pendant quâune ligne de progression sâaffiche dans la barre latĂ©rale, et on choisit lâagent qui sâouvre dans le premier onglet. Ă la suppression, le dossier et la branche partent ensemble. Si une branche locale contient des commits non fusionnĂ©s, Orca la garde et le signale.
Le point qui mâa convaincu, ce sont les dĂ©pendances. RecrĂ©er un node_modules ou un vendor par worktree, câest vite plusieurs minutes et plusieurs gigas. Orca propose de lier ces dossiers ignorĂ©s par git via un orca.yaml Ă la racine du dĂ©pĂŽt :
# orca.yaml
worktree:
sharedDirectories:
- node_modules
- .cacheCes dossiers sont symlinkĂ©s dans chaque nouveau worktree. Pour les fichiers quâon veut au contraire copier (un .env typiquement), il existe un fichier .worktreeinclude qui liste des chemins littĂ©raux.
đ€ Plusieurs agents par worktree, et un Ćil sur chacun
Le premier agent nâest pas seul. Dans Orca, une session correspond Ă un agent CLI dans un terminal, et un worktree peut en accueillir autant quâon veut, en onglets ou en splits : Claude Code qui implĂ©mente, Codex qui Ă©crit les tests Ă cĂŽtĂ©, un shell pour lancer le serveur. Tout ce petit monde partage la mĂȘme branche. Câest Ă vous de rĂ©partir le travail pour quâils ne réécrivent pas le mĂȘme fichier au mĂȘme moment.
Avec dix sessions ouvertes, la question devient : qui attend quoi ? La barre latérale répond directement. Chaque workspace liste ses agents avec leur état et un aperçu de leur dernier message.
Deux agents dans le mĂȘme workspace, chacun avec son Ă©tat. Capture officielle.
Un fil « Agents » regroupe aussi les Ă©vĂ©nements de tous les worktrees : agent qui a fini son tour, agent bloquĂ© sur une question, worktree créé. Les agents en cours restent Ă©pinglĂ©s en haut, et un clic ramĂšne sur le bon worktree et le bon panneau. Les notifications systĂšme continuent de signaler la fin dâun agent.
Pour ne pas saturer la machine, on peut mettre un worktree en veille depuis la barre latĂ©rale ; Orca garde les sessions de quoi les relancer. Une option expĂ©rimentale (dĂ©sactivĂ©e par dĂ©faut) va plus loin et suspend automatiquement les terminaux dâagents inactifs depuis 30 minutes, puis les reprend Ă la rĂ©ouverture du worktree.
đ« Du ticket Ă la branche sans changer de fenĂȘtre
Câest la partie qui simplifie le plus mon quotidien. Orca branche trois sources de tĂąches dans une mĂȘme liste : GitHub (issues, PR et GitHub Projects), Linear et Jira, Cloud comme Server/Data Center.
Un tableau GitHub Projects ouvert dans Orca. Capture officielle.
Le flux est toujours le mĂȘme. Je pars dâun ticket, je clique pour crĂ©er un worktree, et le composer se prĂ©-remplit avec le nom de la tĂąche et le lien vers lâissue. Pour Linear, Orca reprend mĂȘme le nom de branche suggĂ©rĂ© par Linear plutĂŽt quâun slug du titre, ce qui garde la convention de lâĂ©quipe intacte. Le ticket reste affichĂ© sur la carte du worktree : trois jours plus tard, je sais encore pourquoi cette branche existe.
Quelques détails qui comptent :
- CĂŽtĂ© Jira, la recherche accepte du texte libre ou du JQL, et on peut changer le statut dâun ticket via ses transitions.
- CÎté Linear, on édite statut, assignee, priorité et labels depuis Orca. Le passage automatique en « In Progress » à la création du worktree existe, mais il est opt-in par équipe.
- Quand on lance un agent depuis une issue Linear, les images de la description et des commentaires sont injectĂ©es dans le prompt. Pratique pour un bug UI avec capture dâĂ©cran.
- Les tableaux GitHub Projects sâaffichent en kanban, et dĂ©placer une carte met Ă jour le champ statut du projet.
đ§° Relire ce que lâagent a produit
Faire Ă©crire du code Ă un agent est facile, le relire proprement beaucoup moins. Orca embarque un visualiseur de diff oĂč lâon commente nâimporte quelle ligne (touche c ou le + dans la gouttiĂšre), en Markdown.
Le diff « All Changes » dâun worktree, prĂȘt Ă ĂȘtre annotĂ©. Capture officielle.
Les commentaires sâaccumulent, puis un bouton « Send to agent » les envoie tous dâun coup sous forme dâun seul prompt ancrĂ© sur les lignes. On choisit quel agent du worktree reçoit les notes, ou on en dĂ©marre un nouveau. Lâagent fait une passe de correction au lieu de rĂ©agir commentaire par commentaire, et les commentaires restent Ă©pinglĂ©s pour vĂ©rifier le rĂ©sultat.
Ensuite, tout se passe dans lâoutil : commit, push, ouverture de la PR. Si GitHub Actions Ă©choue, une pastille rouge apparaĂźt sur le worktree avec les logs du job en ligne, et lâaction « Fix broken checks » transmet les checks en Ă©chec Ă un agent.
Il y a aussi un mode plus ambitieux, documentĂ© dans la recette « parallel agents » : crĂ©er trois worktrees depuis la mĂȘme base, donner le mĂȘme prompt Ă Claude Code, Codex et Cursor CLI, comparer les trois diffs, garder le meilleur et supprimer les autres. Je ne le fais pas sur chaque ticket, ça coĂ»te du quota. Sur un bug coriace, en revanche, voir oĂč les agents divergent indique trĂšs vite oĂč se trouve la vraie difficultĂ©.
đ ïž Le reste de la boĂźte Ă outils
Orca ne se limite pas aux worktrees :
- Terminaux rendus en WebGL, splits illimités, scrollback restauré au redémarrage.
- Navigateur Chromium par worktree, avec un Design Mode : on clique sur un Ă©lĂ©ment de la page et son HTML, son CSS et une capture recadrĂ©e partent dans le prompt de lâagent.
- Worktrees distants via SSH, pour faire tourner les agents sur une machine plus musclée, avec reconnexion automatique et redirection de ports.
- Suivi de lâusage Claude et Codex, avec les resets de rate limit et un changement de compte Codex sans se reconnecter.
- Automations : des prompts planifiés (
hourly,daily, une expression cronâŠ) confiĂ©s Ăclaudeoucodexsur un dĂ©pĂŽt ou un workspace. Une commande--precheckpeut sauter un run quand il nây a rien Ă faire. - App mobile (bĂȘta) : elle affiche les worktrees, leurs agents et leur Ă©tat, permet de rĂ©pondre briĂšvement Ă un agent bloquĂ© et envoie une notification quand un agent a fini. Ce nâest volontairement pas un Ă©diteur, et lâapp desktop doit rester joignable.
Reste la CLI, livrĂ©e avec lâapp et activable dans Settings â General â Orca CLI. Les agents eux-mĂȘmes peuvent sâen servir. Exemple, crĂ©er un worktree liĂ© Ă une issue :
orca worktree create --repo id:<repoId> --name my-task --issue 123 --json
orca worktree ps --jsonđ Et le harness engineering dans tout ça ?
Orca ne remplace pas votre harnais, il lui donne un endroit oĂč tourner. Dans lâarticle sur le harness engineering, je partais de la formule Agent = Model + Harness : le harnais, câest tout ce qui entoure le modĂšle (instructions, hooks, tests, CI) pour quâil livre juste. Orca se place une couche au-dessus. Il lance les agents, mais câest votre harnais qui dĂ©cide de la qualitĂ© de ce quâils produisent. Bonne nouvelle : il le respecte, et il en comble plusieurs trous.
Le harnais voyage avec le dĂ©pĂŽt. Orca lit les CLAUDE.md et AGENTS.md sans y toucher, et les affiche dans lâexplorateur pour les Ă©diter sur place. Surtout, les hooks dĂ©jĂ prĂ©sents dans .claude/ ou .codex/ sâexĂ©cutent quand Orca lance un agent dans un de ses worktrees. Le hook qui refuse le « câest fini » tant que la vĂ©rification est rouge marche donc Ă lâidentique dans dix worktrees en parallĂšle. Rien Ă reconfigurer.
LâĂ©tape 0 devient automatique. Le harnais commence par un projet qui se lance en une commande. Orca permet de dĂ©clarer, dans Settings â Repository â Hooks, des commandes exĂ©cutĂ©es Ă la crĂ©ation de chaque worktree : installer les dĂ©pendances, restaurer le .env. Avec sharedDirectories et .worktreeinclude, chaque nouvel agent dĂ©marre sur un projet prĂȘt Ă tester, au lieu de deviner comment lâinstaller.
Le harnais de comportement gagne un navigateur. CâĂ©tait la case vide de la grille de Böckeler. Chaque worktree a son propre Chromium, et la CLI Orca permet Ă lâagent de le piloter lui-mĂȘme :
orca goto --url http://localhost:3000 --worktree active --json
orca snapshot --worktree active --json
orca click --element @e3 --worktree active --json
orca console --limit 50 --worktree active --jsonLâagent peut donc vĂ©rifier sa fonctionnalitĂ© comme un utilisateur, lire la console et les requĂȘtes rĂ©seau, sans que deux worktrees se disputent le mĂȘme onglet.
Le sensor CI revient dans la boucle. Un check GitHub Actions rouge sâaffiche sur le worktree, et « Fix broken checks » renvoie les Ă©checs Ă un agent. La CI reste le juge final ; Orca raccourcit juste le trajet entre son verdict et la correction.
La boucle de pilotage se lit mieux. Le panneau dâhistorique des sessions liste les transcripts laissĂ©s par les agents, avec recherche par branche, modĂšle ou contenu, et accĂšs au log brut. Câest exactement ce dont on a besoin pour relire les deux ou trois sessions qui ont mal tournĂ©. Une mise en garde, quand mĂȘme : annoter un diff et renvoyer les notes corrige la tĂąche en cours, pas le harnais. Si vous Ă©crivez trois fois le mĂȘme commentaire, il a sa place dans lâAGENTS.md ou dans un contrĂŽle qui casse.
La garbage collection se planifie. Les automations Orca lancent un prompt sur un dĂ©pĂŽt ou un workspace selon un planning (daily, weekly, cronâŠ), avec une commande --precheck qui saute le run quand il nây a rien Ă faire. Câest le job de nettoyage que je dĂ©crivais : comparer la doc dâarchitecture au code, chercher le code mort, ouvrir une petite PR.
Un harnais se teste comme du code. Les worktrees parallĂšles sây prĂȘtent bien : la mĂȘme tĂąche, un agent avec lâancien AGENTS.md, un autre avec la nouvelle version, et on compare les diffs avant de gĂ©nĂ©raliser la rĂšgle.
Reste un point oĂč Orca va Ă lâencontre du harnais : les permissions. En lançant les agents sans confirmation par dĂ©faut (voir les prĂ©cautions), il retire une couche de garde-fous. Vos hooks, vos tests et votre CI deviennent alors les seuls contrĂŽles. Câest un argument de plus pour les avoir avant dâouvrir le premier worktree.
đ Installation
Sur macOS, Homebrew suffit :
brew install --cask stablyai/orca/orcaPour Windows et Linux, les binaires (.exe, AppImage, .deb, .rpm) sont sur la page Releases du dĂ©pĂŽt GitHub. Au premier lancement, Orca propose dâimporter ~/.claude, ~/.codex et les rĂ©glages Ghostty.
â ïž Quelques prĂ©cautions
- Les symlinks partagés restent partagés. Un
node_modulescommun Ă tous les worktrees, câest rapide, mais deux branches qui ont besoin de versions de dĂ©pendances diffĂ©rentes vont se gĂȘner. Dans ce cas, mieux vaut une installation par worktree. - Les agents tournent sans garde-fou par dĂ©faut. Orca considĂšre que le worktree sert de bac Ă sable et lance chaque agent avec son option dâautonomie complĂšte :
--dangerously-skip-permissionspour Claude Code,--dangerously-bypass-approvals-and-sandboxpour Codex,--yolopour Gemini. Or un worktree isole les fichiers de travail, pas le reste de la machine : lâagent peut lire votre$HOME, lancer nâimporte quelle commande et accĂ©der au rĂ©seau sans rien demander. Pour retrouver les confirmations, ouvrez Settings â Agents, dĂ©pliez lâagent et modifiez ses arguments de lancement (le bouton Reset rĂ©tablit la valeur dâorigine). Sur un dĂ©pĂŽt sensible, faites-le avant le premier lancement. - Deux agents dans le mĂȘme worktree partagent les mĂȘmes fichiers. RĂ©partissez-leur des zones distinctes, ou ouvrez un second worktree.
- Plusieurs agents en parallĂšle consomment plusieurs fois le quota. Le suivi dâusage aide, mais câest Ă vous de doser.
- Sous Linux, la CLI sâappelle
orca-ide, pour Ă©viter le conflit avec le lecteur dâĂ©cran GNOME Orca. - Le projet bouge trĂšs vite. Le README le dit lui-mĂȘme : la liste des fonctionnalitĂ©s a toujours un temps de retard sur le changelog. VĂ©rifiez la doc avant de vous appuyer sur un comportement prĂ©cis.
đ Conclusion
Orca nâinvente rien sur le fond : git worktree existe depuis des annĂ©es, et les agents CLI tournent trĂšs bien dans un terminal classique. Son apport est dâavoir assemblĂ© ces briques autour dâune unitĂ© simple, la tĂąche, qui rĂ©unit un ticket, une branche, un dossier, les agents qui y travaillent et un diff Ă relire.
Si vous faites dĂ©jĂ travailler un agent sur plus dâune tĂąche Ă la fois, ou si vous perdez du temps Ă jongler entre Linear, le terminal et lâĂ©diteur, essayez-le sur une semaine. Câest gratuit et open source ; prenez juste deux minutes pour rĂ©gler les arguments de lancement des agents avant de le lĂącher sur un vrai projet.
Les captures dâĂ©cran proviennent du README et du site officiels dâOrca.
đ Liens utiles
/faq
Questions fréquentes
Qu'est-ce qu'Orca ?
+
Orca est une application desktop open source (licence MIT) Ă©ditĂ©e par Stably AI, qui fait tourner des agents de code en ligne de commande (Claude Code, Codex, Cursor CLI, OpenCodeâŠ) cĂŽte Ă cĂŽte dans des git worktrees isolĂ©s, avec terminaux, diff, navigateur, intĂ©grations GitHub, Linear et Jira, et une app mobile compagnon.
Pourquoi utiliser un git worktree par tĂąche ?
+
Un worktree est une copie de travail sĂ©parĂ©e du mĂȘme dĂ©pĂŽt, sur sa propre branche. Deux tĂąches menĂ©es dans deux worktrees ne se marchent jamais sur les fichiers, et on n'a plus besoin de stash ni de changer de branche pour passer d'une tĂąche Ă l'autre.
Peut-on lancer plusieurs agents dans le mĂȘme worktree ?
+
Oui. Dans Orca, une session correspond Ă un agent CLI dans un terminal, et un worktree peut en accueillir plusieurs, en onglets ou en splits. Ils partagent alors la mĂȘme branche et les mĂȘmes fichiers.
Quel rapport entre Orca et le harness engineering ?
+
Orca ne remplace pas le harnais d'un projet (AGENTS.md, hooks, tests, CI) : il le fait tourner dans chaque worktree et y ajoute des piÚces, comme des commandes lancées à la création du worktree, un navigateur pilotable par l'agent, l'historique des sessions et des automations planifiées.
Orca remplace-t-il Claude Code ou Codex ?
+
Non. Orca n'embarque pas de modÚle : il orchestre les agents CLI que vous avez déjà installés, avec vos propres abonnements. Il peut d'ailleurs importer vos réglages ~/.claude et ~/.codex au premier lancement.
Comment installer Orca ?
+
Sur macOS, via Homebrew avec « brew install --cask stablyai/orca/orca ». Pour Windows (installeur .exe) et Linux (AppImage, .deb, .rpm), les binaires sont sur la page GitHub Releases du projet.