Documentation Index
Fetch the complete documentation index at: https://docs.wednesdayai.dev/llms.txt
Use this file to discover all available pages before exploring further.
Channel adapters
A channel adapter connects WednesdayAI to a messaging platform. Each channel is a plugin that implements theChannelPlugin<TAccount> contract from the plugin SDK.
Overview
Channel plugins live underextensions/ in the repo. Each is a pnpm workspace package:
Plugin contract
A channel plugin is a plain object implementingChannelPlugin<TAccount>:
package.json requirements
- Plugin id, directory name, and npm package name must match exactly
openclawgoes indevDependenciesorpeerDependencies, neverdependencies- No
workspace:*independencies
Account model
TheTAccount type parameter represents a linked account for the channel. It is stored per-account in the gateway state.
For channels with credential storage:
- Credentials go in
~/.openclaw/credentials/<channel>/<accountId>/ - Use the credential store helpers from the plugin SDK rather than writing files directly
Incoming messages
Incoming events (webhooks, polling) are handled byhandleEvent. Parse the raw event into a ChannelMessage and return it:
Outgoing messages
Thesend method receives a structured OutgoingMessage and delivers it to the platform:
Testing a channel adapter
Write integration tests inextensions/my-channel/src/*.test.ts. Mock the platform client; do not make live API calls in unit tests.
Adding docs
Createdocs/channels/my-channel.md in the main repo with setup instructions for the new channel. Update docs/channels/ index to include the new channel.
PR checklist for new channels
- Adapter implements the full
ChannelPlugin<TAccount>contract - Package name is
@wednesdayai/<channel>, id matches directory name - No
workspace:*independencies - Unit tests pass:
pnpm test:fast - Docs:
docs/channels/<name>.mdcreated -
CHANGELOG.mdupdated - Dev log at
docs/logs/YYYY-MM-DD-<name>-channel.md