-
Notifications
You must be signed in to change notification settings - Fork 0
Providers
src/providers/ contains portable provider modules. The public exports are
centralized from src/lib.rs and src/providers/mod.rs.
| Provider | Export |
|---|---|
| DingTalk | DingTalkChannel |
| Discord | DiscordChannel |
EmailChannel |
|
| iMessage | IMessageChannel |
| IRC |
IrcChannel, IrcChannelConfig
|
| Lark | LarkChannel |
| Linq |
LinqChannel, verify_linq_signature
|
| Mattermost | MattermostChannel |
QQChannel |
|
| Signal | SignalChannel |
| Slack | SlackChannel |
WhatsAppChannel |
|
| Yuanbao | YuanbaoChannel |
TinyChannels supports several provider shapes:
- lean direct providers that implement
Channel - richer providers that consume
ProviderContextand host capabilities - providers with optional adapter traits for setup, directory, typing, reaction, edit, delete, or draft streaming support
- relay-backed connectors that project normalized intents into relay actions
Provider work should normalize platform-specific events into
ChannelInboundEnvelope as early as possible and convert outbound work into
ChannelOutboundIntent before delivery or relay projection.
The setup UI registry currently exposes definitions for:
- Telegram
- Discord
- Web
- iMessage
- Lark
- DingTalk
- Yuanbao
That registry is intentionally smaller than the config/provider set. Some
config-backed providers remain hidden until their setup flows are promoted into
ChannelDefinition metadata.
When adding or porting a provider:
- Add provider configuration to
src/config.rsif needed. - Add or update a provider module under
src/providers/. - Export the provider from
src/providers/mod.rsandsrc/lib.rsonly if it is part of the public API. - Normalize inbound platform events into
ChannelInboundEnvelope. - Build outbound sends as
ChannelOutboundIntentor preserve legacySendMessageidempotency throughChannelSendExt. - Return
MessageReceiptwhere the provider can identify platform message ids. - Advertise honest capabilities.
- Add setup metadata to
src/controllers/definitions.rsonly when the UI flow is ready. - Add focused tests for serialization, routing, delivery, and provider edge cases.
If a provider needs harness turns, speech, approvals, history, events, shutdown,
or telemetry, use ProviderContext::host. Do not import OpenHuman application
modules into TinyChannels provider code.
Channel and messaging contracts for OpenHuman.
Getting started
Concepts
Modules
Contributing