←Tous les articles
Jeu. 15 octobre 2026·13 min de lecture

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

Schéma Orca : un ticket GitHub, Linear ou Jira ouvre un worktree dédié, dans lequel tournent plusieurs agents comme Claude Code et Codex

📚 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.

Interface d'Orca : barre latĂ©rale des workspaces liĂ©s Ă  des tickets, Claude Code et Codex cĂŽte Ă  cĂŽte dans le mĂȘme worktree, un terminal, l'explorateur de fichiers et l'app mobile compagnon 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-readme avec 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-login

Rien 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
    - .cache

Ces 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.

Barre latĂ©rale d'Orca : le workspace « Agent Statuses » affiche deux agents, Claude Code et Codex, avec leur derniĂšre question et leur Ă©tat 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.

Vue Tasks d'Orca affichant un tableau GitHub Projects avec les epics, leurs assignees et leur statut 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.

Visualiseur de diff d'Orca : lignes supprimĂ©es en rouge, lignes ajoutĂ©es en vert, et le curseur sur la gouttiĂšre pour ajouter un commentaire 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 Ă  claude ou codex sur un dĂ©pĂŽt ou un workspace. Une commande --precheck peut 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 --json

L’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/orca

Pour 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_modules commun Ă  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-permissions pour Claude Code, --dangerously-bypass-approvals-and-sandbox pour Codex, --yolo pour 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.