Overview
The messaging gateway lets you talk to Hermes from any supported platform while the agent runs on a server, VPS, or cloud instance. It runs as a persistent process (or system service) that bridges incoming messages from your preferred platform to the Hermes agent loop and delivers responses back. This complements the CLI: use the CLI for interactive development sessions on your machine, and the gateway for anywhere-access from your phone, for unattended background tasks, and for receiving cron job notifications and background process updates.Supported platforms
Telegram
Full-featured. Bot token from @BotFather. Supports voice memos, images, documents, threads.
Discord
Full-featured. Bot token from Developer Portal. Supports threads, attachments, server + DM.
Slack
Full-featured via Socket Mode. Slash commands via
/hermes. Supports channels, DMs, threads.Built-in Baileys bridge — no third-party API needed. Pair with
hermes whatsapp.Signal
Via signal-cli HTTP bridge. Supports groups and DMs.
IMAP/SMTP. Works with Gmail (App Password), Outlook, and any standard mail server.
Matrix
Via any Matrix homeserver. Access token or password login.
Mattermost
Self-hosted Mattermost via bot or personal access token.
DingTalk
DingTalk enterprise messaging via client ID and secret.
Home Assistant
Home Assistant Assist pipeline integration.
Gateway setup
Run the setup wizard
The setup wizard configures your provider, API keys, and any platforms you want to activate:This creates or updates
~/.hermes/.env with the platform tokens you provide.Start the gateway
Run the gateway in the foreground to test:Install as a persistent system service (systemd / launchd):Other management commands:
Platform setup
- Telegram
- Discord
- Slack
- WhatsApp
- Signal
- Email
Create a bot
Message @BotFather on Telegram:Follow the prompts. BotFather gives you a bot token like
7123456789:AAH....Restrict access (recommended)
Get your Telegram user ID from @userinfobot, then add it to Comma-separate multiple IDs:
.env:TELEGRAM_ALLOWED_USERS=123456789,987654321Slash commands in messaging
Most slash commands work across both CLI and messaging platforms. Some are platform-specific:Available on both CLI and messaging
| Command | Description |
|---|---|
/new / /reset | Start a fresh session |
/model [name] | Show or change the current model |
/personality [name] | Set a personality |
/retry | Resend the last message |
/undo | Remove the last exchange |
/compress | Manually compress context |
/usage | Show token usage |
/insights [days] | Usage analytics |
/background <prompt> | Run a prompt in the background |
/stop | Kill running background processes |
/voice [on|off|tts|status] | Voice mode control |
/reload-mcp | Reload MCP servers |
/help | Show available commands |
Messaging-only commands
| Command | Aliases | Description |
|---|---|---|
/status | — | Show session info |
/sethome | /set-home | Set this chat as the home channel |
/update | — | Update Hermes to the latest version |
CLI-only commands
Commands like/skin, /config, /tools, /cron, /history, /save, /rollback, /browser, /plugins, /verbose, /statusbar, and /paste are only available in the interactive CLI.
Setting a home channel
The home channel receives cron job notifications, background process completion messages, andsend_message deliveries when no specific target is specified.
In any platform chat, run:
TELEGRAM_HOME_CHANNEL, DISCORD_HOME_CHANNEL, etc. in config.yaml and takes effect immediately.
Cross-platform message delivery
When the agent uses thesend_message tool, it can route messages to any connected platform:
- Omit the target to deliver to the current platform’s home channel
- Specify a platform and chat ID to deliver elsewhere
Voice memo transcription
When a voice message or audio file is sent on Telegram, Discord, WhatsApp, or Slack, Hermes automatically transcribes it before passing it to the agent. No extra configuration is required beyond having a speech-to-text provider set up. The default STT provider islocal (faster-whisper, runs on your machine, no API key needed). Switch to cloud STT in config.yaml:
Background process notifications
When the agent launches a background process from a messaging platform, a watcher pushes status updates to your chat. Control verbosity in~/.hermes/config.yaml:
| Value | Behavior |
|---|---|
all | Running output updates + final completion message (default) |
result | Only the final message when the process finishes |
error | Only the final message when exit code is non-zero |
off | No watcher messages — process runs silently |
HERMES_BACKGROUND_NOTIFICATIONS environment variable.