Skip to main content

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.

WhatsApp

Built-in Baileys bridge — no third-party API needed. Pair with hermes whatsapp.

Signal

Via signal-cli HTTP bridge. Supports groups and DMs.

Email

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

1

Run the setup wizard

The setup wizard configures your provider, API keys, and any platforms you want to activate:
hermes gateway setup
This creates or updates ~/.hermes/.env with the platform tokens you provide.
2

Start the gateway

Run the gateway in the foreground to test:
hermes gateway start
Install as a persistent system service (systemd / launchd):
hermes gateway install
hermes gateway start
Other management commands:
hermes gateway status      # Show running status and active platforms
hermes gateway stop        # Stop the service
hermes gateway uninstall   # Remove the service
3

Send your first message

Open the platform of your choice and send a message to your bot. The gateway will respond once the agent finishes processing.

Platform setup

1

Create a bot

Message @BotFather on Telegram:
/newbot
Follow the prompts. BotFather gives you a bot token like 7123456789:AAH....
2

Add the token

# ~/.hermes/.env
TELEGRAM_BOT_TOKEN=7123456789:AAH...
3

Restrict access (recommended)

Get your Telegram user ID from @userinfobot, then add it to .env:
TELEGRAM_ALLOWED_USERS=123456789
Comma-separate multiple IDs: TELEGRAM_ALLOWED_USERS=123456789,987654321
4

Start the gateway

hermes gateway start
Your bot is live. Send it a message to confirm.

Slash commands in messaging

Most slash commands work across both CLI and messaging platforms. Some are platform-specific:

Available on both CLI and messaging

CommandDescription
/new / /resetStart a fresh session
/model [name]Show or change the current model
/personality [name]Set a personality
/retryResend the last message
/undoRemove the last exchange
/compressManually compress context
/usageShow token usage
/insights [days]Usage analytics
/background <prompt>Run a prompt in the background
/stopKill running background processes
/voice [on|off|tts|status]Voice mode control
/reload-mcpReload MCP servers
/helpShow available commands

Messaging-only commands

CommandAliasesDescription
/statusShow session info
/sethome/set-homeSet this chat as the home channel
/updateUpdate 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, and send_message deliveries when no specific target is specified. In any platform chat, run:
/sethome
This saves the current chat ID as TELEGRAM_HOME_CHANNEL, DISCORD_HOME_CHANNEL, etc. in config.yaml and takes effect immediately.

Cross-platform message delivery

When the agent uses the send_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
This enables cron jobs and background tasks to notify you on Telegram while you’re running a Discord session, for example.

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 is local (faster-whisper, runs on your machine, no API key needed). Switch to cloud STT in config.yaml:
stt:
  enabled: true
  provider: local    # local | groq | openai
  local:
    model: base      # tiny | base | small | medium | large-v3

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:
display:
  background_process_notifications: all   # all | result | error | off
ValueBehavior
allRunning output updates + final completion message (default)
resultOnly the final message when the process finishes
errorOnly the final message when exit code is non-zero
offNo watcher messages — process runs silently
You can also set this via the HERMES_BACKGROUND_NOTIFICATIONS environment variable.

Build docs developers (and LLMs) love