La plupart des démos d'agents tournent dans un terminal, sur la même machine que la personne qui regarde. C'est un jouet. La version qui change votre semaine est celle qui continue de travailler une fois le portable fermé : elle surveille, elle exécute des tâches planifiées, elle répond sur votre téléphone. Il faut trois briques — une machine allumée en permanence, un canal de messagerie, et un superviseur de processus. Rien de plus.

i

Combien ça coûte. Un VPS 1 vCPU / 2–4 Go suffit largement. L'agent passe son temps à attendre les API de modèles, pas à calculer. Le budget à prévoir, c'est l'abonnement au modèle, pas le serveur.

Ce qu'il faut avant de commencer

  • Un VPS sous Ubuntu 22.04 ou 24.04, avec accès SSH et un utilisateur non-root.
  • Un fournisseur de modèle : soit un abonnement Nous Portal (un OAuth couvre les modèles et le tool gateway), soit votre propre clé API.
  • Un compte Telegram. Le bot se crée depuis Telegram, en deux minutes, via @BotFather.
  • Aucun domaine, aucun reverse proxy, aucun port ouvert. La passerelle se connecte vers Telegram : vous n'exposez rien.

1. Installer Hermes

Sur le VPS, avec votre utilisateur normal — pas en root :

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

L'installeur clone les sources, installe Python et Node via son propre gestionnaire, et récupère un Chromium épinglé pour la navigation. Il n'a pas besoin de root et ne touche pas au Python du système. À la fin, ouvrez un nouveau shell pour que hermes soit dans le PATH, puis vérifiez :

hermes --version
hermes doctor

hermes doctor est la première commande à connaître. Elle dit ce qui manque — clé de fournisseur, pilote navigateur, ffmpeg — au lieu de vous le faire découvrir au milieu d'une tâche.

2. Choisir un fournisseur de modèle

Le chemin le plus court, qui active aussi la recherche web, la génération d'images et la synthèse vocale en une étape :

hermes setup --portal

Cela ouvre un flux OAuth dans le navigateur et écrit les identifiants dans le profil. Si vous préférez votre propre clé, lancez hermes model et choisissez un fournisseur — l'assistant écrit ~/.hermes/config.yaml.

Ne sautez pas cette étape pour gagner une minute. Un modèle non configuré est la première cause d'une passerelle qui démarre bien et ne répond jamais.

3. Créer le bot Telegram

  1. Dans Telegram, ouvrez @BotFather (celui avec le badge bleu) et envoyez /newbot.
  2. Donnez-lui un nom d'affichage et un identifiant finissant par bot.
  3. BotFather répond avec un token du type 8123456789:AAF…. Traitez-le comme un mot de passe : qui le détient contrôle votre bot.
  4. Envoyez /setprivacy → votre bot → Disable si vous voulez qu'il lise tous les messages d'un groupe. Laissez activé pour un usage privé.
!

Ne collez jamais ce token dans une fenêtre de chat — ni à un collègue, ni à une IA, ni à moi. Quiconque le voit possède le bot. Tapez-le directement dans l'assistant de configuration, ou écrivez-le dans un fichier en chmod 600.

4. Brancher la passerelle

hermes gateway setup

L'assistant demande quelle plateforme activer, récupère le token et l'écrit dans ~/.hermes/config.yaml, dans le bloc Telegram. Installez ensuite le service pour qu'il survive aux déconnexions SSH et aux redémarrages :

hermes gateway install
hermes gateway status

hermes gateway install enregistre une unité systemd utilisateur et active le lingering du compte, ce qui permet au service de revenir après un reboot sans que vous soyez connecté. Pour suivre les logs en direct pendant un débogage, hermes gateway run reste au premier plan.

5. Prouver que la boucle fonctionne

Ouvrez votre bot dans Telegram et envoyez n'importe quoi. Une installation correcte répond en quelques secondes. Côté serveur :

hermes gateway status
hermes status --full

Vous devez voir la plateforme connectée et le service actif. Si le bot reste muet, l'ordre des vérifications est : token valide (getMe en curl), passerelle en marche, modèle configuré. Neuf fois sur dix, c'est le troisième.

6. Le rendre réellement utile

Un bot qui ne fait que discuter est une fenêtre de chat avec des étapes en plus. Les deux fonctions qui en font une infrastructure :

  • Tâches planifiées. hermes cron create "50 7 * * *" --deliver telegram — l'agent s'exécute à l'heure dite et pousse le résultat dans votre chat. Les heures sont en UTC dans l'expression cron : convertissez-les vous-même et notez l'heure locale en commentaire, sinon vous serez décalé d'une heure deux fois par an.
  • Envois scriptés. hermes send -t telegram "build terminé" fonctionne depuis n'importe quel script shell, sans LLM et sans passerelle pour les plateformes à token de bot. C'est le moyen le moins coûteux de faire sortir des alertes d'un job long.

Au-delà : les skills vivent dans ~/.hermes/skills/<catégorie>/<nom>/SKILL.md, et un skill n'est qu'un fichier markdown avec un frontmatter que l'agent charge quand la tâche correspond. Écrivez-en un par tâche récurrente que vous vous surprenez à réexpliquer.

7. La partie que tout le monde saute

  • Ne faites pas tourner l'agent en root. Donnez-lui son propre utilisateur, avec accès à ce dont il a besoin. En cas d'injection de prompt, le rayon d'action reste son dossier personnel, pas la machine.
  • Gardez les approbations pour tout ce qui est destructif. Un agent distant qui peut supprimer des fichiers sans demander, c'est une pièce que l'on lance une seule fois.
  • Les secrets restent dans des fichiers en 600. ~/.hermes/.env et tout ce qui est sous ~/.hermes/secrets/. Pas dans le fichier de config, pas dans un dépôt git, pas dans un message.
  • Rien en entrée. Telegram en mode polling ne nécessite aucun port ouvert. Si vous activez un webhook ou un serveur API, liez-le à la boucle locale et placez-le derrière un reverse proxy en TLS.
  • Mettez à jour délibérément. hermes update est sûr à lancer, mais lisez ce qui change : une dépendance embarquée peut bouger sous vos pieds.

Les pannes, dans l'ordre où elles arrivent

SymptômeCauseCorrectif
Bot muet, passerelle « running »Aucun fournisseur de modèle configuréhermes model, puis redémarrer la passerelle
La passerelle meurt à la fermeture du SSHLancée avec run au lieu du servicehermes gateway install, puis start
Service absent après rebootPas de lingering pour l'utilisateurloginctl enable-linger $USER
401 du fournisseurClé expirée ou mauvais profilhermes status --full pour voir le profil et la clé actifs
Le bot répond à des inconnusBot ouvert sans liste blancheRestreindre les chat IDs autorisés dans la config

Aide-mémoire

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
hermes setup --portal           # fournisseur + outils
hermes gateway setup            # activer Telegram, coller le token
hermes gateway install          # service systemd utilisateur
hermes gateway status           # est-il vivant
hermes send -t telegram "salut" # message scripté, sans LLM
hermes cron create "0 8 * * *" --deliver telegram
★

Ce que je ferais différemment en le sachant : obtenir une conversation propre en CLI avant de toucher à la passerelle. Déboguer un bot muet quand on n'a jamais vu l'agent répondre, c'est une mauvaise façon de passer une soirée.