Tutoriel 6 novembre 2026 10 min de lecture

Herdr : le berger de mes agents IA dans le terminal

Gabriel Janez

Gabriel Janez

Développeur Full-Stack PHP

Trois agents qui tournent, trois onglets de terminal, et cette question qui revient toutes les deux minutes : lequel attend quelque chose de moi ? Avec Claude Code, ça arrive vite. Un agent corrige un bug sur un projet client, un autre ajoute une fonctionnalité sur un outil perso, un troisième relit une migration. Chacun finit par s'arrêter pour demander une permission, poser une question ou annoncer qu'il a terminé. Et pendant ce temps, moi, je fais le tour des onglets comme un veilleur de nuit avec sa lampe torche.

Depuis la mi-septembre, c'est Herdr qui fait la ronde à ma place. C'est un gestionnaire de terminal pensé pour les agents IA de code, et je vous avoue que je ne m'attendais pas à ce qu'un outil aussi discret change autant ma façon de travailler.

Un berger, pas un énième terminal

Le nom dit tout. Herd, c'est le troupeau en anglais, et Herdr se comporte en berger : il ne fait pas le travail des moutons, il sait juste en permanence où chacun se trouve et lequel est coincé dans la clôture.

Techniquement, on pense d'abord à tmux. Herdr en reprend les réflexes (un préfixe ctrl+b, des onglets, des panneaux, des sessions qu'on détache et qu'on rattache) dans un unique binaire Rust, sans Electron, sous licence Apache 2.0. La différence tient en une phrase. Tmux sait qu'il y a des terminaux. Herdr sait qu'il y a des agents dedans.

Pour l'installer sous Linux :

curl -fsSL https://herdr.dev/install.sh | sh
# ou, si vous préférez un gestionnaire de paquets
brew install herdr
mise use -g herdr

Vieux réflexe d'admin : avant de piper un script dans sh, ouvrez-le dans le navigateur et lisez-le. Ça prend trente secondes, et c'est valable pour n'importe quel outil, pas seulement celui-ci.

Un workspace par dépôt, un onglet par tâche

Mon organisation est devenue très simple. Chaque dépôt a son workspace, et dans chaque workspace, un onglet par tâche, renommé avec ce qu'il fait. Chez moi, ça donne par exemple un onglet « Add-new-plugin-lighthouse » dans le dépôt d'un outil de mesure des Core Web Vitals, un onglet « Booking » dans un projet client, et ce site dans un troisième workspace. D'ailleurs, l'agent qui m'a aidé à préparer cet article tournait lui-même dans un panneau Herdr :

$ env | grep HERDR
HERDR_PANE_ID=w7:p1
HERDR_TAB_ID=w7:t1
HERDR_WORKSPACE_ID=w7
TERM_PROGRAM=herdr

Ces variables ne sont pas là pour décorer. Elles permettent à un agent de savoir où il se trouve et de piloter Herdr par sa CLI ou son API socket, pour ouvrir un panneau, envoyer un prompt à un autre agent, ou attendre qu'il ait fini. J'y reviendrai un jour, quand j'aurai assez joué avec pour avoir un avis.

Côté clavier, si vous venez de tmux, vous serez chez vous : tout passe par le préfixe ctrl+b, qu'on relâche avant d'appuyer sur la touche suivante. Et si un raccourci vous échappe, ctrl+b ? affiche la liste de ceux qui sont actifs. Voici ceux que j'ai fini par connaître par cœur, rangés par usage.

Pour les onglets et les workspaces :

RaccourciAction
ctrl+b cCréer un onglet
ctrl+b shift+tRenommer l'onglet
ctrl+b shift+xFermer l'onglet
ctrl+b 1 à 9Aller directement à l'onglet 1 à 9
ctrl+b n / ctrl+b pOnglet suivant / précédent
ctrl+b shift+nNouveau workspace
ctrl+b wSélecteur de workspaces
ctrl+b qDétacher la session (tout continue de tourner)

Pour découper l'écran, le jour où l'agent a besoin d'un voisin qui fait tourner les tests :

