When I realized that out of 8 AI agents, only 3 were responding to Slack DMs, I knew something was wrong.
The Setup
My home cluster runs 9 GMK mini PCs with 20+ AI agents orchestrated by OpenClaw. Each agent has its own heartbeat polling, cron jobs, and communicates through a self-hosted message bus. Until recently, the human-facing channel was Slack.
The Problem: Slack WebSocket Drops Every 35 Minutes
OpenClaw's Slack integration uses WebSocket (Socket Mode). The connection goes stale every ~35 minutes. The health monitor auto-restarts it — but messages arriving during that window are silently dropped.
[health-monitor] WebSocket stale detected → restarting connection
# Messages arriving here are lost
That explained why only 3 of 8 agents responded.
The Fix: Full Migration to Self-Hosted Mattermost
The migration took under 30 minutes — just update channel config from slack to mattermost for each agent.
Why Mattermost works better:
- WebSocket stays on our own server — no external dependency
- OpenClaw has native Mattermost support
- Messages stored in our own DB indefinitely
- Bot auth is simple (one API token)
What I Learned
Self-hosting isn't just "more work." When you have 20 agents firing messages independently, channel reliability is critical. One dropped message creates false "agent not responding" signals.
Since switching to Mattermost: zero message loss events.
| Aspect | Slack | Mattermost |
|---|---|---|
| WebSocket stability | Stale every 35 min | Self-hosted, stable |
| Message persistence | Free tier: 90 days | Own DB, unlimited |
| Bot auth | Complex scope management | Single API token |
| OpenClaw integration | Unreliable | Native support |
Top comments (0)