Run a multi-channel gateway
Run a multi-channel gateway
Section titled “Run a multi-channel gateway”Outcome: One
gormes gatewayprocess drives Telegram, Discord, Slack, and any other configured channel through the same kernel + tool loop, with persistent runtime state visible viagateway status.Prerequisites: Working
gormes chat -q(see first turn). At least one channel adapter configured with secrets and an allowlist. Runtime-ready channels today are Telegram, Discord, and Slack; WhatsApp/Teams/Yuanbao are row-backed or fixture-backed until promoted.
-
Configure each channel locally
- Telegram: see Run a Telegram bot.
- Discord: set the bot token (
GORMES_DISCORD_TOKENin.env) and allowlisted guild/channel ids inconfig.toml. - Slack: set the app/bot tokens in
.envand the configured channels inconfig.toml.
-
Verify the config compiles
Terminal window gormes config checkgormes config showconfig checkreports_config_version, missing/empty fields, and dotenv presence without writing. -
Start the gateway
Terminal window gormes gatewayThe Gateway Manager binds every configured channel adapter; per-channel lifecycle errors are reported on startup.
-
Inspect runtime state
Terminal window gormes gateway statusgormes gateway status --jsonFor each channel, the status block lists
lifecycle,pairing, andtargetallowlists. Runtime-ready channel readiness comes from this output — not from roadmap rows. -
Reload config without restarting
Terminal window gormes gateway reloadReload covers swappable runtime settings: allowlists, first-run discovery flags, display/tool-progress modes, provider/model routing, skills root, and agent bindings. Use a full restart only for binary updates, database path changes, or channel transport changes that require reconnecting clients.
-
Stop the gateway
Terminal window gormes gateway stop
Verify
Section titled “Verify”gormes gateway statusExpected: each configured channel reports lifecycle=running and any allowlist or pairing state. Send a message through one channel; gormes session list shows a new session row.
Troubleshooting
Section titled “Troubleshooting”runtime: stopped→ No gateway is live. Start it withgormes gateway.stale_pid live=false→ A previous gateway crashed; the persisted pid is dead. Rungormes gateway stopto clear runtime state.lifecycle=failed→ The channel adapter failed to start. Theerrorfield names the cause (token conflict, missing allowlist, etc.).- Probing reachability from another host →
gormes gateway probe --url host:port --json.