RaccourciAction
ctrl+b vCouper le panneau à droite
ctrl+b -Couper le panneau en bas
ctrl+b h / j / k / lDéplacer le focus, à la façon de Vim
ctrl+b zZoomer le panneau en plein écran (et dézoomer)
ctrl+b xFermer le panneau
ctrl+b bMasquer ou afficher la barre latérale

Et pour retrouver ses agents, les deux qui comptent vraiment : ctrl+b g ouvre le sélecteur Goto, et ctrl+b o vous emmène droit sur l'agent qui vient de lever la main. Celui-là, je l'utilise plus que tous les autres réunis. On comprend pourquoi juste après.

Savoir qui attend, sans faire la ronde

Herdr attribue à chaque agent un état : en train de travailler, bloqué, terminé ou inactif. La barre latérale l'affiche (chez moi sous forme de symboles), et c'est tout le sel de l'outil. Un coup d'œil, et je sais quel agent a besoin de moi.

Pour les captures de cet article, j'ai monté une session de démo avec trois petits dépôts jetables et un agent Claude Code dans chacun. Le premier doit créer un fichier de module Magento et attend ma permission, le deuxième a résumé un README et a fini, le troisième rédige encore un plan de tests :

Interface de Herdr : barre latérale avec trois workspaces et leurs agents Claude Code, l'un bloqué sur une demande de permission, l'un terminé, l'un en cours
À gauche, ✕ pour l'agent bloqué, ✓ pour celui qui a terminé, ◐ pour celui qui travaille. À droite, la demande de permission qui le bloque.

Le mécanisme mérite qu'on s'y arrête, parce qu'il explique aussi ses limites. Sans intégration particulière, Herdr repère le processus de l'agent dans le panneau, puis lit le bas de l'écran tel qu'il est affiché, en le comparant à des règles de détection écrites pour chaque agent connu. Il en reconnaît une vingtaine : Claude Code, Codex, Copilot CLI, Gemini CLI, OpenCode, Cursor Agent, et d'autres. L'état « bloqué » est volontairement strict : Herdr ne l'affiche que si l'écran ressemble à une demande de permission ou à une question qu'il connaît.

La conséquence est un peu contre-intuitive. Un prompt inhabituel peut apparaître comme « inactif » alors que l'agent attend bel et bien une réponse. La documentation le dit elle-même : ne vous fiez pas à un « inactif » pour envoyer quelque chose à l'aveugle. En cas de doute, une commande explique ce que Herdr a vu et pourquoi il a conclu ainsi :

herdr agent explain w7:p1

Mieux vaut un outil qui affiche ses doutes qu'un outil qui se trompe avec aplomb.

La notification qui vient vous chercher

Voir les états, c'est bien. Ne plus avoir à les regarder, c'est mieux. Ma configuration tient en quelques lignes, et la plus importante est la première du bloc [ui.toast] :

[ui.toast]
delivery = "system"

[theme]
name = "one-dark"

[ui]
status_indicators = "symbols"

Avec delivery = "system", Herdr passe par les notifications du bureau. Je peux donc être dans le navigateur, en train de relire une PR ou de répondre à un mail, et une bulle m'annonce qu'un agent a terminé ou qu'il est bloqué. Je reviens dans le terminal, ctrl+b o, et me voilà sur le bon panneau, au bon endroit, sans avoir cherché.

Quand plusieurs agents réclament de l'attention en même temps, je passe plutôt par ctrl+b g. Le sélecteur Goto liste tous les agents, workspace par workspace, avec leur état et leur branche git. On y cherche avec /, et quatre touches filtrent la liste : b pour les bloqués, w pour ceux qui travaillent, i pour les inactifs, d pour ceux qui ont terminé (a pour tout réafficher).

Sélecteur Goto de Herdr listant les agents magento (blocked), blog (done) et api (working) avec leur workspace et leur branche
Le sélecteur Goto (ctrl+b g) : chaque agent, son workspace, sa branche et son état.

Ça paraît anodin. Sur une journée, c'est la différence entre surveiller des agents et travailler avec eux.

Copier-coller sans lâcher le clavier

Un agent vous sort une stack trace, une commande ou un bout de diff, et il faut le récupérer. C'est là que beaucoup de multiplexeurs agacent, parce que le copier-coller du terminal ne marche plus comme d'habitude. Herdr propose deux chemins.

Le plus simple, c'est la souris. Sélectionnez le texte en le glissant, et il part directement dans le presse-papiers : pas de ctrl+c, pas de mode spécial, un petit toast confirme la copie. Le double-clic sélectionne un mot. Pour coller, rien ne change, c'est le raccourci de votre terminal : ctrl+shift+v sous Linux, cmd+v sur Mac. Si cette copie automatique vous dérange, copy_on_select = false dans la configuration garde la sélection affichée jusqu'à ce que vous fassiez ctrl+c.

Le second chemin, celui que je préfère dès que le texte dépasse l'écran, c'est le mode copie, calqué sur celui de tmux :

RaccourciAction
ctrl+b [Entrer en mode copie
h / j / k / lDéplacer le curseur
w / b / eSauter de mot en mot
ctrl+u / ctrl+dDéfiler d'une demi-page
/ / ?Chercher vers le bas / vers le haut
n / NOccurrence suivante / précédente
v ou espaceCommencer la sélection
y ou entréeCopier la sélection
q ou échapSortir sans rien copier
Mode copie de Herdr : recherche du mot README dans la sortie de l'agent, sélection en cours et barre d'aide COPY en bas de l'écran
Le mode copie (ctrl+b [) : une recherche avec ?README, la sélection démarrée avec v, et l'aide en bas.

Deux détails m'ont surpris au début. Le mode copie ne met pas l'agent en pause : sa sortie continue d'arriver pendant que vous sélectionnez, ce qui est plutôt une bonne nouvelle. Et comme ctrl+b est le préfixe, il ne remonte pas d'une page comme dans Vim. Utilisez PageUp ou ctrl+u, ou changez de préfixe si ça vous manque vraiment.

Rien ne meurt, ou presque

Les terminaux ne vivent pas dans la fenêtre que vous voyez, mais dans un petit serveur Herdr qui tourne en arrière-plan. Fermer le terminal par mégarde ne tue donc rien. Un ctrl+b q pour détacher, puis herdr pour revenir, et tout est là : les agents ont continué à travailler pendant votre absence, exactement comme une session tmux.

Le « presque » mérite d'être dit, parce que c'est un détail qui m'avait échappé. Après un redémarrage de la machine, les processus d'origine ne survivent pas, évidemment. Herdr restaure la disposition (workspaces, onglets, panneaux), mais pour qu'un agent reprenne sa conversation là où il l'avait laissée, il faut que l'intégration de cet agent soit installée. En préparant cet article, je me suis aperçu que je ne l'avais jamais fait pour Claude Code :

$ herdr integration status
claude: not installed (/home/gabriel/.claude/hooks/herdr-agent-state.sh)
codex: not installed (/home/gabriel/.codex/herdr-agent-state.sh)
...

$ herdr integration install claude

L'intégration fait remonter l'état directement depuis l'agent, au lieu de le déduire de l'écran. Les états deviennent plus fiables, et la reprise après redémarrage devient possible. Deux mois que je m'en passais sans le savoir. Faites-le dès l'installation, pas comme moi.

Herdr se connecte aussi à des machines distantes en SSH : leurs agents apparaissent dans la même barre latérale que les agents locaux. Je ne l'utilise pas encore, mes agents tournent tous en local, donc je me garde d'en dire plus.

Ce que j'en pense, après deux mois

Je me méfie des outils « pour l'IA » qui sortent chaque semaine, et la plupart ne passent pas le cap du troisième jour chez moi. Herdr, lui, est resté, sans doute parce qu'il ne prétend pas rendre les agents plus intelligents. Il règle un problème bien plus terre à terre, celui de l'attention : savoir où regarder, et à quel moment.

Si vous faites tourner un seul agent à la fois, vous n'en avez probablement pas besoin. À partir de deux, essayez-le une journée. Et pensez à installer l'intégration.

Tags

Agents IA Claude Code Herdr IA Productivité Terminal

Partager

Articles similaires

Besoin d'aide sur votre projet ?

Discutons de vos besoins et trouvons ensemble la meilleure solution technique.

Me contacter