Profils et configurations multiples dans Hermes Agent
Un développeur typique jongle entre plusieurs contextes : un projet React en cours, un script Python pour l'automatisation, un bot Telegram personnel, et peut-être un agent dédié à la recherche. Chaque contexte a ses propres besoins en termes de modèle IA, d'API, de configuration et de personnalité. Hermes Agent résout ce problème grâce au système de profils — des configurations entièrement isolées qui cohabitent sur la même machine, chacune avec son propre ensemble de fichiers, de sessions, de mémoire et de gateway.
Cet article explore en profondeur le système de profils d'Hermes Agent : création, configuration, cas d'usage concrets, isolation des données, gestion des gateways multiples, et bonnes pratiques pour organiser vos agents efficacement.
Qu'est-ce qu'un profil Hermes ?
Un profil est un répertoire home Hermes indépendant. Lorsque vous créez un profil, Hermes génère un dossier complet contenant sa propre configuration, ses clés API, ses sessions, sa mémoire, ses skills, ses tâches cron et son état de gateway. Chaque profil fonctionne comme un agent Hermes autonome, avec sa propre identité et son propre contexte.
Concrètement, un profil nommé coder possède :
~/.hermes/profiles/coder/config.yaml— configuration complète (modèle, outils, settings)~/.hermes/profiles/coder/.env— clés API et tokens de bot~/.hermes/profiles/coder/SOUL.md— personnalité et instructions de l'agent~/.hermes/profiles/coder/sessions/— historique des conversations~/.hermes/profiles/coder/memory/— mémoire persistante (MEMORY.md, USER.md)~/.hermes/profiles/coder/skills/— skills installés~/.hermes/profiles/coder/state.db— base de données d'état
Le profil par défaut est simplement ~/.hermes lui-même — aucune migration n'est nécessaire, votre installation existante continue de fonctionner identiquement.
HERMES_HOME et organisation des données
Le système de profils repose sur la variable d'environnement HERMES_HOME. Celle-ci détermine le répertoire racine où Hermes stocke toute sa configuration et ses données. Plus de 119 fichiers dans le codebase résolvent les chemins via get_hermes_home(), ce qui garantit que tout l'état Hermes est automatiquement scoupé au profil actif.
Lorsque vous exécutez coder chat, le script wrapper positionne HERMES_HOME=~/.hermes/profiles/coder avant de lancer Hermes. Cette approche est élégante car :
- Zéro duplication de code : le même binaire Hermes sert tous les profils
- Isolation totale : config, sessions, mémoire, skills, logs et cron jobs sont séparés
- Simplicité : un simple changement de variable d'environnement suffit
Il est important de distinguer HERMES_HOME du répertoire de travail du terminal. L'exécution des outils démarre depuis terminal.cwd (ou le répertoire de lancement), pas depuis HERMES_HOME. Un profil ne sandbox pas le système de fichiers — l'agent conserve le même accès que votre compte utilisateur.
Utiliser un profil spécifique : hermes -p
Trois méthodes permettent de cibler un profil :
Alias de commande
Chaque profil crée automatiquement un alias dans ~/.local/bin/ :
coder chat # discuter avec l'agent coder
coder setup # configurer les settings du coder
coder gateway start # démarrer la gateway du coder
coder doctor # vérifier la santé du coder
coder skills list # lister les skills du coder
coder config set model.default anthropic/claude-sonnet-4
L'alias fonctionne avec toute sous-commande Hermes — c'est hermes -p coder sous le capot.
Le flag -p
Vous pouvez aussi cibler un profil explicitement :
hermes -p coder chat
hermes --profile=coder doctor
hermes chat -p coder -q "hello" # fonctionne dans n'importe quelle position
Profil par défaut avec hermes profile use
hermes profile use coder
hermes chat # cible maintenant coder
hermes tools # configure les outils de coder
hermes profile use default # revenir au profil par défaut
Le CLI affiche toujours le profil actif : coder ❯ dans le prompt et Profile: coder dans la bannière de démarrage.
Cas d'usage concrets
Work vs Personal
Le cas le plus courant : séparer un agent professionnel d'un agent personnel.
# Agent pro — modèle premium, gateway Slack d'entreprise
hermes profile create work --clone
work setup
work config set model.default anthropic/claude-sonnet-4
# Agent perso — modèle économique, gateway Telegram
hermes profile create personal --clone
personal setup
personal config set model.default google/gemini-2.0-flash
Chaque agent a ses propres clés API dans son .env, sa propre personnalité dans SOUL.md, et sa propre mémoire. Les sessions de travail ne contaminent jamais les conversations personnelles.
Dev vs Production
Pour les développeurs qui déploient des agents Hermes :
# Environnement de développement
hermes profile create dev
dev config set model.default google/gemini-2.0-flash # modèle rapide et pas cher
# Environnement de production
hermes profile create prod --clone --clone-from dev
prod config set model.default anthropic/claude-sonnet-4 # modèle premium
prod config set gateway.log_level info # logs détaillés
La commande --clone --clone-from dev copie la configuration du profil dev comme base, puis vous ajustez les paramètres spécifiques à la production.
Multi-projets
Un profil par projet actif :
hermes profile create react-app
hermes profile create python-api
hermes profile create infra-terraform
# Chaque profil démarre dans son propre dossier
react-app config set terminal.cwd /home/user/projects/react-app
python-api config set terminal.cwd /home/user/projects/python-api
infra-terraform config set terminal.cwd /home/user/projects/infra
Avec terminal.cwd configuré, chaque agent démarre directement dans le bon contexte de projet.
Configuration par profil
Chaque profil dispose de ses propres fichiers de configuration, modifiables indépendamment.
Modèle et provider
coder config set model.default anthropic/claude-sonnet-4
researcher config set model.default google/gemini-2.0-flash
writer config set model.default openai/gpt-4o
Personnalité via SOUL.md
echo "Tu es un assistant de code strict et concis.
Réponds uniquement en code avec des commentaires minimaux." > ~/.hermes/profiles/coder/SOUL.md
echo "Tu es un chercheur académique.
Cite toujours tes sources et reste objectif." > ~/.hermes/profiles/researcher/SOUL.md
Outils activés
Chaque profil peut activer ou désactiver des outils spécifiques via config.yaml ou la commande config set.
Skills
Les skills sont installés par profil :
coder skills install github-pr-review
researcher skills install web-search-deep
La commande hermes update synchronise les nouveaux skills bundle vers tous les profils automatiquement, sans écraser les skills modifiés par l'utilisateur.
Isolation des sessions et de la mémoire
L'isolation est le principe fondamental des profils. Chaque profil maintient :
- Sessions indépendantes : l'historique de conversation de
coderest invisible pourresearcher - Mémoire séparée : MEMORY.md et USER.md sont propres à chaque profil
- État distinct : la base de données
state.db(cron jobs, plugins, capacités) est isolée - Logs séparés : chaque profil a ses propres fichiers de log
Cette isolation permet de spécialiser chaque agent sans risque de contamination croisée. Un agent de recherche qui accumule des connaissances sur un sujet n'interfère pas avec l'assistant de code.
Profils et gateways
Chaque profil exécute sa propre gateway en tant que processus indépendant, avec son propre token de bot :
coder gateway start # démarre la gateway du coder
assistant gateway start # démarre la gateway de l'assistant (processus séparé)
Tokens de bot différents
Chaque profil possédant son propre fichier .env, vous configurez des tokens distincts :
# Token du bot coder (Telegram)
echo "TELEGRAM_BOT_TOKEN=123456:ABC-coder" > ~/.hermes/profiles/coder/.env
# Token du bot assistant (Discord)
echo "DISCORD_BOT_TOKEN=xyz-789-assistant" > ~/.hermes/profiles/assistant/.env
Verrous de token
Si deux profils utilisent accidentellement le même token de bot, la seconde gateway est bloquée avec un message d'erreur clair identifiant le profil en conflit. Cette sécurité fonctionne pour Telegram, Discord, Slack, WhatsApp et Signal.
Services persistants
coder gateway install # crée le service systemd hermes-gateway-coder
assistant gateway install # crée le service systemd hermes-gateway-assistant
Chaque profil obtient son propre service systemd/launchd. Ils s'exécutent indépendamment et peuvent être gérés séparément.
Pour approfondir la configuration des gateways, consultez notre article sur la gateway multi-plateforme.
Astuces avancées
Partager des skills entre profils via external_dirs
Si vous développez un skill personnalisé que vous souhaitez utiliser dans plusieurs profils, utilisez external_dirs dans config.yaml :
# Dans ~/.hermes/profiles/coder/config.yaml
skills:
external_dirs:
- /home/user/shared-skills/common
- /home/user/shared-skills/code-review
Ainsi, plusieurs profils peuvent accéder aux mêmes skills personnalisés sans duplication. Pour une plongée complète dans le système de skills, consultez notre guide du système de Skills.
Profils et Honcho (multi-agent)
Lorsque Honcho est activé, l'option --clone crée automatiquement un pair IA dédié au nouveau profil tout en partageant le même workspace utilisateur. Chaque profil construit ses propres observations et sa propre identité.
Export et import de profils
hermes profile export coder # exporte vers coder.tar.gz
hermes profile import coder.tar.gz # importe depuis l'archive
Idéal pour les sauvegardes ou pour transférer un agent configuré d'une machine à une autre.
Bonnes pratiques d'organisation
1. Nommer clairement
Utilisez des noms courts mais explicites : work, personal, react-app, research-agent. Évitez les noms génériques comme test1 ou bot2.
2. Profils vs workspaces vs sandboxing
Comprenez la différence :
- Profil : répertoire d'état Hermes (config, mémoire, sessions)
- Workspace : répertoire de travail des commandes terminal (
terminal.cwd) - Sandbox : limitation de l'accès fichier (les profils ne sandbox pas)
Si vous voulez qu'un profil démarre dans un dossier spécifique, configurez terminal.cwd explicitement.
3. Documenter chaque profil
Ajoutez un en-tête descriptif dans SOUL.md de chaque profil pour vous rappeler son usage :
# Profil : Coder Agent
## Usage : Développement React/TypeScript
## Modèle : anthropic/claude-sonnet-4
## Gateway : Slack (#dev-bot)
## Dernière mise à jour : 2025-01-15
4. Mettre à jour régulièrement
hermes update met à jour le code (partagé) et synchronise les skills vers tous les profils. Faites-le régulièrement pour bénéficier des améliorations.
5. Nettoyer les profils inutilisés
hermes profile list # voir tous les profils
hermes profile delete old-project # supprimer un profil obsolète
Exemples concrets de setup multi-profil
Setup développeur full-stack
# Profil principal pour le développement frontend
hermes profile create frontend --clone
frontend config set model.default anthropic/claude-sonnet-4
frontend config set terminal.cwd /home/dev/projects/frontend
echo "Expert React/TypeScript. Focus UI/UX et performances." > ~/.hermes/profiles/frontend/SOUL.md
# Profil backend
hermes profile create backend --clone
backend config set model.default google/gemini-2.0-flash
backend config set terminal.cwd /home/dev/projects/backend
# Profil DevOps
hermes profile create devops --clone
devops config set terminal.cwd /home/dev/infrastructure
devops gateway start # gateway dédiée au monitoring
Setup chercheur / écrivain
# Agent de recherche avec modèle puissant
hermes profile create researcher
researcher setup
researcher config set model.default anthropic/claude-sonnet-4
researcher skills install web-search-deep arxiv-reader
echo "Chercheur académique rigoureux. Cite les sources." > ~/.hermes/profiles/researcher/SOUL.md
# Agent de rédaction avec personnalité créative
hermes profile create writer
writer setup
writer config set model.default openai/gpt-4o
echo "Rédacteur créatif et captivant. Adapte le ton au public cible." > ~/.hermes/profiles/writer/SOUL.md
Migration entre profils
Copier des données d'un profil à un autre
# Copier la mémoire d'un profil vers un autre
cp ~/.hermes/profiles/coder/memory/MEMORY.md ~/.hermes/profiles/new-coder/memory/
# Copier des sessions spécifiques
cp ~/.hermes/profiles/coder/sessions/2025-01-15*.json ~/.hermes/profiles/new-coder/sessions/
Cloner avec ajustement
# Cloner la config mais repartir à neuf en mémoire
hermes profile create new-project --clone --clone-from coder
L'option --clone copie config.yaml, .env et SOUL.md mais donne des sessions et une mémoire vierges. L'option --clone-all copie absolument tout — utile pour les backups ou pour forker un agent qui possède déjà du contexte.
Gestion avancée des profils
hermes profile list # lister tous les profils avec leur statut
hermes profile show coder # informations détaillées d'un profil
hermes profile rename coder dev-bot # renommer (met à jour alias + service)
hermes profile export coder # exporter en archive
hermes profile import coder.tar.gz # importer depuis archive
hermes profile delete coder # supprimer un profil (confirmation requise)
Notez que le profil par défaut (~/.hermes) ne peut pas être supprimé — pour tout effacer, utilisez hermes uninstall.
Complétion de commandes
Pour les utilisateurs de Bash ou Zsh, activez la complétion automatique :
# Bash
eval "$(hermes completion bash)"
# Zsh
eval "$(hermes completion zsh)"
Ajoutez la ligne correspondante à votre ~/.bashrc ou ~/.zshrc pour une complétion persistante. La complétion fonctionne pour les noms de profils après -p, les sous-commandes de profils et toutes les commandes de premier niveau.
Conclusion
Le système de profils d'Hermes Agent transforme un seul outil CLI en une plateforme multi-agents complète. En quelques commandes, vous pouvez créer des agents spécialisés — chacun avec son modèle, sa personnalité, sa mémoire et sa gateway — qui cohabitent sur votre machine sans interférer entre eux.
Les points clés à retenir :
- Un profil = un répertoire isolé : config, mémoire, sessions, skills — tout est séparé
- Trois façons de cibler : alias de commande, flag
-p, ouprofile usepour le défaut - Cas d'usage variés : work/personal, dev/prod, multi-projets, recherche/rédaction
- Gateways indépendantes : chaque profil a son propre processus et token de bot
- Isolation sans sandbox : les profils séparent l'état Hermes mais pas l'accès fichier
Pour approfondir, consultez nos articles sur la configuration des modèles, les sessions et contexte, la mémoire persistante, le système de Skills, et la maîtrise du CLI.