Channels and Plugins
Install, connect, and manage channel plugins in Cola — how WeChat, Feishu, and Telegram each connect, plus installing local plugins.
This page is for people using channel plugins in Cola. If you want to build your own plugin, see Plugin SDK.
Channels vs. Plugins
A channel is the connection you see in Cola, such as WeChat, Feishu, a device, or a bot account. A plugin is the local code package that backs it. A single plugin can implement a channel, register LLM-callable tools that work in every session (no channel required), or quietly observe activity across all your sessions — or any combination of the three. This page focuses on installing and managing them; for what a plugin can actually do, see Plugin SDK.
Cola discovers installed plugins from ~/.cola/plugins/<id>/package.json. A plugin directory can come from any repository; it does not need to live in the official Cola plugins repository. The directory root only needs a valid package.json, and cola.plugin.entry must point to a built JavaScript file.
Install only plugins you trust. Plugins run locally inside the Cola server process and may connect to external messaging platforms or expose tools to every session.
Which Channels You Can Connect
Channels live under Skills in the sidebar: open the skill center and switch to the Connections tab. Each card spells out what that channel lets you do once it is connected.
| Channel | How to install |
|---|---|
| Built in; nothing to install. Connect it under Skills > Connections | |
| Feishu / Lark | Install it from the plugin list under Skills > Connections |
| Telegram | Same as above |
The same tab carries a Cola Mobile card: iOS and Android each open a download QR code to scan with your phone. It is not a channel plugin — there is nothing to install or connect here.
The plugin list comes from the official plugin source and loads automatically when you are online. Offline, or when loading fails, Cola shows the last cached list and marks it as possibly out of date. Installed plugins show a New version badge with an Update button when a newer version exists. An entry marked App update required needs a newer Cola — update the app first, then install.
After installing, follow the plugin's own sign-in flow; these differ a lot by platform. WeChat uses a QR code, while Feishu and Telegram require you to create a bot on that platform first and paste the credentials into the plugin's settings form.
The status light on the WeChat card doesn't just reflect a successful scan — it follows what actually happens when messages are sent, and the line on the card tells you which step you are stuck on:
| Status | What it means |
|---|---|
| Checking | The WeChat sign-in is being checked |
| Sign-in expired | Scan the QR code again; the connect action reappears on the card |
| Not confirmed | Signed in, but you have to send Cola a message in WeChat first to activate the connection |
| Not accepted | WeChat did not accept the last send |
| Accepted | WeChat accepted the last send |
To connect a platform that is not listed, see "Install a Local Plugin" below, or write your own with the Plugin SDK.
Install a Local Plugin
Local plugin install expects the plugin directory root, not the dist/ directory.
A valid directory usually looks like this:
stackchan/
package.json
dist/
index.js
node_modules/The package.json declares the plugin identity and entry point:
{
"cola": {
"plugin": {
"id": "stackchan",
"entry": "./dist/index.js"
}
}
}dist/ is only the build output directory. It is not enough by itself. If you select stackchan/dist/, Cola cannot read the root package.json or cola.plugin metadata, so it cannot install the plugin.
If the plugin does not bundle its dependencies into dist/, the plugin directory also needs runtime dependencies such as node_modules/. Cola does not run npm install when installing a local directory. A local install symlinks ~/.cola/plugins/<id> to the directory you picked, so rebuilding the source needs no reinstall; installing a plugin id that already exists fails until you uninstall it.
Manage from the UI
- Open Cola.
- Click Skills in the sidebar and switch to the Connections tab.
- Click Install Local Plugin. The first time, Cola shows a short guide pointing at the Plugin SDK docs so the plugin's manifest and entry file are ready before you pick the folder. You can dismiss the guide and continue, or open the docs and come back.
- Select the plugin directory root, such as
stackchan/. - After installation, the plugin appears in the channel list.
Each row in the list is a card. For plugins from the official source, the row's More menu opens its online documentation; locally installed plugins have no such entry. Available row actions depend on the channel:
- Configure: enter tokens, server addresses, or other channel settings.
- Connect: start QR-code login, OAuth, or another login flow.
- Disconnect: sign out of the current channel account.
- More: behind the overflow menu — open the plugin docs, start or stop the plugin, or uninstall the plugin.
- Start and Stop: shown only for user-installed plugins. Stopping a plugin prevents it from starting automatically the next time Cola opens.
- Uninstall: remove a locally installed plugin.
Built-in channels do not show the uninstall action. WeChat is built into Cola and cannot be removed or overwritten through local plugin install.
The list refreshes its cloud catalogue automatically each time you open the tab. If the catalogue cannot be loaded, the list falls back to showing only the channels you already have installed.
Installing, uninstalling, starting, and stopping all happen on this tab, and Cola refreshes the active plugin list right away where it can. A plugin installed or updated from the plugin source loads its new version on the spot, with no restart; if the new version installs but fails to load, the list says so outright instead of reporting success.
A locally installed plugin points at your own source directory: you don't have to reinstall after a rebuild, but you do have to quit and reopen the Cola desktop app to load the new code.