* fix(channels): single-source bundled channel schemas from generated metadata Hand-maintained channelConfigs schema copies in a2a, buzz, clickclack, raft, and slack silently overrode the zod-derived generated bundled channel metadata in config validation: stale buzz/raft copies rejected the valid configWrites key, and the slack/clickclack additionalProperties stubs disabled validation for those channels entirely. Delete the copies so the CI-checked generated metadata is the single channel-schema source, stub feishu's retired rich plugin-entry schema like every sibling, and guard the pattern with a contract test. The retired rich plugin-entry schemas let config UIs park channel settings under plugins.entries.<id>.config unread; the reef doctor migration from #131292 generalizes into the plugin SDK (defineStrayPluginEntryConfigMigration) and feishu adopts it alongside reef. * fix(tests): fold channel schema-source guard into existing shard root A new test root pushed the plugins-platform tsgo shard past its 720-root cap; the guard lives in bundled-package-channel-metadata.test.ts instead. * test(channels): update catalog and parity tests to single-source schemas The official catalog regenerates without the deleted manifest schema copies; the a2a and buzz parity tests drop their cold-manifest/catalog surfaces (the runtime zod projection is what the generator publishes). * test(plugins): lagging slack hydration carries no catalog schema copy The full-suite manifest-registry test still pinned the catalog's retired slack schema fallback; hydration now yields label/description and channel validation falls back to the generated bundled metadata. |
||
|---|---|---|
| .. | ||
| src | ||
| api.ts | ||
| channel-plugin-api.ts | ||
| directory-contract-api.ts | ||
| index.ts | ||
| openclaw.plugin.json | ||
| package.json | ||
| qa-runner-api.ts | ||
| README.md | ||
| runtime-api.ts | ||
| secret-contract-api.ts | ||
| setup-entry.ts | ||
| setup-plugin-api.ts | ||
| tsconfig.json | ||
@openclaw/buzz
Official Buzz channel plugin for OpenClaw. It connects an OpenClaw agent to approved Buzz rooms for text conversations and threaded replies.
Requirements
You need:
- A Buzz relay URL
- A Buzz owner or admin
- A room where the bot can receive the Bot role
Use wss:// outside local development.
Set up
openclaw channels add --channel buzz
OpenClaw installs the plugin if needed, asks for the relay URL, and generates a dedicated bot identity.
Give the displayed public key only to a Buzz owner or admin:
buzz channels add-member \
--channel <ROOM_UUID> \
--pubkey <BOT_PUBLIC_KEY> \
--role bot
Closed relays may also require the bot to be added as a relay member. Setup waits for approval, discovers accessible rooms, and saves the selected rooms and default target.
Restart the Gateway if it was already running.
Verify
openclaw channels status --probe
Inspect the current bot, approved rooms, and room members:
openclaw directory self --channel buzz
openclaw directory peers list --channel buzz
openclaw directory groups list --channel buzz
openclaw directory groups members --channel buzz --group-id buzz:<ROOM_UUID>
Buzz profile and room names are used as display labels, while public keys and room UUIDs remain the stable identities. Archived rooms are omitted; an archive or restore event rebuilds only the Buzz connection's room subscriptions and does not stop the Gateway.
Send a test message:
openclaw message send \
--channel buzz \
--target <ROOM_UUID> \
--message "Hello from OpenClaw"
Security and scope
- Never give OpenClaw a human owner's private key.
- The generated bot private key is stored in OpenClaw configuration; only its public key is displayed.
- Treat Buzz messages as untrusted agent input.
- Currently supported: text conversations, threads, typing, and directory lookup in group rooms.
- Not yet supported: DMs, media, reactions, or creating rooms from OpenClaw.
Full documentation: https://docs.openclaw.ai/channels/buzz
Package: @openclaw/buzz · Plugin ID: buzz