Open Agent Broker — a lightweight Rust harness that bridges Discord and Slack to any ACP-compatible coding CLI over stdio JSON-RPC. This template uses Hermes Agent (by Nous Research) as the backend — a multi-provider inference gateway with OAuth support for 30+ LLM providers (xAI Grok, Anthropic, OpenAI, Nous Portal, and more). Source: https://github.com/openabdev/openab

OpenAB is a lightweight, open-source Rust harness that bridges Discord and Slack to any Agent Client Protocol-compatible coding CLI over stdio JSON-RPC.
This template runs the Hermes variant: it uses Hermes Agent by Nous Research as the backend. Hermes is a multi-provider inference gateway — it handles OAuth token lifecycle, credential storage, and routing for 30+ LLM providers (xAI Grok, Anthropic, OpenAI, Nous Portal, and more), so OAB doesn't need to manage provider auth directly.
0.8.3-beta.10). To upgrade, change the image tag in Zeabur Dashboard → Service → Settings. Available tags: GitHub Packages./home/agent is mounted as a persistent volume. Hermes credentials, plugins, settings, and config survive restarts.hermes auth add <provider> inside the service to pair with each LLM provider you want.bot → check permissions: Send Messages, Send Messages in Threads, Create Public Threads, Read Message History, Add Reactions, Manage Messages123456789012345678,234567890123456789Fill in the variables and click deploy. The service connects to Discord but will not produce LLM responses until you authenticate at least one provider (step 4).
After the service is running, open the Zeabur Dashboard → Service → Exec terminal. Hermes supports many providers — pick one to start. Two of the most common paths are below.
runuser -u agent -- hermes auth add nous
Follow the prompts to complete OAuth via the displayed URL.
⚠️ Requires an active SuperGrok paid subscription ($30/mo). Auth will succeed without one, but the API silently returns empty responses — the bot appears to work but never replies.
xAI's OAuth uses a loopback redirect to 127.0.0.1:56121 inside the container. Zeabur doesn't expose that port, so use the two-terminal trick:
Terminal 1 — start the auth listener:
runuser -u agent -- hermes auth add xai-oauth --no-browser
It prints an authorize URL containing &state=XXXXX and waits on http://127.0.0.1:56121/callback.
In your browser — open that authorize URL → approve. The browser redirects to http://127.0.0.1:56121/callback?code=... and fails ("Could not establish connection"). Copy the code value from the URL bar.
Terminal 2 — open another Exec session and deliver the callback locally:
runuser -u agent -- curl "http://127.0.0.1:56121/callback?code=<CODE>&state=<STATE>"
Terminal 1 should print Added xai-oauth OAuth credential #1. The code expires in seconds — if you see invalid_grant, re-run hermes auth add xai-oauth and try again.
Either run the interactive picker:
runuser -u agent -- hermes model
…or set provider and model as two separate keys (this is what hermes-acp needs — the combined provider/model shortcut shown in hermes config set examples is for the standalone CLI and is not picked up by openab):
runuser -u agent -- hermes config set provider xai-oauth
runuser -u agent -- hermes config set model grok-4-latest
Your choice is persisted under /home/agent and survives restarts. New Discord sessions pick up the new model automatically — no restart needed.
For other providers (Anthropic, OpenAI, etc.) see the Hermes Agent docs.
OpenAB supports Slack via Socket Mode — no public URL needed.
connections:write → copy the xapp-... token (SLACK_APP_TOKEN)app_mention, message.channels, message.groupsapp_mentions:read, chat:write, channels:history, groups:history, channels:read, groups:read, reactions:write, files:read, users:readxoxb-... token (SLACK_BOT_TOKEN)/invite @YourAppNameSet SLACK_BOT_TOKEN and SLACK_APP_TOKEN in the template variables before deploying. Both Discord and Slack can run simultaneously.
To bridge Telegram, LINE, Feishu/Lark, Google Chat, MS Teams, or WeCom, deploy the OpenAB Gateway template into the same Zeabur project. Then add these environment variables to this service:
GATEWAY_URL = ws://openab-gateway:8080/wsGATEWAY_PLATFORM = one of telegram, line, feishu, googlechat, teams, wecomRestart the service. The startup script auto-injects the [gateway] block into config.toml.
| File | Description |
|---|---|
/home/agent/.config/openab/config.toml | OpenAB config (sessions, reactions, STT, etc.) |
/home/agent/.config/hermes/ | Hermes credentials and provider config (managed by hermes auth / hermes model) |
config.toml is created from a built-in template on first boot. After that, edit the file directly — environment variables are only used for initial setup. To reset to defaults, delete the file and restart: rm /home/agent/.config/openab/config.toml
For OpenAB config options, see the OpenAB documentation. For Hermes provider options, see the Hermes docs.
Leave Discord Bot Token empty (and SLACK_BOT_TOKEN empty). The service sleeps instead of crashing.