OpeniLink Hub: a self-hosted control plane for WeChat ClawBot
开源微信 Bot 管理平台 + App 应用市场 | Self-hosted WeChat Bot Platform with App Marketplace | Lark · Slack · Discord · DingTalk · GitHub · Notion · 20+ Apps | AI Tools | 7 Language SDKs
At a glance
- What is it?
- OpeniLink Hub wraps the iLink protocol in a web console, an app marketplace and four delivery channels. It is the management layer that raw SDKs leave out, and it expects you to accept a reverse-engineered protocol and a 24-hour session window you cannot renew silently.
- Who is it for?
- Adopt OpeniLink Hub if you are running more than one WeChat bot and want a console, an app marketplace and parallel delivery channels instead of gluing SDK calls together yourself. Skip it if you need guaranteed message delivery, native Windows, or a protocol with vendor documentation behind it.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 105 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What OpeniLink Hub adds on top of the iLink protocol
The README frames the problem precisely: WeChat's ClawBot plugin, built on the iLink protocol, allows programmatic message send and receive, but nothing else. Handling context_token, CDN encryption, the 24-hour expiry and multiple bot accounts is left to you. OpeniLink Hub is the layer that absorbs those chores and puts a web console in front of them.
The target user is someone operating WeChat bots as infrastructure rather than as a weekend experiment. If you have one bot and one webhook, the SDK alone is simpler. The moment you have several bound accounts, several downstream services and an operator who is not the person who wrote the code, the console and the marketplace start earning their place. The project describes itself as the only complete platform in this space with an admin backend, an app marketplace and multi-channel dispatch, which is a claim about the alternatives rather than a measurable property; treat it as positioning.
One thing worth reading before anything else is the disclaimer at the top of the README. The project states it is independently developed against a publicly available iLink protocol, is not affiliated with or endorsed by the official iLink team, and will take the project down on request from a rights holder. That is an honest statement of legal exposure, and it should shape how much of your production traffic you route through it.
Message dispatch: one inbound stream, four outbound paths
The architecture diagram in the README shows a single flow. The WeChat ClawBot plugin speaks iLink to the OpeniLink SDK, the SDK feeds a message dispatcher inside the Hub, and the dispatcher fans out to installed apps, a WebSocket push, an HTTP webhook and an AI auto-reply path. Those four are parallel, not alternatives you pick between at deploy time, which is the main structural difference from a plain SDK wrapper.
Apps are the interesting branch. Each app is described as an independent service that talks to the Hub over a standard protocol, and apps are installed through PKCE OAuth. The marketplace listing covers platform bridges (Lark, Slack, Discord, DingTalk, WeCom), productivity tools (GitHub, Google Workspace, Notion, Linear), small utilities (weather, currency, expense tracking, reminders, cron, RSS, QR codes) and a command service. The AI Tools counts in the README, such as 34 for Lark and 36 for GitHub, describe how many operations each app exposes to a language model, so the practical ceiling on what you can do by natural language is set by which apps you install.
Delivery is tracked. The README describes per-message tracing from receipt to delivery with timing at each step. That is the feature that matters when a message silently fails, because it tells you whether the problem is upstream at the protocol layer or downstream in your webhook.
Installing OpeniLink Hub and binding a first bot
The README gives a one-line installer for Linux and macOS that pipes a script from the repository into a shell. It then starts the binary as `oih`.
curl -fsSL https://raw.githubusercontent.com/openilink/openilink-hub/main/install.sh | sh
oihThe Docker path is an alternative, not an addition. The published image listens on 9800, and the README shows both Docker Hub and GHCR as sources.
docker run -d -p 9800:9800 openilink/openilink-hub:latest
docker run -d -p 9800:9800 ghcr.io/openilink/openilink-hub:latestAfter that you open http://localhost:9800 and register. The README states that the first account registered automatically becomes the administrator, so do this before exposing the port to anyone else. From the console you scan a QR code to bind a WeChat account.
Storage defaults to SQLite with no database to install and no configuration required. To move to PostgreSQL you set `DATABASE_URL`. The repository's docker-compose.yml shows the shape of that value, along with the MinIO object storage variables used for the compose stack.
environment:
DATABASE_URL: postgres://openilink:${PASSWORD:-openilink}@postgres:5432/openilink?sslmode=disable
STORAGE_ENDPOINT: minio:9000
STORAGE_BUCKET: openilinkWindows is not supported natively. The README directs Windows users to Docker or to WSL2 running the Linux install. That is a real constraint if your operations desk is Windows-only.
The 24-hour window is a reminder, not an automatic renewal
This is the limitation most likely to bite, and the project is unusually direct about it. The README states that the WeChat 24-hour window cannot currently be renewed silently in the background by the Hub. What the Hub does is warn you before the window expires so you can send a message back; once a reply arrives, the window restarts.
That means OpeniLink Hub is not a fire-and-forget notification system. If you plan to push alerts into WeChat and never look at them, the window will close and messages will not go out. Someone has to respond periodically. For a personal assistant bot that you chat with daily this is invisible. For a monitoring bot that only speaks when something breaks, it is a design problem, and no amount of app installation fixes it.
The README's comparison table lists message persistence as a mitigation, and the console shows expiry warnings per bot. Persistence keeps messages from being lost while the window is closed, but it does not deliver them. Read those two features as separate.
A second constraint is protocol provenance. The project is built on a reverse-engineered protocol with no official documentation, as the README itself notes. Anything upstream can change without notice, and the disclaimer makes clear the maintainers consider takedown a possible outcome. If your use case cannot tolerate the bot going dark for an unknown period, this is the wrong foundation.
How OpeniLink Hub differs from OpenClaw and from raw SDKs
The README spends a paragraph separating itself from OpenClaw, and the distinction is worth repeating because the names get confused. OpenClaw is an AI agent framework; OpeniLink Hub is a message management platform. In the Hub, OpenClaw is one installable app among many. You can run the Hub with no OpenClaw at all and route messages to your own WebSocket client or webhook instead.
Against a plain iLink SDK, the difference is breadth of responsibility. An SDK gives you send and receive primitives and leaves token management, media upload and multi-account handling to your code. The Hub takes those over and adds the console, the marketplace and the tracing. The trade is that you now run a service, a database and a web UI, and you inherit the Hub's release cadence.
Against the other iLink projects the README mentions, which it characterizes as SDKs or agent bridges, the practical difference is where configuration lives. With a bridge you configure in files and code. Here you configure in a browser, and non-developers can install an app without touching the repository. Whether that is better depends entirely on who operates the bot after you build it.
Licence, maintenance and upgrade cost
The repository is MIT licensed, which permits commercial use, modification and redistribution provided the copyright notice and permission notice are retained. That covers the Hub itself. It does not cover the WeChat side, the iLink protocol, or the third-party services the marketplace apps connect to; each of those carries its own terms, and the disclaimer at the top of the README is the project's own statement that the protocol relationship is unresolved. This is a description of the licence text, not legal advice.
The last push to the default branch was on 2026-06-18, which is also the date of the v0.1.36 release. The two prior releases were v0.1.35 on 2026-04-24 and v0.1.34 on 2026-04-14. The version numbers are still in the 0.1.x range, so expect interface changes between releases rather than a stabilized API. The repository is not archived.
Upgrade cost is mostly operational. The Dockerfile builds a React frontend with pnpm and a Go backend, then ships a single binary that runs migrations through goose, so schema changes arrive with the binary. If you use the compose stack you are also maintaining PostgreSQL and MinIO. The dependency list in go.mod includes the WebAuthn library, which means passkey credentials are tied to your `RP_ID` and `RP_ORIGIN` settings; the compose file defaults both to localhost, so moving to a real domain means changing those values and re-registering credentials.
Editorial conclusion
Adopt OpeniLink Hub if you are running more than one WeChat bot and want a console, an app marketplace and parallel delivery channels instead of gluing SDK calls together yourself. Skip it if you need guaranteed message delivery, native Windows, or a protocol with vendor documentation behind it. Before committing, verify that your WeChat account can bind through the ClawBot plugin at all, that the 24-hour window reminder fits how you staff replies, and whether you want the default SQLite file or the Postgres and MinIO compose stack.
Frequently asked questions
Does OpeniLink Hub run on Windows?
Not natively. The README directs Windows users to Docker, or to WSL2 running the Linux installation path.
What does OpeniLink Hub use for storage by default?
SQLite, with no database to install and no configuration required. Setting `DATABASE_URL` switches it to PostgreSQL.
Can OpeniLink Hub renew the WeChat 24-hour window automatically?
No. The README states the window cannot currently be renewed silently in the background; the Hub warns you before expiry so you can send a message and restart the timer.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/openilink-openilink-hub)