Tu demandes à Hermes de regarder un dossier. Avant de lui confier la suite, une question mérite une réponse précise : sur quelle machine va-t-il chercher ce dossier ? Le terminal depuis lequel tu lui parles ne suffit pas à le savoir.
Nous allons suivre un petit contrôle de repérage : relever le nom de la machine, le compte utilisé et le dossier courant. Tu choisiras un seul mode d’exécution pour l’essai. Il n’est pas nécessaire d’installer Docker et de louer un serveur pour comprendre les trois possibilités.
1. Préparer un essai limité
Le parcours suppose qu’Hermes est déjà installé et répond à un modèle capable d’appeler des outils. Si ce n’est pas encore le cas, commence par l’installation, puis par le choix des premiers outils utiles.
Les commandes ci-dessous visent Linux ou un terminal Linux dans WSL. Sous Windows, ouvre bien la distribution dans laquelle tu utilises Hermes. L’exemple principal lance Hermes directement dans cet environnement ; son hébergement dans un conteneur est expliqué plus bas.
Nous utilisons le profil default. Si tu travailles avec un autre profil, remplace default dans toutes les commandes. Ferme sa conversation en cours avant de modifier son backend, puis ouvre une nouvelle session pour l’essai.
hermes -p default config get terminal.backend
hermes -p default config show
Note le backend actuel et garde une copie de ton fichier de configuration avant de le modifier. hermes -p default config edit permet d’ouvrir ce fichier dans ton éditeur. Ne publie pas son contenu complet pour demander de l’aide : il peut contenir des informations propres à ton installation.
hostname, id -un et pwd : nom de machine, compte et dossier courant. Nous ne lui demandons ni installation, ni écriture de fichier. Hermes conserve toutefois son fonctionnement habituel, notamment l’enregistrement de la session ; Docker peut créer son conteneur au premier appel.2. Situer l’agent et son terminal
Le backend du terminal désigne l’environnement auquel Hermes confie ses commandes. Le modèle peut demander un appel d’outil ; le backend détermine où cette commande sera lancée.
En local, la commande tourne dans l’environnement qui héberge Hermes. Avec le backend Docker, elle tourne dans un conteneur. Avec SSH, elle est transmise au compte choisi sur une machine distante. Le résultat revient ensuite à Hermes, qui peut te l’expliquer.
Où la commande s’exécute-t-elle ?
Trois possibilités pour le terminal. Ici, Hermes est lancé sur l’hôte et Docker utilise un moteur local.
Le schéma prend le cas d’un moteur Docker local. Si tu as configuré Docker pour piloter un moteur distant, il faut aussi tenir compte de cette autre machine. De même, « local » peut désigner ton VPS si c’est sur ce VPS qu’Hermes est lancé.
Deux usages de Docker à distinguer
Héberger Hermes dans Docker place le programme Hermes lui-même dans un conteneur. Choisir le backend Docker règle l’environnement de ses commandes terminal. Ce sont deux choix différents, qui peuvent se combiner. La documentation Docker d’Hermes détaille le premier ; ce tuto porte sur le second.
Le choix du terminal ne déplace pas non plus tous les services utilisés par l’agent : le modèle, un serveur MCP ou un autre outil peuvent avoir leur propre emplacement.
3. Choisir le lieu du travail
Pars du dossier sur lequel tu veux travailler et de l’environnement dont il a besoin. Pour notre premier contrôle, il suffit de choisir la ligne qui correspond à ton cas.
| Ton besoin | Mode à essayer | Ce qu’il faut avoir avant |
|---|---|---|
| Travailler dans l’environnement où Hermes est déjà lancé | Local | Un dossier connu et un compte dont tu comprends les droits |
| Exécuter dans un environnement conteneurisé | Docker | Un moteur Docker accessible depuis le terminal d’Hermes |
| Travailler sur un serveur ou une autre machine | SSH | Une machine existante, un compte autorisé et une connexion SSH fonctionnelle |
Un conteneur n’est pas une garantie d’isolation absolue : les dossiers montés et les secrets transmis restent accessibles selon les droits accordés. Une machine distante, elle, déplace le travail ; elle ne corrige pas les permissions du compte utilisé. Nous vérifierons donc les accès avant d’aller au-delà du repérage.
4. Préparer seulement le mode retenu
Lis la branche qui te concerne, puis rejoins l’étape 5. Les commandes config set changent la configuration du profil : ce ne sont pas de simples affichages.
Option A — Local
Dans le terminal où tu lanceras Hermes, place-toi dans le dossier choisi. Remplace le chemin ci-dessous par un dossier existant. Le premier relevé te servira de point de comparaison.
cd "/chemin/vers/ton-dossier"
hostname
id -un
pwd
hermes -p default config set terminal.backend local
Garde ce terminal ouvert pour lancer Hermes à l’étape 5. En ligne de commande, le dossier de lancement compte ; ne suppose pas qu’un terminal.cwd enregistré suffira à imposer le chemin attendu. Le contrôle par pwd permettra de constater celui qui est réellement utilisé.
Option B — Docker local
Si Docker n’est pas installé, utilise la procédure officielle adaptée à ton système : Docker Engine sous Linux, ou Docker Desktop avec son intégration WSL sous Windows. Reviens ici lorsque le moteur est disponible depuis le même environnement que la commande hermes.
docker version
docker context show
docker version doit afficher les informations du client et du serveur. Un client installé seul ne suffit pas. Vérifie aussi que le contexte sélectionné correspond au moteur local prévu ; un contexte est une destination Docker, pas seulement un nom d’affichage.
Avant la bascule, relis les éventuels montages et variables déjà configurés pour Docker. Pour cet essai de repérage, n’ajoute pas de dossier personnel ni de secret. Une configuration existante peut déjà en partager : changer uniquement le backend ne les efface pas.
hermes -p default config set terminal.backend docker
Le premier appel peut prendre davantage de temps si l’image configurée doit être téléchargée. Le résultat attendu est un conteneur utilisable, pas un accès automatique à tous les fichiers de ton hôte. Nous garderons les réglages d’image et de ressources hors de ce premier essai ; les options sont détaillées dans la configuration officielle du backend Docker.
Option C — SSH
Tu dois déjà disposer d’une machine distante et d’un compte auquel tu es autorisé à te connecter. Remplace les quatre valeurs de l’exemple : adresse, compte, port et chemin de ta clé privée sur la machine qui lance Hermes. Le fichier de clé doit exister ; le nom donné ici est un exemple.
export TERMINAL_SSH_HOST="serveur.example.com"
export TERMINAL_SSH_USER="ton-compte"
export TERMINAL_SSH_PORT="22"
export TERMINAL_SSH_KEY="$HOME/.ssh/id_ed25519"
ssh -i "$TERMINAL_SSH_KEY" -p "$TERMINAL_SSH_PORT" \
"$TERMINAL_SSH_USER@$TERMINAL_SSH_HOST"
Lors d’une première connexion, compare l’empreinte du serveur avec celle fournie par son administrateur ou ton hébergeur avant de l’accepter. Une fois connecté, relève les trois informations suivantes, puis quitte la session distante avec exit.
hostname
id -un
pwd
exit
Tu es revenu dans le terminal qui lancera Hermes. Vérifie maintenant que l’authentification fonctionne sans demande interactive. Si ta clé a une phrase secrète, elle doit notamment être utilisable via ton agent SSH.
ssh -o BatchMode=yes -i "$TERMINAL_SSH_KEY" \
-p "$TERMINAL_SSH_PORT" \
"$TERMINAL_SSH_USER@$TERMINAL_SSH_HOST" \
'hostname; id -un; pwd'
Si cette commande échoue, règle la connexion avant de continuer. Si elle réussit, choisis SSH :
hermes -p default config set terminal.backend ssh
Les variables exportées restent dans ce terminal et ses processus enfants. Lance donc Hermes depuis ce même terminal. Elles ne constituent pas encore une configuration permanente ; tu pourras ensuite les enregistrer dans le .env du profil selon la documentation SSH.
5. Observer un appel réellement exécuté
Quel que soit le mode retenu, vérifie que l’outil terminal est activé, puis ouvre une nouvelle conversation dans le même profil et le même terminal.
hermes -p default tools
hermes -p default chat
hostname, id -un et pwd. Affiche les trois sorties en indiquant ce que chacune représente. Ne lis aucun autre fichier, n’installe rien et ne modifie aucun fichier. Si un appel échoue, arrête-toi et montre l’erreur sans essayer de la corriger.Observe l’appel de l’outil et sa sortie, puis l’explication d’Hermes. Une phrase comme « je suis sur ton serveur » sans appel visible ne constitue pas un contrôle.
- Local : la machine et le compte correspondent à ton relevé ; le dossier doit être celui prévu pour la session.
- Docker : les sorties appartiennent au conteneur. Le compte peut être différent de celui de l’hôte ;
rootdans le conteneur ne suffit pas, à lui seul, à décrire ses droits sur l’hôte. - SSH : machine et compte correspondent à ta connexion directe. Le dossier courant peut différer : relève son chemin avant de désigner des fichiers.
Les noms de machine ne sont pas des preuves d’identité uniques. En cas de doute avec Docker, utilise docker ps dans un second terminal local pour repérer le conteneur de cette session. Tu peux y exécuter toi-même docker exec NOM_DU_CONTENEUR hostname, après avoir remplacé le nom, puis comparer la sortie. Ne choisis pas un conteneur au hasard si plusieurs sessions existent.
6. Définir le dossier avant la vraie tâche
Le terminal répond au bon endroit : il reste à lui donner le bon chemin. Un chemin de ton PC n’est pas automatiquement disponible dans un conteneur ou sur un serveur. Même deux chemins écrits de façon identique peuvent désigner des fichiers différents.
Pour une première tâche, choisis un dossier de test dans l’environnement vérifié. Donne son chemin absolu à Hermes et précise l’action attendue, par exemple lister son contenu sans rien modifier. Si le dossier n’existe pas ou n’est pas accessible, demande un arrêt et le message d’erreur ; tu décideras ensuite s’il faut le créer, le partager ou corriger le chemin.
Dans Docker, partager un dossier de l’hôte passe par un montage. Définis précisément le dossier source, sa destination dans le conteneur et si l’écriture est nécessaire. Avec SSH, vérifie les droits du compte distant sur le dossier visé. Le succès des trois commandes de repérage ne valide ni ces accès ni l’ensemble des capacités du backend.
Retrouver la configuration de départ
À la fin de l’essai, ferme la conversation. Si tu avais changé de backend uniquement pour ce contrôle, remets la valeur relevée à l’étape 1, puis ouvre une nouvelle session. Pour revenir au local, par exemple :
hermes -p default config set terminal.backend local
Cette commande ne supprime ni les conteneurs ni les données distantes. Elle change le backend retenu pour les prochaines sessions.
Retrouver la cause d’un blocage
| Ce que tu observes | Ce que tu vérifies d’abord |
|---|---|
| Hermes répond, mais aucun outil ne s’exécute | Outil terminal activé, modèle capable d’appeler des outils, nouvelle session après modification |
| Docker affiche le client mais ne joint pas le serveur | Moteur démarré, contexte choisi, accès depuis le même environnement qu’Hermes |
| L’image Docker ne démarre pas | Message d’erreur exact, nom de l’image configurée, disponibilité et compatibilité de cette image |
SSH fonctionne à la main, mais pas avec BatchMode=yes | Clé sélectionnée, agent SSH, compte, port et absence de demande interactive |
| Hermes semble utiliser un autre backend | Même profil partout ; éventuelle variable TERMINAL_ENV ou autre surcharge d’environnement ; processus relancé |
| Le dossier est introuvable | Chemin dans l’environnement d’exécution, montage Docker éventuel ou permissions distantes |
Suite logique
Avant chaque nouvelle tâche, garde trois repères : où tourne Hermes, où tourne son terminal, quel dossier est réellement accessible. Tu peux alors donner une consigne concrète et interpréter un échec sans changer plusieurs réglages au hasard.
Si tu veux ensuite exposer Hermes à d’autres clients ou interfaces, poursuis avec Hermes comme brique d’intégration.
Les commandes de ce parcours sont proposées pour être reproduites ; elles ne constituent pas le compte rendu d’un essai local, Docker ou SSH réalisé pour cet article. Références : configuration des backends, outils et toolsets, profils et hébergement Docker.