packages/docs/plugin-registry/platform/wechat.md
The WeChat plugin connects Eliza agents to WeChat via a user-supplied proxy service, enabling text messaging and optional image and group chat support from personal WeChat accounts.
Availability:
@elizaos/plugin-wechatis a Eliza-local plugin that is not included in the bundledplugins.jsonregistry. It ships as a CI stub and requires the full plugin package to be available locally or via npm.
Package: @elizaos/plugin-wechat
Availability: This plugin is not in the bundled registry (
plugins.json). It is available as an upstream elizaOS plugin and auto-enables when its connector config is present.
Unlike most connectors which use official platform APIs, the WeChat connector relied on a third-party proxy service that bridges WeChat's protocol.
Privacy Notice: The WeChat connector sends your API key and message payloads through the configured proxy service. Only point proxyUrl at infrastructure you operate yourself or explicitly trust.
The WeChat plugin (@elizaos/plugin-wechat) is not yet available in the bundled registry. Check the changelog for availability updates.
Get an API key from your WeChat proxy service provider.
{
"connectors": {
"wechat": {
"apiKey": "YOUR_API_KEY",
"proxyUrl": "https://your-proxy-service.example.com"
}
}
}
Or set the environment variable:
export WECHAT_API_KEY=YOUR_API_KEY
On first start, the plugin displays a QR code in the terminal. Scan it with WeChat on your phone to link the session.
| Field | Required | Default | Description |
|---|---|---|---|
apiKey | Yes | — | Proxy service API key |
proxyUrl | Yes | — | Proxy service URL |
webhookPort | No | 18790 | Webhook listener port for incoming messages |
deviceType | No | "ipad" | Device emulation type: "ipad" or "mac" |
enabled | No | true | Enable or disable the connector |
features.images | No | false | Enable image send/receive |
features.groups | No | false | Enable group chat support |
{
"connectors": {
"wechat": {
"apiKey": "YOUR_API_KEY",
"proxyUrl": "https://your-proxy.example.com",
"webhookPort": 18790,
"deviceType": "ipad",
"features": {
"images": true,
"groups": true
}
}
}
}
Run multiple WeChat accounts using the accounts map:
{
"connectors": {
"wechat": {
"accounts": {
"personal": {
"apiKey": "KEY_1",
"proxyUrl": "https://proxy.example.com",
"deviceType": "ipad"
},
"work": {
"apiKey": "KEY_2",
"proxyUrl": "https://proxy.example.com",
"deviceType": "mac",
"enabled": false
}
},
"features": {
"groups": true
}
}
}
}
Each account has its own API key, proxy URL, and session. Per-account fields override top-level settings.
features.groups: true)features.images: true)Proxy webhook delivers incoming message
↓
Plugin filters by message type and features config
↓
AgentRuntime processes the message
↓
Response sent via proxy API
The plugin auto-enables when connectors.wechat contains:
apiKey, ORaccounts map with at least one enabled account that has an apiKeySetting enabled: false at the connector or account level disables auto-enable.
The plugin handles these incoming message types:
| Type | Description |
|---|---|
text | Plain text messages |
image | Image attachments (requires features.images) |
video | Video messages |
file | File attachments |
voice | Voice messages |
Ensure the proxy service URL is reachable and the API key is valid. The plugin logs errors to the console if the proxy returns an error during login.
WeChat sessions can expire after extended inactivity. The plugin automatically attempts to re-login. If re-login fails, a new QR code is displayed for scanning.
webhookPort (default: 18790) is not blocked by a firewallfeatures.groups is enabled if you expect group messages