Hermes multi-instance sans conflits : le guide complet des profils

Quand les gens essaient Hermes pour la première fois, ils ont tendance à tout mettre dans la session par défaut : programmation, e-mails, recherche, tâches planifiées — tout mélangé. Très vite, la mémoire devient confuse, la personnalité se dilue et la facture API devient impossible à attribuer.
Hermes a une réponse plus élégante : les profils. Un profil est un répertoire home Hermes indépendant avec son propre :
config.yaml(modèle, outils, paramètres de gateway).env(clés API, tokens de bot)SOUL.md(personnalité / prompt système)memories/(mémoire)sessions/(historique des conversations)skills/(compétences)cron(tâches planifiées)- état du gateway
Pensez-y comme à plusieurs instances Hermes isolées sur une seule machine. Ce guide montre comment transformer cette machine en un véritable studio IA multi-locataire.
1. Démarrage rapide : créer un profil de programmation
hermes profile create coder
coder setup
coder chat
Trois lignes. coder est maintenant une commande à part entière avec sa propre configuration, mémoire et sessions. Vous pouvez :
coder config set model.default anthropic/claude-sonnet-4
echo "Tu es un ingénieur senior spécialisé en Python et en infrastructure." > ~/.hermes/profiles/coder/SOUL.md
coder chat
Pendant ce temps, hermes chat reste inchangé.
2. Ce qu’est vraiment un profil : isolation via HERMES_HOME
Hermes détermine où se trouve le “home” via la variable d’environnement HERMES_HOME. La commande coder chat est essentiellement :
HERMES_HOME=~/.hermes/profiles/coder hermes chat
Comme get_hermes_home() est utilisé dans plus de 119 endroits, la configuration, la mémoire, les sessions, les compétences, le PID du gateway, les logs et le cron sont automatiquement limités à ce répertoire.
Mais attention : un profil n’est pas un bac à sable. Avec le backend de terminal local par défaut, Hermes s’exécute toujours comme votre utilisateur OS et peut accéder à l’ensemble du système de fichiers. Pour isoler le système de fichiers, utilisez Docker.
3. Trois façons de créer un profil
3.1 Profil vierge
hermes profile create mybot
Crée un profil vierge avec des skills inclus. Exécutez ensuite mybot setup pour configurer les clés API.
3.2 Cloner uniquement la configuration (--clone)
hermes profile create work --clone
Copie le config.yaml, .env, SOUL.md et skills du profil actuel. Même modèle et capacités, mais mémoire et sessions neuves.
Idéal pour : même modèle, personnalité ou répertoire de travail différent.
3.3 Tout cloner (--clone-all)
hermes profile create backup --clone-all
Copie tout : configuration, clés, personnalité, toutes les mémoires, compétences, cron. Un instantané de travail.
Note : l’historique des sessions, state.db, backups, state-snapshots et checkpoints sont exclus car ils peuvent atteindre des dizaines de Go. Pour une sauvegarde complète incluant l’historique, utilisez hermes profile export ou hermes backup.
3.4 Cloner depuis un profil spécifique
hermes profile create work --clone-from coder
hermes profile create work-backup --clone-from coder --clone-all
3.5 Ajouter une description pour le routage Kanban
hermes profile create researcher --description "Lit le code source et la documentation externe, rédige des résultats."
L’orchestrateur Kanban utilise cette description pour router les tâches vers le bon profil.
4. Changer et utiliser des profils
Alias de commandes automatiques
Chaque profil obtient un wrapper dans ~/.local/bin/<name> :
coder chat
personal-bot gateway start
research config set model.default openai/gpt-4o
Flag -p explicite
hermes -p coder chat
hermes --profile=coder doctor
hermes chat -p coder -q "hello" # fonctionne à n'importe quelle position
Défaut persistant (hermes profile use)
hermes profile use coder
hermes chat # cible maintenant coder
hermes profile use default
Comme kubectl config use-context.
Savoir où vous êtes
- Le prompt devient
coder ❯ - La bannière de démarrage affiche
Profile: coder hermes profileaffiche le nom, le chemin, le modèle et l’état du gateway
5. Plusieurs gateways : un bot par profil
Chaque profil peut exécuter son propre gateway :
coder gateway start
personal-bot gateway start
research gateway start
Chaque gateway est un processus indépendant avec son propre token de bot. Configurez différents tokens Telegram/Discord/Slack par profil :
nano ~/.hermes/profiles/coder/.env
nano ~/.hermes/profiles/personal-bot/.env
Sécurité : verrouillage des tokens
Si deux profils utilisent accidentellement le même token de bot, le deuxième gateway échoue et indique le profil en conflit. Pris en charge pour Telegram, Discord, Slack, WhatsApp et Signal.
Services persistants
coder gateway install # crée le service hermes-gateway-coder
personal-bot gateway install
Les services systemd/launchd sont indépendants et redémarrent indépendamment.
Script de gestion groupée
Enregistrez ceci sous ~/.local/bin/hermes-gateways :
#!/bin/sh
set -eu
profiles="default coder personal-bot research"
usage() {
echo "Usage: hermes-gateways {start|stop|restart|status|list}"
}
run_for_profile() {
profile="$1"
action="$2"
if [ "$profile" = "default" ]; then
hermes gateway "$action"
else
hermes -p "$profile" gateway "$action"
fi
}
action="${1:-}"
case "$action" in
start|stop|restart|status)
for profile in $profiles; do
echo "==> $action $profile"
run_for_profile "$profile" "$action"
done
;;
list)
hermes gateway list
;;
*)
usage
exit 2
;;
esac
Puis :
chmod +x ~/.local/bin/hermes-gateways
hermes-gateways start
hermes-gateways stop
hermes-gateways restart
hermes-gateways status
6. Multiplexage : un gateway pour tous les profils
Quand vous avez beaucoup de profils, un processus par profil devient lourd. Hermes prend en charge le multiplexage : seul le gateway du profil par défaut s’exécute, et il sert les messages entrants pour tous les profils.
L’activer
hermes config set gateway.multiplex_profiles true
hermes gateway restart
Ou dans ~/.hermes/config.yaml :
gateway:
multiplex_profiles: true
Ce qui change en mode multiplexé
-
Les profils secondaires ne peuvent pas démarrer leur propre gateway Si
coderest déjà servi par le multiplexeur,coder gateway startéchoue. -
Les plateformes HTTP entrantes utilisent le préfixe
/p/<profile>/POST http://host:8644/webhooks/<route> # profil par défaut POST http://host:8644/p/coder/webhooks/<route> # profil coderLes plateformes liées à un port (
webhook,api_server,msgraph_webhook,feishu,wecom_callback,bluebubbles,sms,whatsapp_cloud,line) ne peuvent être configurées que sur le profil par défaut. Les autres profils sont accessibles via le préfixe. -
Les plateformes de polling/connexion ont toujours besoin d’un token par profil Telegram, Discord, Slack, Matrix, Signal, etc. fonctionnent en multiplexage, mais chaque profil doit avoir son propre token de bot. Deux profils ne peuvent pas interroger la même paire
(plateforme, token). -
Les clés de session sont namespacées par profil
agent:<profile>:...garantit que deux profils sur la même plateforme/discussion ne collisionnent jamais. Le profil par défaut conserve le namespace historiqueagent:main:.... -
Un seul PID, verrou et surface d’état
hermes statusaffiche le multiplexeur et les profils servis ;hermes status -p coderfiltre sur coder.
Quand utiliser le multiplexage
- Déploiements conteneurisés/VPS où N unités de supervision sont lourdes.
- Beaucoup de profils à faible trafic qui ne justifient pas chacun un processus.
- Vous voulez un seul point d’entrée pour démarrer, surveiller et redémarrer.
Quand ne pas l’utiliser :
- Vous avez besoin d’une isolation stricte au niveau du processus.
- La panne d’un profil ne doit pas affecter les autres.
- Vous voulez redémarrer un profil indépendamment.
7. Routes de profils : assigner des communautés différentes à des agents différents
Quand plusieurs communautés partagent le même token de bot — par exemple un bot Discord qui sert plusieurs guildes — vous pouvez router des guildes/canaux/threads spécifiques vers différents profils :
gateway:
multiplex_profiles: true
profile_routes:
- name: acme-server
platform: discord
guild_id: "1234567890"
profile: acme
- name: acme-support
platform: discord
guild_id: "1234567890"
chat_id: "9876543210"
profile: acme-support
- name: tg-group
platform: telegram
chat_id: "-1001234567890"
profile: tg-profile
Règles de correspondance
- Tous les champs déclarés doivent être satisfaits (AND).
- Les champs non déclarés sont ignorés.
- Spécificité :
thread_id(8) >chat_id(4) >guild_id(2) > plateforme seule. - Une route sur
chat_idcorrespond aussi aux threads/posts de forum dont le canal parent est ce canal.
Si une route nomme un profil qui n’existe pas, les messages retombent sur le profil par défaut.
8. Répertoire de travail et isolation HOME
Définir un répertoire de travail par défaut
Si vous voulez qu’un profil démarre dans un dossier de projet spécifique :
terminal:
backend: local
cwd: /absolute/path/to/project
Note : cwd: "." dans le backend local signifie “le répertoire depuis lequel Hermes a été lancé”, pas le répertoire du profil.
HOME par profil
Par défaut, les installations sur l’hôte conservent le vrai HOME de l’utilisateur OS pour que des outils comme git, ssh, gh, npm, Claude Code et Codex puissent réutiliser les identifiants existants. L’inconvénient est que les profils partagent cet état CLI au niveau utilisateur.
Pour une isolation CLI stricte par profil, définissez :
terminal:
home_mode: profile
Hermes lance alors les sous-processes avec HOME={HERMES_HOME}/home. Vous devrez initialiser des ~/.ssh, ~/.gitconfig, ~/.config/gh, etc. spécifiques au profil dans ce home.
Hermes expose aussi HERMES_REAL_HOME pour que les scripts puissent toujours trouver le vrai home du compte.
9. Distributions de profils : partager un agent complet
Une distribution de profil package un agent Hermes complet en tant que dépôt git :
my-research-agent/
├── distribution.yaml # manifeste
├── SOUL.md # personnalité
├── config.yaml # configuration
├── skills/ # compétences incluses
├── cron/ # tâches planifiées
└── mcp.json # serveurs MCP
Installez-le en une commande :
hermes profile install github.com/you/my-research-agent --alias
Puis exécutez :
my-research-agent chat
my-research-agent gateway start
Mettez à jour avec :
hermes profile update my-research-agent
Ce qui n’est pas inclus dans une distribution
auth.json,.envet autres secrets ;memories/,sessions/, state.db, logs (données utilisateur) ;- checkpoints, backups, caches.
Chacun apporte ses propres clés API et mémoires ; ce qui est partagé, c’est personnalité + compétences + configuration.
10. Gérer les profils
hermes profile list # lister tous les profils
hermes profile show coder # voir les détails d'un profil
hermes profile rename coder dev-bot # renommer (met à jour alias + service)
hermes profile export coder # exporter vers coder.tar.gz
hermes profile import coder.tar.gz # importer depuis une archive
hermes profile delete coder # supprimer (confirmation requise)
hermes profile delete coder --yes # suppression forcée
Le profil par défaut ne peut pas être supprimé. Pour tout désinstaller, utilisez hermes uninstall.
11. Pièges courants et recommandations
| Piège | Bonne approche |
|---|---|
| Traiter un profil comme un bac à sable | Les profils isolent l’état Hermes, pas le système de fichiers. Utilisez Docker pour l’isolation des fichiers. |
| Deux profils partagent un token de bot | Chaque plateforme de polling/connexion de chaque profil a besoin de son propre token. |
| Configurer des plateformes liées à un port sur des profils secondaires en multiplexage | Configurez webhook/api_server/feishu/etc. uniquement sur le profil par défaut ; atteignez les autres via /p/<profile>/. |
Croire que cwd: "." est le répertoire du profil |
En backend local, cela signifie le répertoire de lancement ; utilisez un chemin absolu pour fixer un projet. |
| Fuite de mémoire dans Hermes partagé | Créez des profils séparés pour différents usages ; chacun a sa propre mémoire. |
| Skills désynchronisés après mise à jour | hermes update synchronise automatiquement les skills inclus dans tous les profils. |
12. Une disposition multi-profil recommandée
Si vous planifiez from scratch, envisagez :
| Profil | Usage | Modèle | Toolsets |
|---|---|---|---|
default |
Questions générales quotidiennes | modèle léger | outils de base |
coder |
Code, revue, refactoring | modèle de code fort | code-wiki, git, docker |
writer |
Documentation, blogs, copy | modèle long contexte | web, memory |
research |
Recherche, articles, analyse concurrentielle | modèle de raisonnement | arxiv, web, browser |
ops |
Déploiements, surveillance, CI/CD | modèle d’outils fort | docker, ssh, cron |
personal-bot |
Assistant personnel Telegram/Discord | modèle de chat | plateformes gateway |
Chaque profil a sa propre personnalité, sa propre mémoire et ses propres clés API. Pas de conflits.
Conclusion
Les profils Hermes ne sont pas simplement “plusieurs comptes”. C’est un système complet d’isolation d’état multi-locataire qui vous permet d’exécuter plusieurs agents spécialisés sur la même machine, chacun avec sa propre identité, sa propre mémoire et ses propres outils.
Quand un Hermes ne suffit plus, ne forcez pas tous les contextes dans une seule session. Prenez deux minutes pour créer un profil. Vous constaterez que vos agents IA deviennent bien plus utiles quand ils ne se battent pas pour un état partagé.