Multi-Platform Gateway: Hermes Everywhere

Run the same Hermes Agent on Telegram, Discord, Slack, WhatsApp, Signal, SMS, and more — with full tool access, not just chat. Step-by-step setup guide.

TLDR: The Hermes gateway is a daemon that connects your agent to messaging platforms. Install with hermes gateway install, configure platforms via hermes gateway setup, and start with hermes gateway start. One agent, many doors — Telegram, Discord, Slack, WhatsApp, Signal, Email, SMS, Matrix, and 10+ more.

Key Takeaways

  • Same agent, same tools, same memory — different chat interface. This hermes multi-platform setup connects Hermes to all your messaging apps.
  • Telegram is the easiest platform to set up (create bot via @BotFather, paste token)
  • Gateway runs as a systemd service — survives reboots with loginctl enable-linger
  • Each platform has its own pitfalls: Discord needs Message Content Intent, Slack needs message.channels subscription
  • Check ~/.hermes/logs/gateway.log for troubleshooting

Architecture

The gateway runs as a background service. It listens on each platform you configure, routes messages to the agent loop, and delivers responses back.

Telegram →  \
Discord  →   → Gateway → Agent → Tools → Response
Slack    →  /

Quick Start

# Configure platforms interactively
hermes gateway setup

# Test in foreground
hermes gateway run

# Install as a systemd service (production)
hermes gateway install
hermes gateway start

# Check status
hermes gateway status

Telegram Setup

Telegram is the most popular platform for good reason — it’s fast, reliable, and the setup takes 2 minutes.

1. Create a Bot

  1. Open Telegram and message @BotFather
  2. Send /newbot
  3. Choose a name (e.g., My Hermes Agent)
  4. Choose a username (e.g., my_hermes_bot)
  5. BotFather gives you a token — copy it

2. Configure and Start

hermes gateway setup
# Select Telegram, paste token

hermes gateway start

Message your bot on Telegram. The agent has full tool access — search the web, run commands, analyze images, all from your phone.

Telegram features:

  • /sethome — set current chat as home channel
  • /topic — enable DM topic sessions
  • Voice messages auto-transcribed (requires STT setup)

3. Control Access

hermes pairing list             # Authorized users
hermes pairing approve "@user"  # Add a user
hermes pairing revoke "@user"   # Remove a user

Discord Setup

1. Create Bot Application

  1. Discord Developer Portal → New Application
  2. Bot → Add Bot → copy token
  3. IMPORTANT: Enable Message Content Intent under Privileged Gateway Intents
  4. OAuth2 → URL Generator → scopes: bot → permissions: Send Messages, Read Message History → open the URL to invite

2. Configure

# ~/.hermes/config.yaml
gateway:
  platforms:
    discord:
      enabled: true
      bot_token: "your_discord_bot_token"

3. Restart

hermes gateway restart

Slack Setup

1. Create Slack App

  1. api.slack.com/apps → Create New App
  2. Add Bot Token Scopes: chat:write, im:history, im:read, channels:history, channels:read
  3. Subscribe to message.channels and message.im events
  4. Install to Workspace → copy Bot User OAuth Token (xoxb-...)

2. Configure

# ~/.hermes/config.yaml
gateway:
  platforms:
    slack:
      enabled: true
      bot_token: "xoxb-..."

3. Restart

hermes gateway restart

Other Platforms

PlatformConfig keyAuth method
WhatsAppwhatsappAPI token
SignalsignalSignal CLI or API
EmailemailIMAP/SMTP credentials
MatrixmatrixAccess token
SMSsmsTwilio credentials
Home AssistanthomeassistantLong-lived token

Gateway Management

hermes gateway status          # Running or stopped?
hermes gateway logs            # Show recent logs
hermes gateway restart         # Full restart
hermes gateway stop            # Stop the service

Check logs when things go wrong:

grep -i "failed to send\|error" ~/.hermes/logs/gateway.log | tail -20

Troubleshooting Guide

Problem: Gateway dies on SSH logout Fix: sudo loginctl enable-linger $USER — keeps user services alive after disconnect.

Problem: Gateway dies on WSL2 close Fix: WSL2 needs systemd=true in /etc/wsl.conf for systemd. Without it, gateway falls back to nohup (dies when terminal closes).

Problem: Discord bot is silent Fix: Enable Message Content Intent in Discord Developer Portal → Bot → Privileged Gateway Intents.

Problem: Slack bot only works in DMs Fix: Subscribe to message.channels event in Slack App configuration.

Problem: Gateway crash loop Fix: systemctl --user reset-failed hermes-gateway && hermes gateway start

FAQ

Q: Can I run multiple gateway platforms at the same time? Yes — the gateway supports all platforms simultaneously. Just enable each one in hermes gateway setup.

Q: Does the gateway work while I’m not logged in? Yes — the systemd service runs independently of any user session. Use loginctl enable-linger to ensure it survives logout.

Q: Do messages to my Telegram bot reach the same agent instance? The same agent handles messages from all platforms, so context from a Telegram conversation doesn’t carry over to Discord (they’re separate sessions). Use /sethome to set a home channel.

Next Steps