NOXENGINE

Les machines travaillent la nuit.
On les surveille.

[ TUTOS ]

J’ai lu les 4 334 lignes de l’installeur Hermes avant de le lancer

Tous les guides français installent Hermes sur Linux ou en VPS. L'installeur officiel gère Windows en natif, sans WSL et sans droits administrateur. Ce qu'il fait vraiment, lu ligne par ligne.

RUN #343 09 AOÛT 2026 12 MIN DE LECTURE

Bon. Tous les tutos d’installation de Hermes que j’ai trouvés en français parlent de Linux, de VPS ou de Docker. C’est logique, l’agent est fait pour tourner sur un serveur. Sauf que l’installeur officiel gère Windows en natif depuis un moment, sans WSL, sans droits administrateur, et que personne n’en parle. Alors j’ai pris le chemin Windows.

[ protocole ]

Ce que j’ai fait pour cet article, le 9 août 2026 : j’ai téléchargé install.ps1 depuis le domaine officiel et je l’ai lu en entier (4 334 lignes, environ 205 Ko), j’ai relevé les métadonnées du dépôt via l’API de GitHub, et j’ai vérifié la dernière version publiée. Ce que je n’ai pas fait : lancer l’installation sur une machine. Donc pas de log de sortie ici, pas de chronomètre, et quand je ne sais pas, je le dis. Ce que tu vas lire vient du script lui-même, pas d’une page de doc qui le résume.

Étape 0 : ce que tu installes, et ce que tu n’installes pas

Première chose à poser, parce que c’est le malentendu qui coûte le plus de temps : la commande d’une ligne t’installe l’agent en ligne de commande. Pas l’application de bureau. C’est écrit dans le script, dans un commentaire qui ne laisse aucune place au doute : l’étape qui construit l’application de bureau est ajoutée « seulement quand elle est explicitement demandée (Hermes-Setup.exe), jamais via la commande en une ligne ». Si tu veux la fenêtre avec des boutons, tu passes par l’installeur dédié, pas par ici.

Deuxième chose : Hermes ne contient aucune intelligence. C’est un exécutant qui appelle un modèle chez un fournisseur, et tu choisis lequel. Le logiciel est sous licence MIT, gratuit. Le modèle, lui, se paie à l’usage, sauf si tu le fais tourner en local. J’insiste parce que c’est le piège classique : on a détaillé ce que fait vraiment cet agent dans une fiche à part, et le fait qu’il soit indifférent au modèle est sa caractéristique la plus mal comprise.

Étape 1 : la commande, et le coup d’œil avant de la taper

La commande officielle, celle que donne le fichier de présentation du dépôt, tient sur une ligne dans PowerShell :

