Contexte et besoins

Herdr compte plus de 700 000 téléchargements et près de 1 000 plugins, ce qui indique une communauté active. Jusqu’à présent, chaque machine nécessitait un client Herdr distinct, souvent ouvert dans un onglet de terminal séparé. Cette organisation obligeait l’utilisateur à mémoriser l’emplacement de chaque agent et à basculer manuellement entre les onglets, créant ainsi un goulot d’étranglement opérationnel. Les contributeurs ont proposé des contournements via le système de plugins, mais l’outil de base n’était pas conçu pour gérer plusieurs serveurs simultanément.

Architecture du nouveau client

La version 0.9 décale le rendu de l’interface utilisateur du serveur vers le client. Les serveurs continuent d’héberger leurs sessions de terminal et leurs agents, tandis que le client agrège les vues provenant de plusieurs serveurs dans une seule interface TUI. Cette séparation implique que chaque serveur reste responsable de l’état de ses agents, mais que le client peut afficher les espaces de travail, les onglets et les agents de chaque machine comme s’ils appartenaient à une même instance. La connexion s’effectue via SSH, ce qui permet d’utiliser des réseaux locaux, Internet ou des solutions comme Tailscale. Un exemple de commande d’attachement est :

herdr --remote user@remote‑host
Après l’attachement, les espaces de travail distants apparaissent aux côtés des espaces locaux, et les agents continuent de s’exécuter sur leurs machines d’origine même si le client se déconnecte.

Implications et limites

Le nouveau modèle ouvre la voie à des améliorations de performances, car le client ne dépend plus d’un serveur unique pour le rendu. Cependant, la CLI d’agent reste confinée à un serveur ; elle ne peut pas interroger les agents d’autres machines tant que la fonctionnalité n’est pas implémentée. L’auteur prévoit d’étendre la collaboration inter‑machines, notamment la migration d’une session d’agent d’une machine à une autre. À plus long terme, le projet Herdr Cloud doit fournir une couche d’abstraction qui élimine la configuration SSH manuelle et assure le chiffrement de bout en bout du trafic terminal. Cette couche agirait comme un intermédiaire de connexion sans héberger les agents, conservant ainsi la propriété des machines par l’utilisateur. En l’état, la version 0.9 représente la première implémentation fonctionnelle du support multi‑machines, mais la prise en charge complète des agents cross‑machine et la simplification de la connexion restent à développer.