openclaw-zulip
v0.2.6
Published
OpenClaw channel plugin for Zulip — clean-room implementation with ACP topic bindings
Maintainers
Readme
openclaw-zulip
A clean-room OpenClaw channel plugin for Zulip, built from scratch with the OpenClaw Plugin SDK.
Features
- Full Zulip messaging — Streams, topics, DMs, reactions, media, edits, unsend
- ACP topic bindings — Bind ACP agent sessions to specific Zulip topics
- Dual account modes — Run as a bot or impersonate a user account
- Stream-level controls — Per-stream config (require mention, enable/disable)
- Security — DM policy enforcement, allow-from lists
- Actions — Channel list, channel info, member info queries
Installation
openclaw plugins install openclaw-zulipConfiguration
Add a channels.zulip section to your OpenClaw config:
channels:
zulip:
serverUrl: https://your-org.zulipchat.com
email: [email protected]
apiKey: your-bot-api-key
mode: bot # or "user"
# Optional: per-stream overrides
streams:
general:
requireMention: true
private-ops:
enabled: false
# Optional: multi-account setup
accounts:
work-bot:
serverUrl: https://work.zulipchat.com
email: [email protected]
apiKey: ...Account modes
| Mode | Description |
|------|-------------|
| bot | Connects as a Zulip bot (default). Messages appear from the bot identity. |
| user | Connects as a regular Zulip user. Messages appear from that user's identity. |
Configuration fields
| Field | Required | Description |
|-------|----------|-------------|
| serverUrl | Yes | Zulip server URL |
| email | Yes | Bot or user email address |
| apiKey | Yes | Zulip API key |
| mode | No | bot (default) or user |
| streams | No | Per-stream config overrides |
| dmPolicy | No | DM handling policy |
| allowFrom | No | Allowed user IDs or emails |
| replyToMode | No | Reply targeting behavior |
Capabilities
| Feature | Supported | |---------|-----------| | Direct messages | Yes | | Group conversations (streams) | Yes | | Threads (topics) | Yes | | Reactions | Yes | | Message editing | Yes | | Unsend | Yes | | Reply | Yes | | Media | Yes | | ACP topic bindings | Yes | | Native commands | No | | Polls | No |
Migrating from openclaw-channel-zulip
If you're replacing the old openclaw-channel-zulip plugin, note these config changes:
Config field renames
| Old field | New field |
|-----------|-----------|
| url | serverUrl |
Streams format change
The old plugin used an array of stream names:
streams:
- "AI System"
- "Homelab"The new plugin uses an object with per-stream config:
streams:
AI System:
requireMention: true
Homelab:
enabled: trueTo migrate, convert each stream name to a key with {} (empty config) or add per-stream settings as needed.
Development
git clone https://github.com/whizzlelabs/openclaw-zulip.git
cd openclaw-zulip
npm install
npm run build
npm testSee CONTRIBUTING.md for the full development workflow.