iex (irm https://hermes-agent.nousresearch.com/install.ps1)

Traduction pour qui n’a jamais vu ça : irm télécharge le contenu de l’URL, iex l’exécute immédiatement. Rien n’est écrit sur ton disque entre les deux, rien n’est vérifié, rien n’est signé. Tu accordes à un serveur distant le droit d’exécuter ce qu’il veut avec tes droits utilisateur.

Franchement, sur un projet à 227 000 étoiles je ne m’attendais pas à trouver mieux, et pourtant le script prévoit lui-même l’alternative, tout en bas de son propre code :

Invoke-WebRequest -Uri 'https://hermes-agent.nousresearch.com/install.ps1' -OutFile install.ps1

Tu télécharges, tu regardes, tu lances. Ça prend deux minutes de plus. C’est ce que j’ai fait, et c’est de là que sort tout le reste de cet article.

Il y a même mieux, un drapeau que je n’ai vu mentionné nulle part ailleurs. Le script accepte -ShowResolvedPaths, qui affiche en JSON les chemins qu’il utiliserait et sort sans rien toucher. Un essai à blanc, en somme :

powershell -File install.ps1 -ShowResolvedPaths

Le commentaire qui l’accompagne dans le code explique pourquoi il existe, et c’est très honnête de leur part : la première question devant un rapport de bug « l’installeur dit qu’un chemin n’existe pas », c’est de savoir quels chemins il a réellement résolus, surtout sur les profils Windows exposés sous un alias 8.3 où ce que tu vois dans l’Explorateur et ce que reçoit le script diffèrent. Si tu as un nom d’utilisateur avec un espace ou un accent, commence par là.

Étape 2 : les quinze étapes que le script enchaîne

Là où je m’attendais à un gros pavé impératif, le script est en fait organisé en étapes nommées, déclarées dans un tableau ordonné. Quinze, regroupées en trois familles : les prérequis, l’installation, la finalisation, plus deux étapes interactives à la fin. Chacune a un nom court, un titre affiché, et une fonction qui l’exécute.

Schéma des quinze étapes de l'installeur Windows de Hermes Agent, groupées en prérequis, installation, finalisation et post-installation
Relevé dans le tableau $InstallStages du script, le 9 août 2026. L’étape de construction de l’application de bureau n’y figure pas : elle n’est ajoutée que si on la demande.

L’intérêt pratique de ce découpage n’est pas cosmétique. Chaque étape émet son propre résultat (réussie, ignorée, en échec, avec sa durée), et une étape peut se déclarer « ignorée » sans faire tomber l’installation. C’est exactement le cas de Node : s’il n’est pas disponible, le script continue et note que les outils de navigation seront indisponibles jusqu’à ce que tu l’installes. Tu obtiens un Hermes qui marche, amputé d’une fonction, plutôt qu’un écran rouge.

Autre conséquence, plus utile encore le jour où ça casse : les fonctions internes restent appelables à la main. Un commentaire du script le dit explicitement, pour la reprise après échec. Si l’environnement Python se vautre, tu peux recharger le script et rejouer cette étape seule au lieu de tout reprendre.

Étape 3 : les prérequis, et le seul endroit qui m’a surpris

Le script installe ses dépendances lui-même, dans ton profil utilisateur, sans jamais demander d’élévation. Dans l’ordre : uv (le gestionnaire de paquets Python rapide), Python 3.11, Git, Node.js 22, puis ripgrep et ffmpeg.

Dépendance Version visée D’où elle vient Si tu l’as déjà
uv dernière script officiel d’Astral réutilisé
Python 3.11 fourni par uv (repli sur 3.12, 3.13 ou 3.10) réutilisé
Git PortableGit 64 bits version officielle Git for Windows réutilisé tel quel
Node.js 22 LTS archive portable de nodejs.org réutilisé si la version convient
ripgrep, ffmpeg dernière winget, chocolatey ou scoop ignorés
Chromium celui d’agent-browser paquets npm agent-browser et camofox-browser toujours téléchargé

La dernière ligne est celle que je n’avais pas anticipée : l’installation tire un navigateur complet. C’est cohérent, un agent qui navigue a besoin d’un navigateur, mais aucune des pages que j’ai lues avant ne le mentionne. Prévois la place et la bande passante.

Le vrai morceau de bravoure est ailleurs, sur Git, et le script prend la peine de se justifier en commentaire. Beaucoup de sources, y compris le fichier de présentation du dépôt, écrivent que Windows récupère « MinGit ». Le code dit l’inverse, et explique pourquoi : « MinGit est la distribution d’automatisation minimale et ne fournit QUE git.exe, pas de bash, pas d’utilitaires POSIX. Hermes a besoin de bash.exe pour exécuter des commandes shell. » Ce qu’il télécharge par défaut, c’est donc PortableGit, la distribution complète sans interface d’installation, avec bash, sed, awk, grep, curl et ssh.

MinGit n’apparaît qu’en dernier recours, sur Windows 32 bits, et le script prévient alors noir sur blanc que les fonctions dépendantes de bash ne marcheront pas sur cette machine. Si tu es en 32 bits, tu es prévenu avant de commencer, et ça mérite d’être dit : la plupart des tutos te laisseraient le découvrir à la première commande.

Dernier détail sur ce point, et c’est une décision de conception que je trouve saine : ils évitent volontairement winget pour Git, parce que winget échoue mal quand l’installation système de Git est à moitié cassée. Leur logique est qu’une copie de Git qui leur appartient est prévisible et réparable. Supprimer le dossier et relancer l’installeur suffit à repartir.

Étape 4 : ce que ça pose sur ton disque

Tout vit sous %LOCALAPPDATA%\hermes. Le dépôt cloné va dans %LOCALAPPDATA%\hermes\hermes-agent, Git dans \git, Node dans \node, les binaires dans \bin. Rien dans Program Files, rien dans le registre système, aucune fenêtre de contrôle de compte d’utilisateur.

Schéma de l'empreinte disque de Hermes Agent sur Windows sous LOCALAPPDATA, avec les variables d'environnement PATH et HERMES_HOME modifiées en portée utilisateur
Les trois écritures d’environnement du script sont toutes en portée « User ». Aucune ne touche les variables système, d’où l’absence d’élévation.

Côté variables d’environnement, trois écritures, toutes dans ta portée utilisateur : le dossier de Node, les dossiers de Git, et le dossier qui contient la commande hermes elle-même. Le script pose aussi HERMES_HOME, et c’est spécifique à Windows : sous Unix la configuration vit dans ~/.hermes, ici elle est déportée dans %LOCALAPPDATA%\hermes, donc il faut le dire au code Python.

Conséquence pratique que tout le monde oublie : une variable d’environnement écrite en base n’apparaît pas dans les terminaux déjà ouverts. Si hermes te répond « commande introuvable » juste après l’installation, ferme ta fenêtre PowerShell et rouvres-en une. Ce n’est pas un bug.

Un dernier réflexe du script que j’ai bien aimé : avant de remplacer des fichiers, il vérifie si ton terminal est positionné dans le dossier d’installation, et il en sort. Windows refuse de supprimer un dossier dans lequel un shell se trouve, et laisse alors des fichiers orphelins qui font échouer les réinstallations suivantes. Quelqu’un s’est visiblement fait avoir avant d’écrire ça.

Étape 5 : brancher un cerveau

À la fin de l’installation, deux étapes interactives se déclenchent : la configuration des clés et du modèle, puis le démarrage de la passerelle de messagerie. C’est le moment où il faut décider qui va facturer tes tokens.

hermes setup --portal    # assistant complet, via le portail de l'editeur
hermes model             # choisir le fournisseur et le modele
hermes config set        # regler une valeur precise
hermes doctor            # diagnostiquer quand ca coince

Le dépôt annonce plus de 300 modèles et cite OpenRouter, OpenAI, le portail maison ou un point d’accès à toi. Si tu veux zéro facture d’inférence, c’est ici que tu pointes vers une installation locale de type Ollama. Attention quand même : un agent qui itère tout seul consomme beaucoup plus qu’une conversation, et le token reste l’unité qui est réellement comptée. C’est le poste de dépense à surveiller, pas le VPS à 5 dollars dont parle la page officielle.

Puis hermes tout court lance l’interface en ligne de commande, et hermes gateway setup suivi de hermes gateway start branche Telegram, Discord, Slack, WhatsApp ou Signal. C’est cette partie qui fait l’intérêt du produit : tu lui laisses une consigne depuis ton téléphone, il continue quand ta machine est éteinte, à condition qu’il tourne ailleurs que sur ta machine.

Les emmerdes déjà documentées

Trois, et elles sont écrites dans les sources officielles, donc autant les connaître avant.

L’antivirus. Le fichier de présentation prévient que uv.exe peut être signalé comme malveillant, faux positif classique sur les binaires Rust récents. La parade indiquée est de mettre %LOCALAPPDATA%\hermes\bin en exception. À toi de voir si tu es à l’aise avec l’idée d’ajouter une exception antivirus pour un dossier dans lequel un script distant écrit, moi ça me fait toujours tiquer.

Le PATH, déjà dit plus haut : rouvre ton terminal.

Le 32 bits : PortableGit n’existe qu’en 64 bits, tu tombes sur MinGit, et l’outil terminal ainsi que le navigateur de l’agent ne fonctionneront pas. Le script te le dit, mais après avoir commencé.

Ce que je ne peux pas te dire, en revanche : combien de temps ça prend, combien de gigaoctets ça pèse au total, et si ça passe du premier coup sur une machine d’entreprise avec des stratégies de groupe. Je ne l’ai pas lancé. Je préfère l’écrire que broder.

Désinstaller

Il n’y a pas d’entrée dans « Ajout et suppression de programmes », puisque rien n’a été installé au sens Windows du terme. La logique du script rend la marche arrière simple : supprimer %LOCALAPPDATA%\hermes, puis retirer à la main les entrées correspondantes de ton PATH utilisateur et la variable HERMES_HOME, dans Paramètres, Variables d’environnement. C’est la contrepartie d’une installation portable : rien à décocher, mais rien ne se nettoie tout seul non plus.

Alors, tu le lances ou pas ?

Mon avis après lecture, et il vaut ce qu’il vaut : le script est nettement mieux écrit que la moyenne des installeurs en une ligne. Il est découpé, il documente ses choix en commentaire, il prévoit un essai à blanc, il n’exige jamais l’administrateur, et il se désinstalle en supprimant un dossier. Ce sont des signaux de gens qui ont déjà géré des rapports de bug.

Ce qui reste vrai malgré tout : le dépôt a été poussé il y a quelques heures au moment où j’écris, la dernière version date du 3 août 2026, et le dépôt affiche 29 921 tickets ouverts pour 227 760 étoiles. Sur un projet qui bouge à ce rythme, l’installeur que tu télécharges aujourd’hui n’est pas celui d’hier. Donc oui, prends les deux minutes : télécharge, lance -ShowResolvedPaths, regarde, puis exécute.

Et si tu veux d’abord savoir ce que cet agent fait réellement avant de lui donner ton disque dur, commence par là.

Les questions qui reviennent

Faut-il WSL pour installer Hermes sur Windows ?

Non. Le fichier de présentation du dépôt précise que Windows en natif fait tourner Hermes sans WSL, l’interface en ligne de commande, la passerelle et les outils inclus. Le script Windows installe sa propre copie de Git avec bash, ce qui suffit aux commandes shell dont l’agent a besoin.

Faut-il être administrateur ?

Non, et c’est une contrainte de conception assumée. Tout est installé dans le profil utilisateur, avec des distributions portables, et les trois écritures de variables d’environnement du script sont en portée utilisateur. Aucune fenêtre d’élévation ne devrait apparaître.

La commande en une ligne installe-t-elle l’application de bureau ?

Non. L’étape de construction de l’application n’est ajoutée que sur demande explicite, via l’installeur dédié. La commande en une ligne te donne l’agent en ligne de commande, sa passerelle et ses outils.

Hermes est-il gratuit ?

Le logiciel oui, sous licence MIT. Le modèle qu’il interroge, non, sauf si tu le fais tourner en local. Le coût réel dépend du fournisseur que tu configures à l’étape 5, pas de Hermes.

Quelle est la dernière version ?

La v0.20.0, étiquetée v2026.8.3 et publiée le 3 août 2026, relevée le 9 août via l’API de GitHub. Le rythme est d’environ une version par semaine depuis mars, donc vérifie plutôt que de me croire sur parole dans six mois.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *