Every chat platform reinvents the wheel. WeChat has its own API, Lark has another, Telegram another still — and if you're building a bot, an agent, or any service that needs to talk to people across IM channels, you end up writing and maintaining a separate integration for each one. The plumbing differs, the auth flows differ, the message formats differ, and every new channel means another chunk of bespoke code in your app.
I got tired of that, so I built OpenClaw Bridge — a universal WebSocket bridge server that sits between your client and any number of IM backends. The idea is simple: your app speaks one protocol over a single WebSocket, and the bridge translates that into whatever each backend channel expects. Here's the shape of it:
Client ──[WebSocket]──▶ Bridge Server ──[ChannelPlugin API]──▶ Backend Channels
The key design decision is that the bridge contains zero plugin-specific code. It doesn't know how WeChat logs in, how Lark formats media, or how Telegram handles reply threading. Instead, it works with any channel that implements a standard ChannelPlugin interface. Install a plugin, drop its credentials into config.json, and it just works — WeChat, Lark, Telegram, Mattermost, IRC, QQ, WhatsApp, and whatever comes next.
In this post I'll walk through why a bridge like this is worth building, how the envelope protocol keeps clients channel-agnostic, and how a subscription model lets multiple clients share one set of connected accounts without tripping over each other. If you've ever copy-pasted your fifth nearly-identical IM integration, this one's for you.
For more information, visit https://github.com/sloth-os/openclaw-bridge
Top comments (0)