AI / Automation

2026-05-28 Hermes Agent Telegram sur Mac mini M4 loué (HK / JP / KR / SG / US)

Sur le même Mac mini M4 qui compile déjà vos apps iOS en SSH, vous pouvez faire tourner Hermes Agent comme bot Telegram. Le processus passerelle (hermes gateway) conserve le jeton BotFather, applique une liste blanche d’IDs utilisateur numériques et achemine le chat vers la boucle d’outils Hermes—validez des correctifs CI ou posez des questions d’architecture depuis un téléphone sans laisser un portable allumé en permanence.

Divulgation : MacXCode exploite des Mac cloud Apple Silicon à HK, JP, KR, SG et aux États-Unis. Hermes Agent est un projet MIT tiers ; Telegram et les API de modèles relèvent de leurs fournisseurs. Ce guide est une documentation opérationnelle, pas une recommandation d’abonnement.

Pour backends Modal/Daytona serverless et compute quasi idle, voir guide Hermes serverless Modal/Daytona.

Configuration de la passerelle Hermes Agent Telegram sur Mac mini M4 cloud loué

Pourquoi Telegram sur un Mac de build

Telegram convient aux leases headless : la passerelle utilise par défaut le long polling sortant—votre Mac initie le HTTPS vers l’API Telegram, sans exposer de ports entrants sur un builder partagé (contrairement au mode webhook sur HTTPS public).

Raisons courantes de brancher Hermes sur Telegram sur un hôte loué :

  • astreinte—quand GitHub Actions ou xcodebuild échoue la nuit, répondez depuis le mobile pendant que l’agent lit les logs sur NVMe.
  • séparation des rôlesOpenClaw pour l’automatisation dépôt, Hermes pour le chat perso/ops ; en parallèle seulement si vous acceptez deux processus passerelle (RAM et isolement des jetons).
  • migration depuis la messagerie OpenClaw—hermes claw migrate est documenté en amont ; consultez notre matrice Hermes vs OpenClaw vs OpenHuman avant deux passerelles sur un hôte 16 Go.

Les spécifications Mac mini indiquent 16–24 Go de mémoire unifiée. Réservez environ 1–2 Go pour hermes gateway et le working set du modèle avant d’empiler des tests Xcode parallèles. Ne commitez pas le jeton bot dans git.

Comment s’articule la passerelle Telegram

Hermes sépare le chat CLI (hermes TUI) de la messagerie (hermes gateway). La config Telegram va dans ~/.hermes/.env (ou sortie de l’assistant), les logs sous ~/.hermes/logs/gateway.log, service launchd optionnel sur macOS.

ComposantChemin / commandeRôle
Installationcurl -fsSL …/install.sh | bashPython 3.11 + hermes CLI
Modèle / authhermes setupClés API fournisseur (BYO ou Nous Portal)
Config Telegramhermes gateway setupBot Jeton + + TELEGRAM_ALLOWED_USERS
Test premier planhermes gatewayBot en long polling jusqu’à Ctrl+C
Servicehermes gateway installhermes gateway startmacOS launchd, Survit à la déconnexion
Santéhermes doctor, hermes gateway statusVérifs config et processus

Flux de données (mode polling) :

  1. Vous envoyez un message au bot dans Telegram.
  2. La passerelle reçoit la mise à jour via l’API Bot Telegram (poll sortant).
  3. La boucle agent Hermes exécute des outils sur le backend terminal configuré (local, Docker ou SSH sur le même hôte).
  4. Le texte de réponse (et pièces MEDIA:/path optionnelles) repasse par la passerelle vers Telegram.

Défauts de sécurité importants : En amont, TELEGRAM_ALLOWED_USERS utilise des IDs numériques, pas des @pseudo. Quiconque possède le jeton bot peut usurper le bot—traitez-le comme une clé API et révoquez via BotFather /revoke en cas de fuite.

Référence : documentation Telegram Hermes (BotFather, mode confidentialité, webhooks).

BotFather et contrôle d’accès

Créer le bot

  1. Ouvrir @BotFather/newbot.
  2. Définir un nom affiché (ex. Builder Hermes) et un identifiant se terminant par bot.
  3. Copier le jeton au format 123456789:ABCdefGHIjklMNOpqrs…—stockage dans un gestionnaire de mots de passe, pas dans git.

Mettre votre ID en liste blanche

Envoyer un message à @userinfobot pour l’ID numérique (ex. 123456789). Avec TELEGRAM_ALLOWED_USERS, Hermes rejette les inconnus.

Durcissement optionnel sur leases partagés :

  • liste blanche mono-utilisateur uniquement—pas d’ID « équipe » génériques tant que la portée des outils n’est pas comprise.
  • bot par environnement (staging vs production)—éviter qu’un jeton staging touche les workspaces de prod.
  • Désactiver les groupes jusqu’à validation du comportement en DM.

Configurer Hermes pour Telegram

Interactif (recommandé)

hermes setup # configurer d’abord le fournisseur de modèle si installation neuve hermes gateway setup # choisir Telegram → coller le jeton → IDs utilisateur autorisés

Édition manuelle ~/.hermes/.env

TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrSTUvwxYZ TELEGRAM_ALLOWED_USERS=123456789 # Équipe optionnelle: TELEGRAM_ALLOWED_USERS=111111111,222222222

Vérifier les permissions 600 et exclure des sauvegardes dotfile non fiables.

Test fumée au premier plan :

hermes gateway

Envoyez hello dans Telegram ; réponse attendue en quelques secondes. Arrêter avec Ctrl+C avant launchd.

