Hermes Agent v0.22.0
Aperçu
v0.22.0 — The Threshold Release. Sortie le 13 octobre 2026. Depuis v0.21.0 : ~24 200 commits · ~6 080 PR fusionnées · ~15 600 fichiers modifiés (+2 045 000 / −1 140 000) · ~7 180 issues fermées · ~2 520 contributeurs.
Hermes était le dieu des seuils : la porte, le passage, la pierre de bornage. v0.21.0 assemblait le panthéon ; v0.22.0, c’est franchir la porte. Une installation desktop toute neuve s’ouvre désormais sur un chat de configuration guidé qui tourne sur un modèle d’essai gratuit, si bien qu’un nouveau venu parle à Hermes avant même de posséder une clé API. Les Connectors emmènent l’agent jusque dans les applications que vous utilisez déjà, sans aucun compte requis pour commencer. Les modèles locaux le ramènent chez vous, sur votre propre matériel, avec un runtime llama.cpp installable en un clic. Et le seuil lui-même est devenu plus solide : des releases stables SemVer testées que les installations suivent par défaut, des paquets desktop signés (y compris via le Microsoft Store), et un seul gestionnaire de paquets sous le tout. Autour de cette colonne vertébrale : un catalogue de 600 plugins, la vague de modèles Claude 5.5 / GPT-6, la connexion aux sites par gestionnaire de mots de passe pour le navigateur, un écran de bot dont vous pouvez prendre la main, un seul backend et un seul gateway pour tous les profiles, et une codebase d’un tiers plus petite.
Il s’agit de la plus grande fenêtre jamais livrée par Hermes, environ 2,5x le cycle v0.21.0, et elle regroupe et documente intégralement les releases correctives v0.21.1–v0.21.7.
Points forts
1. Un premier lancement qui se configure tout seul
Ouvrez l’application desktop sur un ordinateur où vous n’avez jamais utilisé Hermes et elle démarre un court chat de configuration au lieu d’un écran de réglages. Une carte à la fois, il demande votre nom, une couleur d’accent et une disposition, quelles applications connecter, quels plugins installer, puis offre une visite rapide et propose jusqu’à quatre premières tâches choisies pour vous. Il tourne sur un modèle d’essai gratuit (nous/welcome, une fois par utilisateur de l’OS), donc aucune clé n’est nécessaire ; Skip setup l’interrompt et Settings → Run onboarding again le ramène. L’agent a aussi gagné set_theme, donc « mets-le en violet, mode sombre » fonctionne dans n’importe quel chat desktop (#137429, #137522, #137807, #134209, #105258).
2. Connectors : Hermes travaille à l’intérieur de vos applications
À travers le tool gateway de Nous, l’agent peut désormais agir dans des applications hébergées comme Linear et Notion : demandez une application, connectez-vous une fois dans votre navigateur, et ses outils deviennent utilisables dans le même tour. Vous n’avez pas besoin d’un compte Nous pour commencer ; la première fois que vous utilisez une application, Hermes crée une identité gratuite limitée aux connectors. Le desktop dispose d’une nouvelle page Connectors qui réunit les applications hébergées et vos serveurs MCP dans une seule liste (elle remplace l’onglet MCP), la même carte de configuration apparaît dans le TUI et le CLI, et vous pouvez connecter plusieurs comptes nommés d’une même application (un compte work et un compte home) puis les gérer avec /connectors ou hermes connectors (#106842, #111008, #119074, #135143, #135072, #135097, #135151, #135173, #137426).
3. Des modèles locaux en un clic
Hermes peut désormais exécuter des modèles ouverts entièrement sur votre machine, sans que rien n’en sorte : pas de compte, pas de clé API. Il installe et maintient llama.cpp avec le moteur adapté à votre matériel (CPU, CUDA, Metal, Vulkan ou ROCm), évalue chaque modèle du catalogue par rapport à votre GPU et à votre RAM, et choisit la build de la meilleure qualité qui tient. Les téléchargements se mettent en pause et reprennent, le serveur démarre et s’arrête avec Hermes, et les mises à jour du moteur se font en un clic. Partez de Settings → Providers → Local Models sous Windows, macOS et Linux, ou de hermes model → Local models dans un terminal. Le catalogue inclut Qwen3.8 27B, Qwen3.8 Flash Next (avec sa tête spéculative MTP), Qwen3.6 35B-A3B et DeepSeek V4 Flash, plus n’importe quel GGUF de Hugging Face (#100667, #101823, #128768, #111423, #133111, #134116).
4. Des canaux de release stables
Hermes livre désormais des releases SemVer testées. Chaque release passe le CI source, Docker, Nix, les builds desktop signés et les exécutions d’installation/mise à niveau sur chaque OS avant d’être publiée, et les installations depuis les sources passent maintenant de release en release par défaut au lieu de suivre chaque commit de main. Vous préférez le tout dernier commit ? hermes update --set-channel main, ou le nouveau sélecteur de canal dans Desktop Settings → About. Revenir à une release plus ancienne est étiqueté comme un rollback et n’arrive jamais sans demander, et relancer l’installateur vous garde sur le canal que vous avez choisi (#102765, #135847, #135949, #136313, #137780).
5. Des paquets desktop signés, le Microsoft Store et un seul gestionnaire de paquets
L’application desktop est désormais un paquet scellé et signé qui embarque son propre Python et son propre Node et se met à jour elle-même, si bien que le premier lancement ne compile plus rien. Windows reçoit un MSIX signé (x64 et ARM64) via App Installer ou le Microsoft Store ; macOS reçoit une build signée et notariée pour Apple Silicon. En dessous, un nouveau gestionnaire de paquets unifié (hermes pm) prend en charge chaque outil épinglé et vérifié par hash ainsi que les environnements Python : une mise à jour construit un nouvel environnement et ne bascule qu’une fois sa vérification passée, donc une mise à jour échouée ou tuée ne peut plus vous laisser à moitié appliqué (#102765, #132361, #132386, #120339, #122221).
6. Le catalogue de plugins : 600 plugins vérifiés
Le catalogue de plugins a été lancé ce cycle et a grandi jusqu’à 600 entrées, chacune épinglée à un commit vérifié et installable depuis Hermes Desktop ou le CLI. Parcourez par catégorie et par classement d’étoiles, avec une page par plugin et par auteur ; les règles du catalogue empêchent les plugins référencés de modifier les internes de Hermes ou de livrer des binaires non analysables. Les providers de mémoire vivent désormais chez leurs créateurs (Honcho, Supermemory, Hindsight, Mem0, OpenViking, Holographic), tout comme Home Assistant, Spotify et Langfuse : les utilisateurs existants sont migrés automatiquement, et l’installation par défaut s’est allégée (#69446, #111415, #117808, #113381, #114732, #131267, #132476, #136436).
7. La vague de modèles Claude 5.5 et GPT-6
Claude Fable 5.1, Opus 5.5, Sonnet 5.5 et Haiku 5.5, GPT-6 Astra, Sol et Luna plus GPT-6.1 Sol, et Gemini 4 Argon sont sélectionnables sur Nous Portal, OpenRouter et les routes natives là où elles sont proposées. Le raisonnement antérieur est désormais rejoué par défaut sur chaque provider capable de le lire, à travers la reprise, les branches et la compaction, si bien qu’un long travail en plusieurs étapes conserve son fil de raisonnement. Et quand un provider passe une mauvaise heure, Hermes attend la fin des 503/529/timeouts transitoires en cycles visibles et bornés au lieu de terminer votre tour (#100577, #119304, #126842, #134759, #128248, #137955, #136358, #116353).
8. Connectez-vous aux sites avec votre gestionnaire de mots de passe
L’agent navigateur peut se connecter aux sites avec les identifiants de 1Password, Bitwarden ou du coffre chiffré de Hermes, et le modèle ne voit jamais le mot de passe. Si rien n’est enregistré, vous obtenez une invite masquée dans le CLI, le TUI ou le Desktop pour l’enregistrer, les codes à usage unique sont saisis sans entrer dans la conversation, et les remplissages de carte et d’adresse au moment du paiement nécessitent votre confirmation (#106480, #107585, #137084).
9. Bot Screen : observez votre bot travailler, prenez la main quand il a besoin de vous
Un bot qui tourne sur un gateway Linux peut avoir son propre desktop, que Hermes Desktop diffuse en direct. Quand il tombe sur un login, une demande 2FA ou un CAPTCHA, vous prenez l’écran, terminez l’étape vous-même, puis rendez le contrôle pendant que le bot repart avec votre session. Avec un backend Docker, SSH ou Singularity, l’écran du bot, le computer use et le navigateur tournent à l’intérieur du sandbox, jamais sur votre hôte (#108914, #121169, #121110).
10. Un seul backend et un seul gateway pour chaque profile
Hermes exécute désormais un seul gateway de messagerie et un seul backend desktop par machine, qui servent tous vos profiles, au lieu d’un processus par profile. Créer un profile rend ses bots actifs sans redémarrage, chaque profile garde ses propres identifiants, allowlists, tâches cron et sessions, et hermes update migre automatiquement les installations par profile existantes. Moins de processus, aucun conflit de token, une seule chose à démarrer et à arrêter (#112854, #108928, #118273, #117983, #118246, #118027).
11. Voir et piloter vos subagents en direct
Les subagents en cours d’exécution restent visibles au-dessus du composer dans le CLI (F6), le TUI (Ctrl+T) et le Desktop, avec la tâche de chaque enfant, le temps écoulé et le transcript en direct, plus des boutons Steer et Stop. /stop atteint les enfants en arrière-plan et récupère leur travail partiel, et delegate_task peut transmettre des captures d’écran et des maquettes aux enfants capables de vision (#105593, #115616, #97689).
12. Un sélecteur de modèles qui connaît vos forfaits
Marquez vos modèles préférés d’une étoile, voyez un abonnement qui s’épuise (« 17 % restants · réinitialisation à 15 h 00 ») et le moment où une limite de débit se lève, directement dans le sélecteur, et choisissez l’effort de raisonnement au moment de sélectionner un modèle dans hermes model, /model (/model X --reasoning high) et le Desktop. Vous basculez avant de heurter le mur, et non après (#126535, #133392, #133408, #110346, #113117).
13. Hermes dans votre langue, partout
Chaque chaîne visible par l’utilisateur dans le CLI, le gateway de messagerie, le TUI et le Desktop passe désormais par un unique catalogue de traduction, avec une couverture complète dans les langues intégrées. De nouvelles langues peuvent être livrées sous forme de plugins, et n’importe quel profile peut remplacer des chaînes individuelles avec un petit fichier YAML (#126296).
14. Plus léger à tous égards
Toute la codebase a été simplifiée sans aucun changement de comportement : les sources sont passées d’environ 1,06 M de lignes à 698 K (−34 %) et gateway/run.py est passé de 34 847 lignes à 5 512. Les prompts se sont allégés eux aussi : environ 19 outils rarement utilisés ne se chargent plus que lorsque l’agent les cherche, ce qui divise à peu près par deux le schéma d’outils desktop envoyé à chaque appel, et environ 2,1 k tokens de plus sont sortis du prompt fixe. Les modèles locaux préremplissent moins à chaque tour (#102117, #97979, #106676, #137084).
15. De petits conforts qui s’additionnent
Des touches vim en opt-in dans le prompt du CLI, un champ de branche git dans la barre d’état, une cloche et une notification desktop quand Hermes vous attend, un Ctrl+C qui efface votre brouillon au lieu de tuer le tour, un /queue éditable, et hermes --native pour laisser votre propre terminal gérer le scrollback et la recherche du TUI. Sur le Desktop, un nouveau mode Simple transforme l’application en simple fenêtre de chat, et les erreurs indiquent désormais ce qui a mal tourné avec un correctif en un clic (#106412, #106434, #101284, #101320, #137065, #95999, #121035, #118587, #111601).
⚠️ Notes de mise à niveau
- Python 3.14 est le runtime des installations gérées (le gestionnaire de paquets l’installe pour vous). KittenTTS n’est pas disponible sur 3.14 (#102765).
- Le desktop Windows est MSIX uniquement et nécessite Windows 11 22H2 ou plus récent ; les installateurs NSIS/MSI ont disparu. L’application macOS est réservée à Apple Silicon dans les builds par défaut (#102765, #136603).
- Un seul gateway par machine est la configuration par défaut.
hermes updatereplie les gateways par profile dans le gateway multiplexé par défaut quand rien n’entre en conflit (#112854). - Les chats ne se réinitialisent plus sur un minuteur d’inactivité ou quotidien. Les modes idle/daily de
session_resetsont retirés (les configurations qui les définissent encore journalisent un avertissement) ;/newou/resetrepart de zéro (#105021, #126244). - Les anciennes sessions sont élaguées automatiquement.
sessions.auto_pruneest désormais activé par défaut : les sessions terminées inactives depuis 90 jours sont supprimées au démarrage. Les sessions épinglées et ouvertes ne sont jamais touchées ; mettezsessions.auto_prune: falsepour tout conserver. - Les providers de mémoire sont passés en plugins du catalogue (Honcho, Supermemory, Hindsight, Mem0, OpenViking, Holographic), tout comme Home Assistant, Spotify et Langfuse. Les utilisateurs existants sont migrés à la mise à jour ou au premier démarrage, données intactes. ByteRover et RetainDB restent intégrés.
- Auteurs de plugins : l’ancienne couche d’import de compatibilité des plugins a disparu (#126164),
hermes sync(Skill Sync) a été supprimé (#132465), et le scanner tirith intégré a été retiré (#133832). Plusieurs outils ont été renommés (todo→todo_list,cronjob→cronjob_manage,process→process_manage) ; les anciens noms fonctionnent toujours (#97979).
🚪 Onboarding, niveau gratuit, Connectors et modèles locaux
- Onboarding au premier lancement — une installation desktop toute neuve obtient le chat de configuration guidé (voir Point fort 1). Les installations existantes et les backends distants (SSH, URL, Cloud) ne l’obtiennent pas automatiquement ; l’ancien flux de configuration de profile et
/initiate-setupsont supprimés (#137420, #134215, #108292). set_theme— l’agent peut définir la couleur d’accent (un échantillon ou n’importe quelle valeur#rrggbb), le mode clair/sombre/système et la disposition, ou afficher un sélecteur (#137522).- Niveau gratuit — une première installation desktop sans provider ni compte Nous obtient le modèle gratuit
nous/welcomecomme essai unique (une fois par utilisateur de l’OS). Le CLI, le TUI et le gateway n’obtiennent ni compte ni modèle gratuit ;HERMES_GUEST_ONBOARDINGa disparu.hermes auth upgrade, ou/logindans n’importe quel chat ou DM de messagerie, fait passer cette identité gratuite en compte Nous complet tout en conservant vos applications connectées (#137807, #105258, #105259, #105260, #105261). - Des limites de niveau gratuit explicites — la limite de débit gratuite termine le tour immédiatement en indiquant l’heure de réinitialisation ; chaque échec du niveau gratuit porte un code et une phrase claire ; l’application gère la vérification navigateur du service de comptes ; les utilisateurs du niveau gratuit voient un avis Terms et Privacy. Les comptes Nous sans crédits peuvent choisir des modèles facturés sur un abonnement qu’ils détiennent et obtenir une recherche web rapide gérée gratuitement (#134049, #111970, #133824, #117079).
- Connectors — connecteurs d’applications hébergées, page Connectors et plusieurs comptes par application (voir Point fort 2). Les outils des connectors peuvent aussi envoyer vos fichiers locaux en pièces jointes et enregistrer les fichiers qu’ils renvoient.
nous.guest: falsedésactive les identités invitées ;tools.connectors.enabled: falsedésactive les connectors (#111238, #138014). - Modèles locaux — installation en un clic (voir Point fort 3) ; téléchargements de GGUF Hugging Face avec pause/reprise ; une offre de configuration unique après l’onboarding sur les machines capables de faire tourner le modèle recommandé (#129506). Mises à jour du moteur en un clic : NVIDIA sous Linux obtient CUDA, les GPU AMD et Intel obtiennent Vulkan dimensionné selon leur propre mémoire, et chaque backend exécute llama.cpp b11370 (#111423, #133111, #131782). De meilleures recommandations : seuls les modèles qui tiennent entièrement en mémoire GPU sont recommandés, et le 27B n’est plus suggéré sur du matériel qui l’exécute mal (#108429, #135438, #134116, #112107). Vos propres serveurs locaux : LM Studio dispose d’un profile de provider, les sélecteurs Ollama ne clignotent plus, un serveur llama.cpp démarré à la main apparaît dans
/model, et le repli sur le modèle géré par le desktop fonctionne (#134320, #113129, #116679, #131795).
📦 Releases stables, paquets desktop et gestionnaire de paquets
- Releases stables et canaux de mise à jour — des releases stables SemVer testées et le sélecteur de canal (voir Point fort 4). v0.21.6 et v0.21.7 ont été les premières à passer la nouvelle porte ; les forks restent sur
main, et une installation en avance sur la dernière release attend la suivante. Vérifications de mise à jour allégées : un seul appel à l’API GitHub par jour remplace legit fetchtoutes les 30 minutes (#107648). - Paquets desktop scellés et signés — voir Point fort 5. Dans un paquet,
hermes updatepointe vers le bon outil de mise à jour (App Installer, Store ou macOS) (#134911). Les installations packagées fonctionnent de bout en bout : le terminal de l’agent lancehermes, Uninstall explique la suppression au niveau de l’OS, et les plugins à dépendances Python s’installent à l’intérieur du MSIX (#134051, #135333). hermes pm— le gestionnaire de paquets unifié (voir Point fort 5) : Python 3.14 épinglé et vérifié par hash, uv, Node, ripgrep, FFmpeg, Chromium et Git/Bash sous Windows, avechermes pm doctor|status|repair|gc. Les contributeurs utilisentsource ./activate(ou.ps1/.fish).- Les environnements de dépendances sont des générations — les nouveaux sont vérifiés avant usage, donc une installation échouée conserve celui qui fonctionne ; les mises à jour et
hermes pm gcrécupèrent les anciens (92 GB à 18 GB sur un hôte) (#124968, #133808). Les SDK optionnels (Anthropic, Bedrock) se chargent en cours de session sans redémarrage ;security.allow_lazy_installs: falsedésactive ce comportement (#122221). Les plugins déclarent leurs dépendances Python, résolues avec le cœur à travers les profiles ; les conflits sont refusés, et une mise à jour désactive un plugin qui ne convient plus (#113851, #122103, #114569, #132469). - Les mises à jour ne peuvent plus s’appliquer à moitié — voir Point fort 5 ; une mise à jour tuée se répare elle-même au lancement suivant (#132361, #120339). Mises à jour plus rapides, checkouts plus petits — les mises à jour ne reconstruisent que ce qui a changé (16,5 s contre 32,5 s sur macOS), les clones sont blobless, et la croissance du
.giten clone partiel est corrigée (#135092, #133016, #131679). - Installateurs —
install.sh/install.ps1vérifient uv et Git épinglés, passent la main à PM, journalisent danslogs/install.log, et fonctionnent désormais sur musl Linux (Alpine, Void), Windows 10 et les chemins Windows Unicode (#124964, #125598, #132430). Avec la télémétrie en opt-in, les échecs d’installation, de mise à jour, de skill et de plugin enregistrent une raison (#133809). - Docker / Nix / Termux / Windows — Docker épingle une base Debian 13 avec Chromium complet ;
stable/latestne bougent que sur une release publiée ; les extras intégrés reviennent après un redémarrage (#135726, #135084). Nix partage les épinglages et son application desktop obtient Wayland ; Termux passe à un paquet APT signé (pkg upgrade hermes-agent), même si sa documentation avertit toujours qu’il est cassé ; les mises à jour Windows se terminent pendant que l’ancien runtime est encore utilisé (#128144, #122146, #131779).
🧠 Providers et modèles
- Des providers en plugins — les providers pilotés par ACP et par CLI s’installent hors de l’arbre avec
hermes plugins install;--provider chatgptsélectionne l’OAuth ChatGPT Codex (#101456, #115761). Bedrock sert GPT-6 (1M) et applique les Claude Guardrails ; Azure Foundry liste les déploiements ; Gemini accepte les outils en JSON Schema complet ; OpenCode Go route Claude via Messages (#133573, #107815, #115770, #98928, #134848). - Nouveaux réglages —
agent.text_verbositydéfinit la longueur des réponses Responses ; les providers personnalisés nommés tournent sur le Codex app-server (#115880, #115905). - Catalogue de modèles — Claude 5.x (Opus 5.5 aussi sur Anthropic natif et Bedrock, 1M) ; GPT-6 Astra/Astra Pro en standard, fast et flex, Codex
-900ken opt-in, et/fast ultrafastpour Astra et 6.1 Sol ; Gemini 3.8 Flash et Gemini 4 Argon ; DeepSeek V4.1 Flash, Qwen3.8-Max-0902, Grok 4.7, GLM-5.3-FlashX, Muse Spark 1.3, Solar Pro 4/Mini 4 (#122633, #103261, #119410, #136950, #101450, #137989, #107489, #100966, #118371, #117435, #101948, #131645). - Authentification — les profiles partagent les connexions OAuth en toute sécurité (les grants à usage unique ne se dupliquent jamais, la connexion propre à un profile est conservée) ; la connexion Nous survit à l’expiration horaire, aux subagents concurrents, aux pannes du Portal et aux contrôles en périphérie (#100929, #134574, #103526, #121488). Les connexions mortes sont nommées une fois avec le correctif
hermes auth add;auth.adopt_external_logins: falseempêche d’emprunter les connexions Codex CLI/Claude Code (#113816, #115586). - Routage, repli et cache —
agent.auto_recovery_cycles(5 par défaut) borne l’attente, et le repli revient vers un provider Codex primaire dont le quota s’est rouvert (#116353, #130716). Le routage automatique ne facture jamais un provider que vous n’avez pas choisi ;provider_routing.modelsépingle OpenRouter par modèle (#107366, #104159).cache_ttl: autoen opt-in (1 h en interactif, 5 min pour les subagents/cron) ; un/modelqui casse le cache dans une grosse session demande d’abord confirmation ; la compaction conserve le préfixe (#118337, #95267, #104455). - Raisonnement — rejoué sur chaque provider qui le lit ; l’effort est réglable dans chaque sélecteur, avec des noms de paliers personnalisés ; le mode rapide d’Anthropic suit la documentation (#136358, #110346, #115735, #120517).
🏗️ Cœur de l’agent, sessions et mémoire
- Les tours bloqués se rétablissent — un watchdog (
agent.turn_liveness.timeout_s, 600 s par défaut) interrompt un tour sans progression et libère sa session ; les réparations répétées de transcript lèvent désormais une seule erreur au lieu de rester silencieuses (#99758, #99687). Les flux morts sans texte sont réessayés, les boucles de répétition sont coupées, et les tours interrompus ne sont pas signalés comme terminés (#113135, #130551, #112272). - La compaction se déclenche sur les vrais comptages de tokens — l’usage rapporté par le provider, et non des octets divisés par quatre ; la queue protégée est plafonnée à 20 % pour que les modèles à petite fenêtre compactent eux aussi (#104555, #117957). Un mauvais résumé ne peut pas effacer le contexte : les providers de résumé qui refusent ou saturent laissent le transcript intact, et une compaction non validée ne change rien (#118920, #115906, #136083). Nouvelles clés par provider
compression.model_thresholdsetauxiliary.<task>.no_progress_timeout(#108061, #115804). - Sessions et state.db — les timeouts de verrou nomment le processus qui le détient, une base occupée ne tue plus un tour, et des namespaces PID frères ne peuvent pas voler de leases (#116967, #134577, #132161).
state.dbcesse de grossir : l’auto-prune est activé par défaut (sessions terminées depuis plus de 90 jours) et ferme les sessions cron/kanban/subagent obsolètes ; VACUUM ne s’exécute que si 25 % est récupérable (#101316, #100903). Commandes de réparation :hermes sessions set-journal-mode delete|wal,repair-profiles,repair-prompts(#117684, #115689, #124200). - Mémoire — OpenViking et Holographic passent au catalogue de plugins à la mise à jour ou au premier démarrage, données intactes, ou expliquent pourquoi pas (#134350, #136436, #131269). Les MEMORY.md/USER.md mis en forme à la main sont acceptés, les refus indiquent quoi corriger, et les secrets sont expurgés avant que les providers ne les voient (#133038, #134429).
- Profiles et configuration — un config.yaml cassé retombe sur la dernière copie valide, et les erreurs de lecture ne peuvent pas l’effacer (#109463, #120343).
hermes config getmasque les secrets (--rawy renonce),setrefuse les chemins avec une faute de frappe et stocke les noms de style env dans.env(#111341, #112250). Les profiles restent séparés : les routes REST agissent sur le profile qu’elles nomment, les exports sautent.ssh/.aws/.gnupg, etimport-agent --syncgarde les imports à jour (#118275, #132201, #88855).
📱 Plateformes de messagerie (gateway)
- Un seul gateway sert tous les profiles —
hermes gateway statusexplique tout refus du garde de démarrage,hermes gateway migrate --multiplexmigre à la main, les plateformes webhook servent chaque profile sous/p/<profile>/,hermes -p X gateway stop|startmet un profile en pause, etgateway.standalone: trueest une dérogation temporaire (#112854, #108952, #119774, #119680). Les profiles restent isolés : les clones sautent les tokens de bot sauf avec--clone-channels, etprofile_routespeut router selon l’expéditeur (#109502, #115642). - Sessions et commandes —
/loginconnecte les utilisateurs du niveau gratuit depuis un DM ; lesession_resetidle/daily est retiré, donc seuls/newet/resetrepartent de zéro ;/branchouvre un fil frère sur Discord, Telegram, Slack et Matrix (--hereconserve l’ancien comportement) ; le modedeclineenvoie un refus poli aux DM non autorisés ; un pied de pageserved_modelen opt-in nomme le modèle qui a répondu (#105261, #126244, #117450, #88028, #115925). - Plateformes — le
bots_require_mentionde Telegram en opt-in arrête les boucles de réponses entre bots,extra.drop_pending_on_cold_boot: falseconserve les messages envoyés hors ligne, les langues CJK peuvent activer les messages enrichis ; la configuration Discord vérifie le token, lie l’intent Message Content et vous ajoute à l’allowlist, et les salons en réponse libre peuvent créer des fils automatiquement ; Slack reçoit un sélecteur/modelen Block Kit, avec statuts et titres sur l’Agent Sessions API ; WhatsApp fait des mentions natives viahermes send --mentionsans le délai de regroupement de 5 s, et des sessions appairées sur chaque profile ; les tableaux Signal s’affichent en monospace, le LaTeX Matrix se compose dans Element, Email refuse les expéditeurs usurpés et exige un épinglageauthserv_id(le courrier est rejeté jusqu’à configuration), et lesend_messagede QQ Bot livre les médias (#106534, #116134, #111831, #132456, #116168, #103436, #101477, #115253, #117104, #132518, #106538, #106515, #132663, #131927). - Webhooks et serveur d’API —
coalesceen opt-in regroupe les rafales d’événements en une seule exécution,cron_jobdéclenche des tâches cron sur des événements, les signatures Standard Webhooks sont vérifiées, etmirror_to_sessionen opt-in donne du contexte aux réponses (#92066, #95262, #104183, #120825). Le serveur d’API diffuse le raisonnement vers les clients compatibles OpenAI, et les approbations de stream peuvent recevoir une réponse (#115797, #121769). - Relay et Bot Chat — les salons du Bot Mode peuvent modifier les membres, répondre à un @handle, conserver 200 messages d’historique, et prennent en charge les DM de bot sensibles à l’expéditeur avec un garde-fou de boucle
ALLOW_BOTS(#113384, #107520). Relay vérifie les cibles desend_message; le tracing NeMo Relay en 0.10.0 étiquette les spans avec le répertoire de travail (#99220, #135787, #108345).
🖥️ Application desktop
- Mode Simple / Avancé — Simple masque les panneaux de développeur, Avancé reste la valeur par défaut (#118587). Onglets dans la barre de titre ; les profiles s’ouvrent dans leur propre fenêtre ou comme défaut au démarrage (#107099, #113176). Regroupement de la barre latérale par gateway/profile, instances Cloud réutilisables, glisser « New session » sur un panneau (#105813, #70571). Importer et poursuivre le transcript d’un autre agent de code (#104229). Les cartes Goal / Loop / Heartbeat se mettent en pause, reprennent et s’arrêtent au-dessus du composer (#104246).
- Chat et composer — une pastille d’effort de raisonnement ; ajout d’un modèle par slug ; les collages de plus de 3 000 caractères sont joints en .txt ; raccourci opt-in de capture d’écran de fenêtre sous macOS (#109907, #120693, #108901, #113349). Les erreurs actionnables nomment le problème et le correctif ; les cartes de limite d’usage affichent l’heure de réinitialisation et peuvent planifier une nouvelle tentative (#111601, #116288). Le mode commentaire du navigateur épingle des éléments de page avec des notes, en envoyant captures, sélecteurs et styles au composer (#100083).
- Réglages et plugins — sous-pages ordonnées et recherchables depuis ⌘K ; police de chat (par ex. OpenDyslexic) ; russe, français, allemand et espagnol (#117127, #111226, #100429). Une ligne par plugin ; les plugins obtiennent des pages de réglages, et les plugins desktop peuvent exécuter des actions d’application par id, parler via le pet, ajouter des contrôles Appearance et réordonner la navigation latérale (#133182, #136417, #135504, #120912, #120922).
- Bot Mode — Bot Screen (voir Point fort 9), désactivé par défaut et nécessitant des paquets côté hôte (#108914). Les discussions de groupe peuvent réordonner les salons et compresser l’historique masqué d’un membre (#105909, #117015).
- Performance et plateformes — le Desktop s’attache au backend en cours d’exécution, qui sert tous les profiles (#118246). Démarrage Windows plus rapide ; Linux tourne sans sudo et sous WSLg/Wayland (#111002, #100136, #113247). Les sessions suivent le worktree et la branche git de l’agent ; le panneau Review cadre le travail ; parcourez les espaces de travail SSH, glissez des sessions sur des projets, cherchez dans les logs, voyez et levez les blocages Kanban (#128428, #127200, #99538, #126543, #126658, #125647).
⌨️ CLI, TUI et dashboard
- CLI —
display.vim_mode, un champ de statutgit_branchetdisplay.bell_on_prompt(cloche plus notification OSC 9), tous désactivés par défaut (#106412, #106434, #101284, #101320). Ctrl+T ouvre le moniteur de subagents ; un collage multiligne en cours de tour forme un seul message (#105879, #109146). Commandes scriptables :hermes usage --json(quota, sans session),hermes worktree --json/--older-than,kanban edit --title/--body/--priority, et-tpour choisir les serveurs MCP à démarrer (#115899, #95257, #117632, #101634). Aussi :hermes -zsort avec un code non nul en cas d’échec ;-m custom:<name>:<model>atteint ce provider ; le pied de page ne se réduit plus à « Window too small » (#113234, #115293, #117439). - TUI —
--nativeoudisplay.tui_nativeutilise le mode terminal natif (#121035). Contrôle en cours de tour : double-Esc interrompt, le push-to-talk coupe la parole, et le dock live (également dans le CLI) affiche/goalet les prompts en file (#125803). Corrections de saisie : Shift+lettre sur les terminaux à touches étendues, Ctrl+D sous macOS, collage d’images sous Wayland, redessins d’inactivité stables (#90674, #116851, #116824, #87907). Les TUI attachés rejoignent leur session ;attachments.storage: workspaceprépare les fichiers qu’un agent sandboxé peut lire (#112227, #125816). - Dashboard — discutez depuis plus d’appareils : lecteurs d’écran, défilement tactile sur iPad, plus de caractères doublés au clavier mobile, et un second onglet obtient son propre terminal (#133960, #134181, #116978, #117061). Les erreurs sont une phrase et un bouton de correction au lieu de JSON brut, avec recherche par titre, un sélecteur live et des analyses par appel d’API (#111602, #133981, #134100, #133991). Auto-hébergement : sous-chemins en reverse proxy, connexion par mot de passe à côté d’OAuth, sessions distantes sans expiration (#133903, #107018, #110061).
- Commandes slash — l’effort de raisonnement dans chaque sélecteur (
hermes model, modèles aux,/model), et/model X --reasoning highfonctionne aussi (#110346). Un/queueéditable peut lister, éditer, déplacer ou supprimer des prompts ;/sest/steer(#95999, #125803)./contextmontre chaque fichier d’instructions tel qu’il a été chargé, tronqué ou masqué (#91272).
🔧 Outils, MCP et navigateur
- Les outils rares se chargent à la demande — computer_use, session_search, image_generate, cron et les outils GUI du Desktop sont derrière
tool_searchpar défaut (schémas desktop 13 367 → 6 883 tokens ;defer: []y renonce) ;todo/cronjob/processdeviennenttodo_list/cronjob_manage/process_manage(alias conservés) (#97979). La liste d’outils est figée par session à travers le TUI,-q --resumeet les sauts de gateway pour que le cache de prompt tienne (#120289). Les sessions gateway/cron sans surveillance arrêtent durement les boucles d’outils, et cinq rejeux identiques stoppent n’importe quel outil (#100967). - Des outils fichiers et web plus intelligents —
read_fileaffiche les schémas SQLite et signale les conflits de merge,search_filesexécute ripgrep directement (5–6x plus rapide), etweb_searchsans clé bascule entre fournisseurs gratuits (#115974, #104502, #134048). - MCP —
hermes mcp login <server> --flow devicepour les terminaux sans interface graphique (#104891). OAuth plus robuste : les refresh tokens ne sont jamais effacés, dépensés deux fois ni envoyés à un autre émetteur ; RFC 9207, les serveurs hébergés par Google et ceux derrière un WAF se connectent ; les gateways n’ouvrent jamais d’onglet de navigateur (#106185, #111186). Plus de serveurs se connectent : les serveurs SSE uniquement basculent, les serveurs stricts se connectent (sampling.toolsen opt-in), et le catalogue ajoute n8n officiel et Asana V2 (#106432, #131891, #116048). Le démarrage connecte jusqu’àmcp.discovery_concurrency(4) serveurs à la fois ; les modèles vision voient les images MCP ; les serveurs stdio morts redémarrent sans rejouer un appel (#117956, #133815, #106546). - Navigateur et computer use — la connexion par gestionnaire de mots de passe remplit aussi les cartes et les adresses après votre confirmation ;
hermes-sandbox:desktopest la nouvelle image par défaut (sandboxes existants conservés) (#106480, #121169).browser_execfonctionne immédiatement, pilote le Chromium intégré (également le repli cloud) et ouvre localhost via un sidecar (#102986). - Terminal et exécution de code — les timeouts au premier plan dépassant 600 s deviennent des jobs d’arrière-plan,
heartbeat=Nenvoie la progression, et le dock de travail live les liste (#103529). Les résultats de sandbox signalent un environnement recréé ; les chemins SSH sont résolus à distance (#107093, #122657). LSP ajoutelsp.serversetlsp.package_manageret n’exécute jamais l’interpréteur ou le SDK propres d’un dépôt cloné (#115714, #126239). - Média — nouveaux modèles : GPT Image 2.5 et Kling Image v3 ; vidéo : Kling 3.0, Kling O3, LTX 2.5, Wan 3.0, MiniMax H3 Max Turbo, Gemini Omni Flash 1.1 (#105988).
stt.streamingen opt-in affiche les mots au fil de la parole (CLI, TUI, Desktop) et les longs enregistrements se transcrivent sur tous les providers cloud (#133853, #133825).voice.voice_chat_mode: gpt-liveen opt-in donne au Desktop la voix full-duplex ;auxiliary.voice_chatexécute les tours parlés sur un modèle plus rapide et la TTS démarre plus tôt (#108137, #133986, #115846).
🧩 Plugins, skills et catalogue de plugins
- Catalogue de plugins — pages de plugin et d’auteur : /docs/plugins range les plugins sous Memory, Desktop, Platforms, Web, Tools, Voice, Automation et Models. Les pages affichent la description, un encadré de divulgation, des captures d’écran, le README du commit épinglé, un bouton « Open in Hermes Desktop » et une commande d’installation copiable (#111415, #111547, #117808). Des cartes plus lisibles portent une étiquette de version à côté du commit épinglé (
1.2.0 @ ad3f352b), des images de bannière, une taille uniforme et le mode clair (#113381, #125065, #124001). Les fiches peuvent déclarer des problèmes connus, quehermes plugins installet le dashboard affichent à l’installation (#124058). Règles de référencement : les plugins desktop doivent rester dans les slots du SDK, 11 plugins qui modifiaient les internes ont été délistés (les copies installées continuent de fonctionner), et le guide de soumission correspond à ce que le CI applique (#115579, #130860, #131048). - Nouveautés du catalogue — les 600 fiches sont nouvelles ce cycle. Sortis du cœur, outre les cinq providers de mémoire, Holographic a un nouveau mainteneur communautaire, et Home Assistant, Spotify, Langfuse et TouchDesigner sont désormais des plugins officiels du catalogue (#114732, #136196, #132476, #137130). Ajouts officiels : Blender Lab, Snyk, NVIDIA App et NVIDIA Broadcast (Windows uniquement), Telegram Business, Memory Wiki (#119365, #109084). Tailles des rayons : Memory 65 (Cognee, LanceDB, ReMe, Memoria, HydraDB, Mnemosyne, YantrikDB, BetterDB), Web et recherche 34 (Apify, Parallel, Linkup, SerpApi, You.com, TinyFish, Oxylabs), providers de modèles 48 (JetBrains Junie, Telnyx, NetMind, Groq, Chutes, Kiro, Opper, AIHubMix), plateformes 32 (Inline, Microsoft 365, Rocket.Chat, VK, Zalo, iMessage, Sendblue), voix 18 (Speechify, Deepgram, Fish Audio, Gemini Live), panneaux desktop 140, outils 180 (#112292, #118231, #118512, #114202).
- Système de plugins — les providers de modèles hors arbre apparaissent dans les sélecteurs de modèles, se connectent via
hermes auth(OAuth PKCE intégré) et rafraîchissent leurs tokens (#116552). Hôte de plugins par profile en opt-in :plugins.isolation: hostexécute les plugins tiers dans un processus par profile, avec uniquement les secrets de ce profile (#126911). Nouvelles API : hooks pour les tours interrompus, les appels LLM auxiliaires et les demandes de saisie humaine ; les plugins peuvent démarrer des sessions de gateway, ajouter des Automation Blueprints et des slots de modèles aux, embarquer le pilote computer-use, et émettre des requêtes signées Codex (#118909). SDK de plugins desktop : les réglagesconfig_schemas’affichent sous forme de formulaire dans Capabilities → Plugins ; les plugins obtiennent un pont skills/toolsets/profiles et des slots pour les pastilles de modèle et les menus (#118917). Installer, épingler, mettre à jour : les dépôts privés s’installent avec vos identifiants git, le Desktop épingle un plugin à un commit, les mises à jour conservent les données utilisateur, et les skills de plugin s’exécutent sous la forme/plugin:skill(#106981, #107321, #133175). Chargeur et scanner plus robustes : les imports bloqués sont sautés aprèsplugins.load_timeout_seconds(10 s), les hooks de garde échouent en mode fermé, et la prose, les fixtures et les littéraux de regex ne bloquent plus les installations (#118915, #115954). - Skills — nouveaux skills optionnels : pr-lens, system-atlas, anatomy, mono-color, dream-loop, scrollcraft, auteur, ip-as-logo, ai-presenter-video, live-dashboard, dynamic-workflow, reddit-reading, rss-feeds (#109306, #103821). L’index de Skills Hub se reconstruit avec environ 480 skills scientifiques, et la recherche trouve aussi les skills non indexés (#109178).
skills.auto_loadépingle des skills dans chaque session etskills.create_dirchoisit où vont les skills créés par l’agent (#92048, #100377). Meilleure auto-amélioration : les apprentissages et les corrections vont dans le skill de la tâche, la revue en arrière-plan peut améliorer n’importe quel skill, et les skills ajoutés en cours de chat atteignent le message suivant (#102107). Curator plus léger : il ne bloque plus le prompt du CLI, une installation est passée de 1,9 GB à environ 200 MB, et les skills inutilisés s’archivent au bout de 30 jours au lieu de 90 (#115862). Skills Guard : les installations bloquées sur un échantillon de 421 skills passent de 83 à 68, et le shell inline est limité aux skills non communautaires (#135595).
⏰ Cron, Kanban et délégation
- Cron — les tâches non épinglées utilisent le modèle configuré au moment du déclenchement et
pinneden fige un (#113679). Planifications auto-réparatrices : un déclenchement qui n’a jamais atteint le modèle se relance après 5, 15 et 30 minutes, une fenêtre « retry after » d’un provider met la tâche en attente en silence, et un créneau manqué pendant un redémarrage se déclenche une fois (#108731, #115843). Alertes plus discrètes : une alerte par incident plus un rappel toutes lescron.failure_repeat_alert_hours;failure_deliverredirige ou met en sourdine les avis d’échec ; un agent peut faire échouer son exécution avec[CRON_FAILURE](#114807, #101373, #113155). Nouvelles options de tâche :--pausedcrée une tâche non armée, et--interpreterexécute les scripts sur votre propre venv (#104984, #125392). Un gateway multiplexé exécute les tâches de chaque profile avec l’env et les secrets de ce profile ; la livraison exige une preuve positive, la sortie est expurgée des secrets partout, et les exécutions tardives ou satellites sont étiquetées (#118027, #100908, #112830). - Kanban — les workers encaissent les ennuis de provider : les tours échoués sont réessayés sur place avec leur contexte, et les limites de débit ou les 5xx remettent en file au lieu de brûler des tentatives (#112318, #112500). Un tableau qui s’explique : les cartes affichent la dernière sortie du worker en cas d’échec, et le dispatch dit pourquoi une carte est retenue (#112618). Une seule définition de workflow pilote les colonnes ; les workers obtiennent
kanban_schedule;kanban create --body-file; le Desktop suit les bascules de gateway (#134340, #130455, #116791, #119054). - Délégation et multi-agent — subagents en direct, images et
/stop(voir Point fort 11). Les fan-outs perdent moins : les enfants échoués remontent immédiatement, un crash du propriétaire conserve le travail terminé, les enfants peuvent passer des processus au parent, et les complétions par tâche sont en opt-in (#103549, #116707, #105125). Routage des enfants :delegation.fallback_providersdonne aux enfants leur propre chaîne etchild_timeout_secondsmesure l’inactivité (#105347, #117606)./goalest cohérent sur le CLI, le Desktop et la messagerie, le juge attend les subagents,/goal pause for nown’écrase plus le goal, et les gates s’exécutent dans l’espace de travail de la session (#104833, #132251, #125453).
🔒 Sécurité, confidentialité et codebase
- Correctifs de sécurité de la v0.21.6 — durcissement de la connexion au dashboard (
X-Forwarded-Forusurpé, plafonds de taille, codes de connexion limités au loopback) ; git ignore automatiquement les programmes de filtre de dépôt ; l’allowlist e-mail résiste à l’usurpation par nom d’affichage (#133367, #130685, #130661, #125212). Les secrets restent en place : les processus enfants n’héritent ni des secrets de l’adaptateur ni de ceux du dashboard, leexecute_codedistant garde son token hors d’argv, les exports de profile sautent les stockages d’identifiants, et les clés n’atteignent jamais des hôtes étrangers lors d’un refresh ou d’un repli (#125755, #124262, #130525, #120299). Expurgation plus fine : le partage de debug expurge avant de tronquer, les lectures de fichiers et la sortie du terminal masquent le.envet les secrets de configuration,hermes config getmasque sauf avec--raw, et les transmissions de mémoire sont nettoyées (#132270, #111422, #111341, #134429, #100564). Fichiers accessibles au seul propriétaire au repos : identifiants,state.db, snapshots, profiles de navigateur, caches de médias, quoi que dise votre umask (#109509, #127229). - Gardes plus larges — davantage de requêtes passent le garde SSRF (
security.fake_ip_rangespour les proxys fake-ip) ; les requêtes vers les métadonnées cloud, le pipe-to-shell zsh/dash etdeno evalexigent une approbation ;approvals.denyfonctionne dans les sandboxes ; des règles intégrées remplacent le scanner tirith embarqué (#114887, #113156, #116726, #103649, #133832). Failles fermées : le callback OAuth MCP cesse de refléter du HTML, et les entrées webhook, SMS et WhatsApp Cloud rejettent les secrets de signature vides (#92612, #133257). Métriques partagées en opt-in : les statistiques d’usage quotidiennes n’atteignent Nous qu’avec consentement, les deux interrupteurstelemetry.shared_metricssont désactivés par défaut, chaque profile demande une fois, et Entrée signifie « No thanks » (#95278). - Codebase et performance — environ 2,1 k tokens de prompt en moins par requête, outils de coffre à la demande, sondes de fichiers en un aller-retour, et
hermes -wne recompacte plus à chaque lancement (#137084, #101599). Sauvegardes plus sûres :hermes backupconserve les 3 plus récentes et signale les archives incomplètes ;hermes importrefuse celles qui sont endommagées (#106455, #121498). Aussi : les variables d’environnementKEY_2… rejoignent les pools d’identifiants ; unhermes statussur un seul écran ;display.suppress_warning_notificationsen opt-in ; des sections de roster dans Desktop Bots ; seuls le node/npm/uv de Hermes sont utilisés ; Xiaomi MiMo v2.6 (#112390, #131034, #114370, #101290, #125589, #118502). - Pour les contributeurs — CODEOWNERS remplace le label gate ; les E2E (y compris sous Windows natif) ne tournent que sur les builds de release ; les releases stables sautent macOS Intel/Termux par défaut (#131726, #136603).
🐛 Corrections de bugs notables
- Onboarding, connectors et modèles locaux — le llama-server géré ne plante plus sous Windows avec 0xC0000374 et n’hérite plus de vos identifiants (#116923) ; les serveurs de modèles locaux sous Windows sont confinés et les orphelins récupérés en toute sécurité ; deux backends qui démarrent ensemble lancent un seul routeur (#111038, #117600).
- Installation, mise à jour et packaging — les agents Docker ne perdent plus leur serveur d’API intégré, leur messagerie et leurs dépendances MCP après un redémarrage (#135726) ; un
hermes updatetué en plein pull ne casse plus tous les points d’entrée (#120339). - Providers et modèles — un modèle Claude limité en débit ne pénalise plus tout l’identifiant pour tous les autres modèles Claude (#113171) ; les sessions Codex app-server reçoivent désormais SOUL.md et le system prompt de Hermes (#115759).
- Boucle d’agent, sessions et mémoire — un chat dont la ligne de session a été supprimée la recrée au lieu de perdre silencieusement tous les tours suivants (#124117) ; les messages vidés à l’arrêt du gateway sont récupérés dans leur session (#114225).
- La liste complète des correctifs se trouve dans le corps de la release.
Mise à niveau
hermes update
Les installations gérées obtiennent un runtime Python 3.14. Après la mise à niveau, lancez hermes doctor pour vérifier l’installation et redémarrez le gateway (hermes gateway) afin que les changements de plateforme prennent effet. Pour voir ce que la prochaine mise à jour touchera avant de la lancer : hermes update --plan.
Journal des modifications complet : v0.21.0…v0.22.0
← Hermes Agent Changelog