NousResearch/Hermes-Bot-Mode
JavaScript
Captured source
source ↗NousResearch/Hermes-Bot-Mode
Description: Bot Mode for the Hermes desktop: a roster of named agents with their own chats, avatars, routines, and bot-to-bot messaging. Desktop plugin, no core patches.
Language: JavaScript
License: MIT
Stars: 203
Forks: 27
Open issues: 18
Created: 2026-08-13T16:40:20Z
Pushed: 2026-08-14T06:53:31Z
Default branch: main
Fork: no
Archived: no
README:
Hermes Bot Mode
A desktop-app plugin for Hermes Agent (installs where the desktop app runs — see Install) that turns your agent profiles into a roster of named bots — each with its own chat, avatar, personality, and schedule.
What you get
- Bots pane — a left-side roster with one row per agent profile: avatar, latest-message preview, and timestamp. Click a bot to land in its chat.
- New Agent — create a bot in seconds: name, title, description. An Advanced disclosure opens the full profile config: clone from an existing profile, pin a provider/model, write a custom SOUL.md, skip bundled skills.
- Edit Profile (right-click a bot) — change the avatar, title, and description any time; its own Advanced section edits the live profile: per-skill and per-toolset enablement, model pin, and the full SOUL.md.
- Duplicate (right-click) — full clone of a bot: config, skills, SOUL.md, memory, and its look.
- Avatars — cute geometric faces (7 shapes × 10 colors with blinking eyes that scan while the bot works), an uploaded image, an AI-generated portrait (when an image backend is configured), or a pixel pet companion that bounces beside the avatar while the bot is busy.
- Routines pane — recurring tasks per bot, backed by Hermes cron. "Summarize my inbox every morning" lives next to the bot that does it. Runs land in the bot's own chat history.
- Bot-to-bot messaging — every bot has a persistent Agent Inbox conversation. Bots message each other with attribution (
[Message from agent 'researcher']), and their SOUL.md teaches them the protocol, including how to reply. - @mentions — type
@researcher have a look at thisin any chat and the active bot hands the message off, waits for the reply, and reports back.
How it works
A bot is a Hermes profile — isolated config, memory, skills, credentials, and chat history under ~/.hermes/profiles//. This plugin is a UI over that primitive:
- Chats open via cross-profile session navigation.
- Creation/editing rides the
profiles.*gateway RPCs (list,create,describe,configure). - Avatar generation uses the
image.generateRPC and works over both local and remote gateways (results return as data URLs). - Routines are plain Hermes cron jobs namespaced
[bot:]— they also show up inhermes cron listand the core Cron page. - Bot-to-bot messages are real CLI handoffs:
hermes -p chat -c "Agent Inbox" -q "...".
No core patches, no background daemons, no extra storage: everything is standard Hermes surface.
Screenshots
| New Agent
| PetDex avatars
| Agent 2 Agent Communications
Install
> This is a desktop plugin — it must be installed on the machine running the Hermes desktop app, not on the gateway. Desktop plugins load from the app-side ~/.hermes/desktop-plugins/ directory; if you use a remote/SSH gateway, installing on the gateway box does nothing. (Example: gateway on your homelab, desktop app on your MacBook → install on the MacBook.)
git clone https://github.com/NousResearch/Hermes-Bot-Mode ~/.hermes/desktop-plugins/hermes-bots
(or download plugin.js into ~/.hermes/desktop-plugins/hermes-bots/)
Then reload plugins in the Hermes desktop app (Ctrl+K → "Reload desktop plugins") or restart the app. A Bots tab appears next to Sessions, and a Routines tile docks beside the conversation.
Requirements
- Hermes desktop app with the plugin SDK (any recent build)
- The
profiles.*/image.generategateway RPCs ship in hermes-agent ≥ mid-2026 builds (hermes update). The plugin feature-detects older gateways and degrades gracefully — the roster works everywhere; Advanced editing and avatar generation light up when the RPCs exist.
Notes
- Deleting a profile is intentionally not exposed in the UI; use
hermes profile delete. - Bot-to-bot delivery is per-invocation (the receiving bot sees the message in its inbox when it next runs); live interrupt of a mid-conversation bot is upstream future work.
- Avatar/pet customizations are stored in plugin storage; the profile itself stays clean.
License
MIT © Nous Research
Excerpt shown — open the source for the full document.