Déploiement headless en 8 étapes sur Mac mini M4

  1. Installer Hermes — Exécuter le install.sh officiel sur le compte utilisateur loué (pas root).
  2. Lancer hermes setup — Configurer le fournisseur de modèle ; confirmer que hermes doctor est propre.
  3. Créer le jeton BotFather — et obtenir l’ID utilisateur numérique (sections ci-dessus).
  4. Lancer hermes gateway setup — Sélectionner Telegram ; vérifier jeton + liste blanche dans ~/.hermes/.env.
  5. Test premier planhermes gateway, message au bot, déclencher un outil inoffensif (ex. pwd) ; arrêt Ctrl+C.
  6. Installer le servicehermes gateway install puis hermes gateway start (launchd macOS).
  7. Persister l’environnement pour les daemons — S’assurer que les clés API dans ~/.hermes/.env sont lisibles par launchd (même utilisateur) ; si échec uniquement en arrière-plan, voir les notes PATH launchd OpenClaw.
  8. Surveillerhermes gateway status, tail -f ~/.hermes/logs/gateway.log, et /new Telegram après changement de config.

Règle opérationnelle citables :Un processus passerelle peut servir plusieurs plateformes (Telegram, Discord, Slack, etc.)—pas besoin d’un démon par application de chat.

launchd et leases SSH uniquement

Sur un lease macOS, hermes gateway install enregistre un job launchd utilisateur—analogue au schéma openclaw onboard --install-daemon documenté sur ce blog.

hermes gateway install hermes gateway start hermes gateway status tail -f ~/.hermes/logs/gateway.log

Après déconnexion SSH, la passerelle doit rester active sous le même utilisateur Unix que l’installation. Si le job s’arrête, vérifier :

  • launchctl list | grep -i hermes
  • erreurs TELEGRAM_BOT_TOKEN / auth dans les logs
  • si une politique de lease tue les agents utilisateur longue durée à la déconnexion (rare sur M4 dédié ; fréquent sur shells partagés)

Note backend Docker : Si terminal.backend: docker, les fichiers envoyés via MEDIA:/path doivent exister sur le chemin hôte lu par la passerelle—pas seulement dans le conteneur. Monter des volumes visibles depuis l’hôte selon telegram.md.

Chats de groupe (optionnel)

Le mode confidentialité Telegram est ON par défaut—en groupe le bot ne voit souvent que /commands, les réponses au bot ou le trafic visible admin. Pour plus de contexte, désactiver la confidentialité dans BotFather (Bot Settings → Group Privacy → Turn off) et retirer/réajouter le bot à chaque groupe, ou le promouvoir administrateur.

Pour « observer sans répondre sauf @mention », voir TELEGRAM_OBSERVE_UNMENTIONED_GROUP_MESSAGES et les chat ID autorisés—lire d’abord la section groupe de telegram.md.

Dépannage

Symptôme : le bot ne répond pas (polling silencieux)

VérificationCommande / correctif
Passerelle en cours ?hermes gateway status; redémarrer avec hermes gateway start
Jeton valide ?recoller depuis BotFather ; /revoke si fuite
Utilisateur hors liste ?ajouter l’ID numérique à TELEGRAM_ALLOWED_USERS et redémarrer
Échec modèle/auth ?hermes doctor; tester d’abord le CLI hermes en local
Logsgrep -i error ~/.hermes/logs/gateway.log | tail -20

Symptôme : 401 Unauthorized ou Conflict: terminated by other getUpdates

  • 401: TELEGRAM_BOT_TOKEN incorrect ou révoqué.
  • Conflict: deux processus pollent le même bot—arrêter les sessions hermes gateway en double ou un second hôte avec le même jeton.

hermes gateway stop pkill -f "hermes gateway" 2>/dev/null || true hermes gateway start

Symptôme : OK au premier plan, échec sous launchd

  • launchd a un environnement minimal—confirmer ~/.hermes/.env lisible et clés présentes.
  • comparer PATH SSH vs launchctl print gui/$(id -u) (macOS) ; aligner Node si les plugins appellent un shell.

Symptôme : le groupe ne voit que /commands

  • mode confidentialité BotFather encore ON—désactiver ou faire admin le bot ; réajouter le bot au groupe.

FAQ

Hermes Telegram remplace-t-il les liaisons Telegram d'OpenClaw ?+
Ce sont des passerelles différentes. Vous pouvez migrer avec hermes claw migrate, mais deux bots sur un hôte dupliquent la RAM et risquent des conflits d'automatisation. Un seul propriétaire de messagerie par lease.
Faut-il une URL publique pour Telegram ?+
Non en long polling par défaut. Le mode webhook exige une entrée HTTPS (Fly.io, Railway, etc.)—généralement inutile sur un Mac mini loué SSH-only.
Telegram sur un M4 16 Go avec Xcode CI ?+
Oui si vous sérialisez les jobs lourds. Mesurez memory_pressure aux pics archive + gateway ; mettez le gateway en pause pendant de grosses matrices xcodebuild si besoin.
Le jeton bot suffit-il à sécuriser le système ?+
Non. Le jeton contrôle l'identité du bot. L'exécution d'outils suit les permissions Hermes et le scope du backend terminal—verrouillez les workspaces, évitez root sur hôtes multi-locataires.
Où est la documentation Telegram officielle ?+

M4 headless pour passerelle Hermes Telegram

Apple Silicon SSH-first à HK, JP, KR, SG et US—polling Telegram et launchd pour une disponibilité 24/7.