OpenClaw Gateway
BuiltSignature capability
A single TypeScript control plane that unifies 13+ real messaging channels behind one agent, backed by 1,026 test files across a ~494k-LOC monorepo.
What it is
OpenClaw is a personal, single-user AI assistant you run on your own hardware; the Gateway is the control plane that normalises many messaging channels (WhatsApp, Telegram, Slack, Discord, Signal, iMessage, Google Chat, Teams, Matrix, and more) into one agent session with shared memory and skills. Jordan self-hosts it on his server fleet as "Kaleo," wiring it into his own infrastructure: a Pulse LLM router for model failover, a Discord bot fleet with webhooks, cross-machine memory sync, and his quant system's shared state. Channels are pluggable via an extension SDK (35 extensions, 52 skills), and the runtime is a pnpm monorepo with native macOS/iOS/Android apps alongside the Node gateway. Auth supports Anthropic and OpenAI OAuth subscriptions plus API-key rotation with fallbacks. His own engineering contribution sits in the ops and integration layer, including a documented fix for a gateway process whose 15-char-truncated name escaped its cgroup and blocked the daemon port.
Highlights
- Unifies 13+ messaging channels behind one agent: Telegram (90 source files), Discord (69), Slack (65), Line (34), Signal (27), iMessage (17), plus WhatsApp and WebChat
- Large, genuinely-tested TypeScript monorepo: ~494k LOC across 2,718 source files with 1,026 test files, run under Vitest with CI quality gates
- Pluggable architecture: a plugin/extension SDK with 35 shipped extensions and 52 skills, so new channels drop in without touching core routing
- Node >=22, pnpm 10.23 workspace, TypeScript 5.9; ships native macOS/iOS/Android apps plus Docker/Fly/Render deploy targets
- Runs live as 'Kaleo' on Jordan's Hostinger hub, integrated with a Pulse LLM router (model failover), Discord webhook fleet, and 15-minute cross-machine memory sync
- Real ops hardening: diagnosed and fixed a cgroup-escape bug where the truncated 'openclaw-gatewa' process name freed it from control-group kill, blocking port 18789
Tech · TypeScript 5.9, Node 22, pnpm monorepo, Vitest, Docker/Fly/Render, Swift (macOS/iOS), Kotlin (Android), MCP, Anthropic + OpenAI OAuth