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:
This creates or updates ~/.hermes/.env with the platform tokens you provide.
2

Start the gateway

Run the gateway in the foreground to test:
Install as a persistent system service (systemd / launchd):
Other management commands:
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:
Follow the prompts. BotFather gives you a bot token like 7123456789:AAH....
2

Add the token

3

Restrict access (recommended)

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

Start the gateway

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

Messaging-only commands

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:
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:

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:
You can also set this via the HERMES_BACKGROUND_NOTIFICATIONS environment variable.