Channels
Channels connect Digitorn apps to inbound / outbound I/O via
digitorn-background. In app YAML they are declared under
tools.channels. The Go package internal/modules/channels is a
stub; adapters live under internal/background/adapter/.
There are no agent catalog tools named
channels.send_message, channels.reply, or channels.broadcast.
Delivery is adapter / activation pipeline behavior, not a fixed
tool module surface.
Built-in Go adapters
| Adapter | Package | Typical use |
|---|---|---|
webhook | adapter/webhook | HTTP POST in / out |
cron | adapter/cron | 5-field cron activations |
rss | adapter/rss | Poll feeds |
telegram | adapter/telegram | Telegram bot |
discord | adapter/discord | Discord bot |
whatsapp | adapter/whatsapp | |
pieces | adapter/pieces | Activepieces events |
primitives | adapter/primitives | Internal polling helper |
Older docs mentioning email, sms, voice, slack, log,
file_watcher, or queue as first-class Go adapters are not
authoritative for this build.
YAML shape
tools:
channels:
alerts:
type: webhook
config:
url: "{{secret.WEBHOOK_URL}}"
user_resolver: # optional
module: database
action: query
params:
query: "SELECT phone FROM users WHERE session_id = :session_id"
mapping:
to_number: phone
cache_ttl: 300
Schema type: ChannelInstanceConfig (type, config,
user_resolver).
App-level cron vs session scheduler
| Need | Mechanism |
|---|---|
| Activate the app on a cron | Channel / trigger cron + background |
| Wake this session with a message | scheduler.schedule |
runtime.watchers / runtime.scheduler booleans do not register
watch_* or cron_native tools. Periodic shell checks use
background_run with watch: true (see
Primitives).