@@ -65,6 +65,30 @@ Use `channels.modelByChannel` to pin specific channel IDs to a model. Values acc
6565}
6666```
6767
68+ ### Channel defaults and heartbeat
69+
70+ Use ` channels.defaults ` for shared group-policy and heartbeat behavior across providers:
71+
72+ ``` json5
73+ {
74+ channels: {
75+ defaults: {
76+ groupPolicy: " allowlist" , // open | allowlist | disabled
77+ heartbeat: {
78+ showOk: false ,
79+ showAlerts: true ,
80+ useIndicator: true ,
81+ },
82+ },
83+ },
84+ }
85+ ```
86+
87+ - ` channels.defaults.groupPolicy ` : fallback group policy when a provider-level ` groupPolicy ` is unset.
88+ - ` channels.defaults.heartbeat.showOk ` : include healthy channel statuses in heartbeat output.
89+ - ` channels.defaults.heartbeat.showAlerts ` : include degraded/error statuses in heartbeat output.
90+ - ` channels.defaults.heartbeat.useIndicator ` : render compact indicator-style heartbeat output.
91+
6892### WhatsApp
6993
7094WhatsApp runs through the gateway's web channel (Baileys Web). It starts automatically when a linked session exists.
@@ -422,12 +446,20 @@ Mattermost ships as a plugin: `openclaw plugins install @openclaw/mattermost`.
422446
423447Chat modes: ` oncall ` (respond on @-mention, default), ` onmessage ` (every message), ` onchar ` (messages starting with trigger prefix).
424448
449+ - ` channels.mattermost.configWrites ` : allow or deny Mattermost-initiated config writes.
450+ - ` channels.mattermost.requireMention ` : require ` @mention ` before replying in channels.
451+
425452### Signal
426453
427454``` json5
428455{
429456 channels: {
430457 signal: {
458+ enabled: true ,
459+ account: " +15555550123" , // optional account binding
460+ dmPolicy: " pairing" ,
461+ allowFrom: [" +15551234567" , " uuid:123e4567-e89b-12d3-a456-426614174000" ],
462+ configWrites: true ,
431463 reactionNotifications: " own" , // off | own | all | allowlist
432464 reactionAllowlist: [" +15551234567" , " uuid:123e4567-e89b-12d3-a456-426614174000" ],
433465 historyLimit: 50 ,
@@ -438,6 +470,29 @@ Chat modes: `oncall` (respond on @-mention, default), `onmessage` (every message
438470
439471** Reaction notification modes:** ` off ` , ` own ` (default), ` all ` , ` allowlist ` (from ` reactionAllowlist ` ).
440472
473+ - ` channels.signal.account ` : pin channel startup to a specific Signal account identity.
474+ - ` channels.signal.configWrites ` : allow or deny Signal-initiated config writes.
475+
476+ ### BlueBubbles
477+
478+ BlueBubbles is the recommended iMessage path (plugin-backed, configured under ` channels.bluebubbles ` ).
479+
480+ ``` json5
481+ {
482+ channels: {
483+ bluebubbles: {
484+ enabled: true ,
485+ dmPolicy: " pairing" ,
486+ // serverUrl, password, webhookPath, group controls, and advanced actions:
487+ // see /channels/bluebubbles
488+ },
489+ },
490+ }
491+ ```
492+
493+ - Core key paths covered here: ` channels.bluebubbles ` , ` channels.bluebubbles.dmPolicy ` .
494+ - Full BlueBubbles channel configuration is documented in [ BlueBubbles] ( /channels/bluebubbles ) .
495+
441496### iMessage
442497
443498OpenClaw spawns ` imsg rpc ` (JSON-RPC over stdio). No daemon or port required.
@@ -469,6 +524,7 @@ OpenClaw spawns `imsg rpc` (JSON-RPC over stdio). No daemon or port required.
469524- ` cliPath ` can point to an SSH wrapper; set ` remoteHost ` (` host ` or ` user@host ` ) for SCP attachment fetching.
470525- ` attachmentRoots ` and ` remoteAttachmentRoots ` restrict inbound attachment paths (default: ` /Users/*/Library/Messages/Attachments ` ).
471526- SCP uses strict host-key checking, so ensure the relay host key already exists in ` ~/.ssh/known_hosts ` .
527+ - ` channels.imessage.configWrites ` : allow or deny iMessage-initiated config writes.
472528
473529<Accordion title =" iMessage SSH wrapper example " >
474530
@@ -479,6 +535,52 @@ exec ssh -T gateway-host imsg "$@"
479535
480536</Accordion >
481537
538+ ### Microsoft Teams
539+
540+ Microsoft Teams is extension-backed and configured under ` channels.msteams ` .
541+
542+ ``` json5
543+ {
544+ channels: {
545+ msteams: {
546+ enabled: true ,
547+ configWrites: true ,
548+ // appId, appPassword, tenantId, webhook, team/channel policies:
549+ // see /channels/msteams
550+ },
551+ },
552+ }
553+ ```
554+
555+ - Core key paths covered here: ` channels.msteams ` , ` channels.msteams.configWrites ` .
556+ - Full Teams config (credentials, webhook, DM/group policy, per-team/per-channel overrides) is documented in [ Microsoft Teams] ( /channels/msteams ) .
557+
558+ ### IRC
559+
560+ IRC is extension-backed and configured under ` channels.irc ` .
561+
562+ ``` json5
563+ {
564+ channels: {
565+ irc: {
566+ enabled: true ,
567+ dmPolicy: " pairing" ,
568+ configWrites: true ,
569+ nickserv: {
570+ enabled: true ,
571+ service: " NickServ" ,
572+ password: " ${IRC_NICKSERV_PASSWORD}" ,
573+ register: false ,
574+ registerEmail
: " [email protected] " ,
575+ },
576+ },
577+ },
578+ }
579+ ```
580+
581+ - Core key paths covered here: ` channels.irc ` , ` channels.irc.dmPolicy ` , ` channels.irc.configWrites ` , ` channels.irc.nickserv.* ` .
582+ - Full IRC channel configuration (host/port/TLS/channels/allowlists/mention gating) is documented in [ IRC] ( /channels/irc ) .
583+
482584### Multi-account (all channels)
483585
484586Run multiple accounts per channel (each with its own ` accountId ` ):
@@ -510,6 +612,11 @@ Run multiple accounts per channel (each with its own `accountId`):
510612- Existing channel-only bindings (no ` accountId ` ) keep matching the default account; account-scoped bindings remain optional.
511613- ` openclaw doctor --fix ` also repairs mixed shapes by moving account-scoped top-level single-account values into ` accounts.default ` when named accounts exist but ` default ` is missing.
512614
615+ ### Other extension channels
616+
617+ Many extension channels are configured as ` channels.<id> ` and documented in their dedicated channel pages (for example Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat, and Twitch).
618+ See the full channel index: [ Channels] ( /channels ) .
619+
513620### Group chat mention gating
514621
515622Group messages default to ** require mention** (metadata mention or regex patterns). Applies to WhatsApp, Telegram, Discord, Google Chat, and iMessage group chats.
@@ -1750,6 +1857,25 @@ OpenClaw uses the pi-coding-agent model catalog. Add custom providers via `model
17501857 - Empty or missing agent ` apiKey ` /` baseUrl ` fall back to ` models.providers ` in config.
17511858 - Use ` models.mode: "replace" ` when you want config to fully rewrite ` models.json ` .
17521859
1860+ ### Provider field details
1861+
1862+ - ` models.mode ` : provider catalog behavior (` merge ` or ` replace ` ).
1863+ - ` models.providers ` : custom provider map keyed by provider id.
1864+ - ` models.providers.*.api ` : request adapter (` openai-completions ` , ` openai-responses ` , ` anthropic-messages ` , ` google-generative-ai ` , etc).
1865+ - ` models.providers.*.apiKey ` : provider credential (prefer SecretRef/env substitution).
1866+ - ` models.providers.*.auth ` : auth strategy (` api-key ` , ` token ` , ` oauth ` , ` aws-sdk ` ).
1867+ - ` models.providers.*.authHeader ` : force credential transport in the ` Authorization ` header when required.
1868+ - ` models.providers.*.baseUrl ` : upstream API base URL.
1869+ - ` models.providers.*.headers ` : extra static headers for proxy/tenant routing.
1870+ - ` models.providers.*.models ` : explicit provider model catalog entries.
1871+ - ` models.bedrockDiscovery ` : Bedrock auto-discovery settings root.
1872+ - ` models.bedrockDiscovery.enabled ` : turn discovery polling on/off.
1873+ - ` models.bedrockDiscovery.region ` : AWS region for discovery.
1874+ - ` models.bedrockDiscovery.providerFilter ` : optional provider-id filter for targeted discovery.
1875+ - ` models.bedrockDiscovery.refreshInterval ` : polling interval for discovery refresh.
1876+ - ` models.bedrockDiscovery.defaultContextWindow ` : fallback context window for discovered models.
1877+ - ` models.bedrockDiscovery.defaultMaxTokens ` : fallback max output tokens for discovered models.
1878+
17531879### Provider examples
17541880
17551881<Accordion title =" Cerebras (GLM 4.6 / 4.7) " >
@@ -2027,6 +2153,13 @@ See [Local Models](/gateway/local-models). TL;DR: run MiniMax M2.1 via LM Studio
20272153- Loaded from ` ~/.openclaw/extensions ` , ` <workspace>/.openclaw/extensions ` , plus ` plugins.load.paths ` .
20282154- ** Config changes require a gateway restart.**
20292155- ` allow ` : optional allowlist (only listed plugins load). ` deny ` wins.
2156+ - ` plugins.entries.<id>.apiKey ` : plugin-level API key convenience field (when supported by the plugin).
2157+ - ` plugins.entries.<id>.env ` : plugin-scoped env var map.
2158+ - ` plugins.entries.<id>.config ` : plugin-defined config object (validated by plugin schema).
2159+ - ` plugins.slots.memory ` : pick the active memory plugin id, or ` "none" ` to disable memory plugins.
2160+ - ` plugins.installs ` : CLI-managed install metadata used by ` openclaw plugins update ` .
2161+ - Includes ` source ` , ` spec ` , ` sourcePath ` , ` installPath ` , ` version ` , ` resolvedName ` , ` resolvedVersion ` , ` resolvedSpec ` , ` integrity ` , ` shasum ` , ` resolvedAt ` , ` installedAt ` .
2162+ - Treat ` plugins.installs.* ` as managed state; prefer CLI commands over manual edits.
20302163
20312164See [ Plugins] ( /tools/plugin ) .
20322165
0 commit comments