durar-ai 2026.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (571) hide show
  1. package/CHANGELOG.md +5497 -0
  2. package/LICENSE +21 -0
  3. package/README.md +614 -0
  4. package/assets/avatar-placeholder.svg +19 -0
  5. package/assets/chrome-extension/icons/icon128.png +0 -0
  6. package/assets/chrome-extension/icons/icon16.png +0 -0
  7. package/assets/chrome-extension/icons/icon32.png +0 -0
  8. package/assets/chrome-extension/icons/icon48.png +0 -0
  9. package/assets/dmg-background-small.png +0 -0
  10. package/assets/dmg-background.png +0 -0
  11. package/docs/.i18n/README.md +72 -0
  12. package/docs/.i18n/ar-navigation.json +18 -0
  13. package/docs/.i18n/de-navigation.json +18 -0
  14. package/docs/.i18n/es-navigation.json +18 -0
  15. package/docs/.i18n/fr-navigation.json +18 -0
  16. package/docs/.i18n/glossary.ar.json +5 -0
  17. package/docs/.i18n/glossary.de.json +5 -0
  18. package/docs/.i18n/glossary.es.json +5 -0
  19. package/docs/.i18n/glossary.fr.json +5 -0
  20. package/docs/.i18n/glossary.id.json +5 -0
  21. package/docs/.i18n/glossary.it.json +5 -0
  22. package/docs/.i18n/glossary.ja-JP.json +14 -0
  23. package/docs/.i18n/glossary.ko.json +5 -0
  24. package/docs/.i18n/glossary.pl.json +5 -0
  25. package/docs/.i18n/glossary.pt-BR.json +5 -0
  26. package/docs/.i18n/glossary.tr.json +5 -0
  27. package/docs/.i18n/glossary.zh-CN.json +358 -0
  28. package/docs/.i18n/id-navigation.json +18 -0
  29. package/docs/.i18n/it-navigation.json +18 -0
  30. package/docs/.i18n/ja-navigation.json +18 -0
  31. package/docs/.i18n/ko-navigation.json +18 -0
  32. package/docs/.i18n/pl-navigation.json +18 -0
  33. package/docs/.i18n/pt-BR-navigation.json +18 -0
  34. package/docs/.i18n/tr-navigation.json +18 -0
  35. package/docs/.i18n/zh-Hans-navigation.json +544 -0
  36. package/docs/assets/install-script.svg +1 -0
  37. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  38. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  39. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  40. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  41. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  42. package/docs/assets/openclaw-logo-text-dark.png +0 -0
  43. package/docs/assets/openclaw-logo-text-dark.svg +418 -0
  44. package/docs/assets/openclaw-logo-text.png +0 -0
  45. package/docs/assets/openclaw-logo-text.svg +418 -0
  46. package/docs/assets/pixel-lobster.svg +60 -0
  47. package/docs/assets/showcase/agents-ui.jpg +0 -0
  48. package/docs/assets/showcase/bambu-cli.png +0 -0
  49. package/docs/assets/showcase/codexmonitor.png +0 -0
  50. package/docs/assets/showcase/gohome-grafana.png +0 -0
  51. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  52. package/docs/assets/showcase/oura-health.png +0 -0
  53. package/docs/assets/showcase/padel-cli.svg +11 -0
  54. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  55. package/docs/assets/showcase/papla-tts.jpg +0 -0
  56. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  57. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  58. package/docs/assets/showcase/roborock-status.svg +13 -0
  59. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  60. package/docs/assets/showcase/snag.png +0 -0
  61. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  62. package/docs/assets/showcase/wienerlinien.png +0 -0
  63. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  64. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  65. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  66. package/docs/assets/sponsors/blacksmith-light.svg +14 -0
  67. package/docs/assets/sponsors/blacksmith.svg +14 -0
  68. package/docs/assets/sponsors/convex-light.svg +16 -0
  69. package/docs/assets/sponsors/convex.svg +16 -0
  70. package/docs/assets/sponsors/github-light.svg +3 -0
  71. package/docs/assets/sponsors/github.svg +3 -0
  72. package/docs/assets/sponsors/nvidia-dark.svg +9 -0
  73. package/docs/assets/sponsors/nvidia.svg +9 -0
  74. package/docs/assets/sponsors/openai-light.svg +3 -0
  75. package/docs/assets/sponsors/openai.svg +3 -0
  76. package/docs/assets/sponsors/vercel-light.svg +5 -0
  77. package/docs/assets/sponsors/vercel.svg +5 -0
  78. package/docs/auth-credential-semantics.md +80 -0
  79. package/docs/automation/auth-monitoring.md +8 -0
  80. package/docs/automation/clawflow.md +8 -0
  81. package/docs/automation/cron-jobs.md +410 -0
  82. package/docs/automation/cron-vs-heartbeat.md +8 -0
  83. package/docs/automation/gmail-pubsub.md +8 -0
  84. package/docs/automation/hooks.md +303 -0
  85. package/docs/automation/index.md +115 -0
  86. package/docs/automation/poll.md +8 -0
  87. package/docs/automation/standing-orders.md +254 -0
  88. package/docs/automation/taskflow.md +82 -0
  89. package/docs/automation/tasks.md +323 -0
  90. package/docs/automation/troubleshooting.md +8 -0
  91. package/docs/automation/webhook.md +8 -0
  92. package/docs/brave-search.md +103 -0
  93. package/docs/channels/bluebubbles.md +435 -0
  94. package/docs/channels/broadcast-groups.md +442 -0
  95. package/docs/channels/channel-routing.md +139 -0
  96. package/docs/channels/discord.md +1254 -0
  97. package/docs/channels/feishu.md +793 -0
  98. package/docs/channels/googlechat.md +270 -0
  99. package/docs/channels/group-messages.md +84 -0
  100. package/docs/channels/groups.md +410 -0
  101. package/docs/channels/imessage.md +427 -0
  102. package/docs/channels/index.md +50 -0
  103. package/docs/channels/irc.md +252 -0
  104. package/docs/channels/line.md +225 -0
  105. package/docs/channels/location.md +56 -0
  106. package/docs/channels/matrix.md +869 -0
  107. package/docs/channels/mattermost.md +472 -0
  108. package/docs/channels/msteams.md +805 -0
  109. package/docs/channels/nextcloud-talk.md +149 -0
  110. package/docs/channels/nostr.md +252 -0
  111. package/docs/channels/pairing.md +129 -0
  112. package/docs/channels/qqbot.md +193 -0
  113. package/docs/channels/signal.md +337 -0
  114. package/docs/channels/slack.md +681 -0
  115. package/docs/channels/synology-chat.md +185 -0
  116. package/docs/channels/telegram.md +1072 -0
  117. package/docs/channels/tlon.md +290 -0
  118. package/docs/channels/troubleshooting.md +133 -0
  119. package/docs/channels/twitch.md +394 -0
  120. package/docs/channels/whatsapp.md +488 -0
  121. package/docs/channels/zalo.md +254 -0
  122. package/docs/channels/zalouser.md +195 -0
  123. package/docs/ci.md +66 -0
  124. package/docs/cli/acp.md +316 -0
  125. package/docs/cli/agent.md +57 -0
  126. package/docs/cli/agents.md +220 -0
  127. package/docs/cli/approvals.md +136 -0
  128. package/docs/cli/backup.md +84 -0
  129. package/docs/cli/browser.md +233 -0
  130. package/docs/cli/channels.md +131 -0
  131. package/docs/cli/clawbot.md +21 -0
  132. package/docs/cli/completion.md +35 -0
  133. package/docs/cli/config.md +353 -0
  134. package/docs/cli/configure.md +70 -0
  135. package/docs/cli/cron.md +167 -0
  136. package/docs/cli/daemon.md +57 -0
  137. package/docs/cli/dashboard.md +22 -0
  138. package/docs/cli/devices.md +171 -0
  139. package/docs/cli/directory.md +63 -0
  140. package/docs/cli/dns.md +48 -0
  141. package/docs/cli/docs.md +28 -0
  142. package/docs/cli/doctor.md +63 -0
  143. package/docs/cli/flows.md +18 -0
  144. package/docs/cli/gateway.md +307 -0
  145. package/docs/cli/health.md +36 -0
  146. package/docs/cli/hooks.md +337 -0
  147. package/docs/cli/index.md +1836 -0
  148. package/docs/cli/logs.md +59 -0
  149. package/docs/cli/mcp.md +505 -0
  150. package/docs/cli/memory.md +139 -0
  151. package/docs/cli/message.md +300 -0
  152. package/docs/cli/models.md +136 -0
  153. package/docs/cli/node.md +137 -0
  154. package/docs/cli/nodes.md +66 -0
  155. package/docs/cli/onboard.md +171 -0
  156. package/docs/cli/pairing.md +65 -0
  157. package/docs/cli/plugins.md +305 -0
  158. package/docs/cli/qr.md +52 -0
  159. package/docs/cli/reset.md +35 -0
  160. package/docs/cli/sandbox.md +197 -0
  161. package/docs/cli/secrets.md +197 -0
  162. package/docs/cli/security.md +86 -0
  163. package/docs/cli/sessions.md +113 -0
  164. package/docs/cli/setup.md +45 -0
  165. package/docs/cli/skills.md +59 -0
  166. package/docs/cli/status.md +35 -0
  167. package/docs/cli/system.md +71 -0
  168. package/docs/cli/tui.md +30 -0
  169. package/docs/cli/uninstall.md +39 -0
  170. package/docs/cli/update.md +113 -0
  171. package/docs/cli/voicecall.md +34 -0
  172. package/docs/cli/webhooks.md +91 -0
  173. package/docs/concepts/agent-loop.md +168 -0
  174. package/docs/concepts/agent-workspace.md +246 -0
  175. package/docs/concepts/agent.md +129 -0
  176. package/docs/concepts/architecture.md +156 -0
  177. package/docs/concepts/compaction.md +122 -0
  178. package/docs/concepts/context-engine.md +274 -0
  179. package/docs/concepts/context.md +179 -0
  180. package/docs/concepts/delegate-architecture.md +307 -0
  181. package/docs/concepts/dreaming.md +173 -0
  182. package/docs/concepts/features.md +76 -0
  183. package/docs/concepts/markdown-formatting.md +130 -0
  184. package/docs/concepts/memory-builtin.md +105 -0
  185. package/docs/concepts/memory-honcho.md +140 -0
  186. package/docs/concepts/memory-qmd.md +163 -0
  187. package/docs/concepts/memory-search.md +141 -0
  188. package/docs/concepts/memory.md +121 -0
  189. package/docs/concepts/messages.md +161 -0
  190. package/docs/concepts/model-failover.md +349 -0
  191. package/docs/concepts/model-providers.md +799 -0
  192. package/docs/concepts/models.md +255 -0
  193. package/docs/concepts/multi-agent.md +615 -0
  194. package/docs/concepts/oauth.md +225 -0
  195. package/docs/concepts/presence.md +102 -0
  196. package/docs/concepts/queue.md +89 -0
  197. package/docs/concepts/retry.md +69 -0
  198. package/docs/concepts/session-pruning.md +92 -0
  199. package/docs/concepts/session-tool.md +141 -0
  200. package/docs/concepts/session.md +116 -0
  201. package/docs/concepts/soul.md +110 -0
  202. package/docs/concepts/streaming.md +161 -0
  203. package/docs/concepts/system-prompt.md +182 -0
  204. package/docs/concepts/timezone.md +97 -0
  205. package/docs/concepts/typebox.md +307 -0
  206. package/docs/concepts/typing-indicators.md +69 -0
  207. package/docs/concepts/usage-tracking.md +59 -0
  208. package/docs/date-time.md +128 -0
  209. package/docs/debug/node-issue.md +85 -0
  210. package/docs/diagnostics/flags.md +91 -0
  211. package/docs/docs.json +1601 -0
  212. package/docs/gateway/authentication.md +218 -0
  213. package/docs/gateway/background-process.md +131 -0
  214. package/docs/gateway/bonjour.md +179 -0
  215. package/docs/gateway/bridge-protocol.md +89 -0
  216. package/docs/gateway/cli-backends.md +310 -0
  217. package/docs/gateway/configuration-examples.md +631 -0
  218. package/docs/gateway/configuration-reference.md +3618 -0
  219. package/docs/gateway/configuration.md +698 -0
  220. package/docs/gateway/discovery.md +141 -0
  221. package/docs/gateway/doctor.md +494 -0
  222. package/docs/gateway/gateway-lock.md +37 -0
  223. package/docs/gateway/health.md +61 -0
  224. package/docs/gateway/heartbeat.md +443 -0
  225. package/docs/gateway/index.md +367 -0
  226. package/docs/gateway/local-models.md +163 -0
  227. package/docs/gateway/logging.md +113 -0
  228. package/docs/gateway/multiple-gateways.md +120 -0
  229. package/docs/gateway/network-model.md +25 -0
  230. package/docs/gateway/openai-http-api.md +280 -0
  231. package/docs/gateway/openresponses-http-api.md +340 -0
  232. package/docs/gateway/openshell.md +307 -0
  233. package/docs/gateway/pairing.md +138 -0
  234. package/docs/gateway/protocol.md +588 -0
  235. package/docs/gateway/remote-gateway-readme.md +164 -0
  236. package/docs/gateway/remote.md +251 -0
  237. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +141 -0
  238. package/docs/gateway/sandboxing.md +473 -0
  239. package/docs/gateway/secrets-plan-contract.md +116 -0
  240. package/docs/gateway/secrets.md +541 -0
  241. package/docs/gateway/security/index.md +1362 -0
  242. package/docs/gateway/tailscale.md +136 -0
  243. package/docs/gateway/tools-invoke-http-api.md +161 -0
  244. package/docs/gateway/troubleshooting.md +451 -0
  245. package/docs/gateway/trusted-proxy-auth.md +399 -0
  246. package/docs/help/debugging.md +168 -0
  247. package/docs/help/environment.md +165 -0
  248. package/docs/help/faq.md +3244 -0
  249. package/docs/help/index.md +28 -0
  250. package/docs/help/scripts.md +27 -0
  251. package/docs/help/testing.md +640 -0
  252. package/docs/help/troubleshooting.md +372 -0
  253. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  254. package/docs/images/feishu-step2-create-app.png +0 -0
  255. package/docs/images/feishu-step3-credentials.png +0 -0
  256. package/docs/images/feishu-step4-permissions.png +0 -0
  257. package/docs/images/feishu-step5-bot-capability.png +0 -0
  258. package/docs/images/feishu-step6-event-subscription.png +0 -0
  259. package/docs/images/feishu-verification-token.png +0 -0
  260. package/docs/images/groups-flow.svg +52 -0
  261. package/docs/images/mobile-ui-screenshot.png +0 -0
  262. package/docs/index.md +196 -0
  263. package/docs/install/ansible.md +230 -0
  264. package/docs/install/azure.md +311 -0
  265. package/docs/install/bun.md +55 -0
  266. package/docs/install/clawdock.md +106 -0
  267. package/docs/install/development-channels.md +131 -0
  268. package/docs/install/digitalocean.md +129 -0
  269. package/docs/install/docker-vm-runtime.md +142 -0
  270. package/docs/install/docker.md +412 -0
  271. package/docs/install/exe-dev.md +133 -0
  272. package/docs/install/fly.md +504 -0
  273. package/docs/install/gcp.md +412 -0
  274. package/docs/install/hetzner.md +259 -0
  275. package/docs/install/index.md +212 -0
  276. package/docs/install/installer.md +443 -0
  277. package/docs/install/kubernetes.md +192 -0
  278. package/docs/install/macos-vm.md +281 -0
  279. package/docs/install/migrating-matrix.md +349 -0
  280. package/docs/install/migrating.md +112 -0
  281. package/docs/install/nix.md +89 -0
  282. package/docs/install/node.md +144 -0
  283. package/docs/install/northflank.mdx +42 -0
  284. package/docs/install/oracle.md +158 -0
  285. package/docs/install/podman.md +210 -0
  286. package/docs/install/railway.mdx +90 -0
  287. package/docs/install/raspberry-pi.md +159 -0
  288. package/docs/install/render.mdx +165 -0
  289. package/docs/install/uninstall.md +128 -0
  290. package/docs/install/updating.md +142 -0
  291. package/docs/logging.md +389 -0
  292. package/docs/nav-tabs-underline.js +100 -0
  293. package/docs/network.md +69 -0
  294. package/docs/nodes/audio.md +191 -0
  295. package/docs/nodes/camera.md +162 -0
  296. package/docs/nodes/images.md +73 -0
  297. package/docs/nodes/index.md +408 -0
  298. package/docs/nodes/location-command.md +98 -0
  299. package/docs/nodes/media-understanding.md +432 -0
  300. package/docs/nodes/talk.md +92 -0
  301. package/docs/nodes/troubleshooting.md +123 -0
  302. package/docs/nodes/voicewake.md +66 -0
  303. package/docs/perplexity.md +181 -0
  304. package/docs/pi-dev.md +80 -0
  305. package/docs/pi.md +570 -0
  306. package/docs/platforms/android.md +244 -0
  307. package/docs/platforms/digitalocean.md +266 -0
  308. package/docs/platforms/index.md +55 -0
  309. package/docs/platforms/ios.md +223 -0
  310. package/docs/platforms/linux.md +100 -0
  311. package/docs/platforms/mac/bundled-gateway.md +75 -0
  312. package/docs/platforms/mac/canvas.md +125 -0
  313. package/docs/platforms/mac/child-process.md +69 -0
  314. package/docs/platforms/mac/dev-setup.md +107 -0
  315. package/docs/platforms/mac/health.md +34 -0
  316. package/docs/platforms/mac/icon.md +31 -0
  317. package/docs/platforms/mac/logging.md +57 -0
  318. package/docs/platforms/mac/menu-bar.md +81 -0
  319. package/docs/platforms/mac/peekaboo.md +65 -0
  320. package/docs/platforms/mac/permissions.md +50 -0
  321. package/docs/platforms/mac/remote.md +84 -0
  322. package/docs/platforms/mac/signing.md +47 -0
  323. package/docs/platforms/mac/skills.md +40 -0
  324. package/docs/platforms/mac/voice-overlay.md +60 -0
  325. package/docs/platforms/mac/voicewake.md +67 -0
  326. package/docs/platforms/mac/webchat.md +51 -0
  327. package/docs/platforms/mac/xpc.md +61 -0
  328. package/docs/platforms/macos.md +229 -0
  329. package/docs/platforms/oracle.md +305 -0
  330. package/docs/platforms/raspberry-pi.md +420 -0
  331. package/docs/platforms/windows.md +241 -0
  332. package/docs/plugins/agent-tools.md +10 -0
  333. package/docs/plugins/architecture.md +1609 -0
  334. package/docs/plugins/building-extensions.md +10 -0
  335. package/docs/plugins/building-plugins.md +319 -0
  336. package/docs/plugins/bundles.md +292 -0
  337. package/docs/plugins/community.md +149 -0
  338. package/docs/plugins/manifest.md +412 -0
  339. package/docs/plugins/sdk-channel-plugins.md +508 -0
  340. package/docs/plugins/sdk-entrypoints.md +210 -0
  341. package/docs/plugins/sdk-migration.md +359 -0
  342. package/docs/plugins/sdk-overview.md +475 -0
  343. package/docs/plugins/sdk-provider-plugins.md +712 -0
  344. package/docs/plugins/sdk-runtime.md +381 -0
  345. package/docs/plugins/sdk-setup.md +516 -0
  346. package/docs/plugins/sdk-testing.md +263 -0
  347. package/docs/plugins/voice-call.md +466 -0
  348. package/docs/plugins/zalouser.md +78 -0
  349. package/docs/prose.md +134 -0
  350. package/docs/providers/anthropic.md +402 -0
  351. package/docs/providers/bedrock-mantle.md +91 -0
  352. package/docs/providers/bedrock.md +273 -0
  353. package/docs/providers/chutes.md +103 -0
  354. package/docs/providers/claude-max-api-proxy.md +163 -0
  355. package/docs/providers/cloudflare-ai-gateway.md +71 -0
  356. package/docs/providers/deepgram.md +93 -0
  357. package/docs/providers/deepseek.md +53 -0
  358. package/docs/providers/fireworks.md +69 -0
  359. package/docs/providers/github-copilot.md +80 -0
  360. package/docs/providers/glm.md +68 -0
  361. package/docs/providers/google.md +149 -0
  362. package/docs/providers/groq.md +105 -0
  363. package/docs/providers/huggingface.md +193 -0
  364. package/docs/providers/index.md +81 -0
  365. package/docs/providers/kilocode.md +89 -0
  366. package/docs/providers/litellm.md +159 -0
  367. package/docs/providers/minimax.md +281 -0
  368. package/docs/providers/mistral.md +68 -0
  369. package/docs/providers/models.md +56 -0
  370. package/docs/providers/moonshot.md +224 -0
  371. package/docs/providers/nvidia.md +58 -0
  372. package/docs/providers/ollama.md +379 -0
  373. package/docs/providers/openai.md +472 -0
  374. package/docs/providers/opencode-go.md +45 -0
  375. package/docs/providers/opencode.md +68 -0
  376. package/docs/providers/openrouter.md +59 -0
  377. package/docs/providers/perplexity-provider.md +62 -0
  378. package/docs/providers/qianfan.md +90 -0
  379. package/docs/providers/qwen.md +128 -0
  380. package/docs/providers/qwen_modelstudio.md +137 -0
  381. package/docs/providers/sglang.md +115 -0
  382. package/docs/providers/stepfun.md +152 -0
  383. package/docs/providers/synthetic.md +101 -0
  384. package/docs/providers/together.md +70 -0
  385. package/docs/providers/venice.md +282 -0
  386. package/docs/providers/vercel-ai-gateway.md +60 -0
  387. package/docs/providers/vllm.md +103 -0
  388. package/docs/providers/volcengine.md +94 -0
  389. package/docs/providers/xai.md +94 -0
  390. package/docs/providers/xiaomi.md +89 -0
  391. package/docs/providers/zai.md +75 -0
  392. package/docs/reference/AGENTS.default.md +126 -0
  393. package/docs/reference/RELEASING.md +138 -0
  394. package/docs/reference/api-usage-costs.md +198 -0
  395. package/docs/reference/credits.md +30 -0
  396. package/docs/reference/device-models.md +47 -0
  397. package/docs/reference/memory-config.md +421 -0
  398. package/docs/reference/prompt-caching.md +344 -0
  399. package/docs/reference/rpc.md +43 -0
  400. package/docs/reference/secretref-credential-surface.md +148 -0
  401. package/docs/reference/secretref-user-supplied-credentials-matrix.json +607 -0
  402. package/docs/reference/session-management-compaction.md +352 -0
  403. package/docs/reference/templates/AGENTS.dev.md +84 -0
  404. package/docs/reference/templates/AGENTS.md +219 -0
  405. package/docs/reference/templates/BOOT.md +12 -0
  406. package/docs/reference/templates/BOOTSTRAP.md +62 -0
  407. package/docs/reference/templates/CLAUDE.md +1 -0
  408. package/docs/reference/templates/HEARTBEAT.md +14 -0
  409. package/docs/reference/templates/IDENTITY.dev.md +48 -0
  410. package/docs/reference/templates/IDENTITY.md +30 -0
  411. package/docs/reference/templates/SOUL.dev.md +77 -0
  412. package/docs/reference/templates/SOUL.md +45 -0
  413. package/docs/reference/templates/TOOLS.dev.md +25 -0
  414. package/docs/reference/templates/TOOLS.md +47 -0
  415. package/docs/reference/templates/USER.dev.md +19 -0
  416. package/docs/reference/templates/USER.md +24 -0
  417. package/docs/reference/test.md +119 -0
  418. package/docs/reference/token-use.md +197 -0
  419. package/docs/reference/transcript-hygiene.md +151 -0
  420. package/docs/reference/wizard.md +245 -0
  421. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
  422. package/docs/security/THREAT-MODEL-ATLAS.md +608 -0
  423. package/docs/security/formal-verification.md +167 -0
  424. package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +9 -0
  425. package/docs/snippets/plugin-publish/minimal-package.json +16 -0
  426. package/docs/start/bootstrapping.md +41 -0
  427. package/docs/start/docs-directory.md +67 -0
  428. package/docs/start/getting-started.md +148 -0
  429. package/docs/start/hubs.md +199 -0
  430. package/docs/start/lore.md +219 -0
  431. package/docs/start/onboarding-overview.md +69 -0
  432. package/docs/start/onboarding.md +92 -0
  433. package/docs/start/openclaw.md +225 -0
  434. package/docs/start/quickstart.md +22 -0
  435. package/docs/start/setup.md +172 -0
  436. package/docs/start/showcase.md +418 -0
  437. package/docs/start/wizard-cli-automation.md +233 -0
  438. package/docs/start/wizard-cli-reference.md +324 -0
  439. package/docs/start/wizard.md +127 -0
  440. package/docs/style.css +37 -0
  441. package/docs/tools/acp-agents.md +837 -0
  442. package/docs/tools/agent-send.md +100 -0
  443. package/docs/tools/apply-patch.md +52 -0
  444. package/docs/tools/brave-search.md +107 -0
  445. package/docs/tools/browser-linux-troubleshooting.md +145 -0
  446. package/docs/tools/browser-login.md +73 -0
  447. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +221 -0
  448. package/docs/tools/browser.md +890 -0
  449. package/docs/tools/btw.md +142 -0
  450. package/docs/tools/capability-cookbook.md +119 -0
  451. package/docs/tools/clawhub.md +348 -0
  452. package/docs/tools/code-execution.md +90 -0
  453. package/docs/tools/creating-skills.md +119 -0
  454. package/docs/tools/diffs.md +434 -0
  455. package/docs/tools/duckduckgo-search.md +102 -0
  456. package/docs/tools/elevated.md +116 -0
  457. package/docs/tools/exa-search.md +127 -0
  458. package/docs/tools/exec-approvals.md +635 -0
  459. package/docs/tools/exec.md +237 -0
  460. package/docs/tools/firecrawl.md +147 -0
  461. package/docs/tools/gemini-search.md +98 -0
  462. package/docs/tools/grok-search.md +102 -0
  463. package/docs/tools/image-generation.md +139 -0
  464. package/docs/tools/index.md +174 -0
  465. package/docs/tools/kimi-search.md +98 -0
  466. package/docs/tools/llm-task.md +119 -0
  467. package/docs/tools/lobster.md +348 -0
  468. package/docs/tools/loop-detection.md +100 -0
  469. package/docs/tools/minimax-search.md +99 -0
  470. package/docs/tools/multi-agent-sandbox-tools.md +373 -0
  471. package/docs/tools/ollama-search.md +100 -0
  472. package/docs/tools/pdf.md +176 -0
  473. package/docs/tools/perplexity-search.md +185 -0
  474. package/docs/tools/plugin.md +348 -0
  475. package/docs/tools/reactions.md +78 -0
  476. package/docs/tools/searxng-search.md +132 -0
  477. package/docs/tools/skills-config.md +133 -0
  478. package/docs/tools/skills.md +377 -0
  479. package/docs/tools/slash-commands.md +322 -0
  480. package/docs/tools/subagents.md +341 -0
  481. package/docs/tools/tavily.md +129 -0
  482. package/docs/tools/thinking.md +102 -0
  483. package/docs/tools/tts.md +452 -0
  484. package/docs/tools/web-fetch.md +159 -0
  485. package/docs/tools/web.md +417 -0
  486. package/docs/tts.md +452 -0
  487. package/docs/vps.md +115 -0
  488. package/docs/web/control-ui.md +318 -0
  489. package/docs/web/dashboard.md +93 -0
  490. package/docs/web/index.md +126 -0
  491. package/docs/web/tui.md +176 -0
  492. package/docs/web/webchat.md +77 -0
  493. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  494. package/docs/whatsapp-openclaw.jpg +0 -0
  495. package/durar.mjs +180 -0
  496. package/package.json +1259 -0
  497. package/scripts/npm-runner.mjs +111 -0
  498. package/scripts/postinstall-bundled-plugins.mjs +188 -0
  499. package/skills/1password/SKILL.md +70 -0
  500. package/skills/1password/references/cli-examples.md +29 -0
  501. package/skills/1password/references/get-started.md +17 -0
  502. package/skills/apple-notes/SKILL.md +77 -0
  503. package/skills/apple-reminders/SKILL.md +118 -0
  504. package/skills/bear-notes/SKILL.md +107 -0
  505. package/skills/blogwatcher/SKILL.md +69 -0
  506. package/skills/blucli/SKILL.md +47 -0
  507. package/skills/bluebubbles/SKILL.md +131 -0
  508. package/skills/camsnap/SKILL.md +45 -0
  509. package/skills/canvas/SKILL.md +199 -0
  510. package/skills/clawhub/SKILL.md +77 -0
  511. package/skills/coding-agent/SKILL.md +316 -0
  512. package/skills/discord/SKILL.md +197 -0
  513. package/skills/eightctl/SKILL.md +50 -0
  514. package/skills/gemini/SKILL.md +43 -0
  515. package/skills/gh-issues/SKILL.md +885 -0
  516. package/skills/gifgrep/SKILL.md +79 -0
  517. package/skills/github/SKILL.md +163 -0
  518. package/skills/gog/SKILL.md +116 -0
  519. package/skills/goplaces/SKILL.md +52 -0
  520. package/skills/healthcheck/SKILL.md +245 -0
  521. package/skills/himalaya/SKILL.md +257 -0
  522. package/skills/himalaya/references/configuration.md +184 -0
  523. package/skills/himalaya/references/message-composition.md +199 -0
  524. package/skills/imsg/SKILL.md +122 -0
  525. package/skills/mcporter/SKILL.md +61 -0
  526. package/skills/model-usage/SKILL.md +69 -0
  527. package/skills/model-usage/references/codexbar-cli.md +33 -0
  528. package/skills/model-usage/scripts/model_usage.py +320 -0
  529. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  530. package/skills/nano-pdf/SKILL.md +38 -0
  531. package/skills/node-connect/SKILL.md +142 -0
  532. package/skills/notion/SKILL.md +174 -0
  533. package/skills/obsidian/SKILL.md +81 -0
  534. package/skills/openai-whisper/SKILL.md +38 -0
  535. package/skills/openai-whisper-api/SKILL.md +62 -0
  536. package/skills/openai-whisper-api/scripts/transcribe.sh +88 -0
  537. package/skills/openhue/SKILL.md +112 -0
  538. package/skills/oracle/SKILL.md +125 -0
  539. package/skills/ordercli/SKILL.md +78 -0
  540. package/skills/peekaboo/SKILL.md +190 -0
  541. package/skills/sag/SKILL.md +87 -0
  542. package/skills/session-logs/SKILL.md +151 -0
  543. package/skills/sherpa-onnx-tts/SKILL.md +109 -0
  544. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  545. package/skills/skill-creator/SKILL.md +372 -0
  546. package/skills/skill-creator/license.txt +202 -0
  547. package/skills/skill-creator/scripts/init_skill.py +378 -0
  548. package/skills/skill-creator/scripts/package_skill.py +139 -0
  549. package/skills/skill-creator/scripts/quick_validate.py +159 -0
  550. package/skills/skill-creator/scripts/test_package_skill.py +160 -0
  551. package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
  552. package/skills/slack/SKILL.md +144 -0
  553. package/skills/songsee/SKILL.md +49 -0
  554. package/skills/sonoscli/SKILL.md +65 -0
  555. package/skills/spotify-player/SKILL.md +64 -0
  556. package/skills/summarize/SKILL.md +87 -0
  557. package/skills/taskflow/SKILL.md +149 -0
  558. package/skills/taskflow/examples/inbox-triage.lobster +33 -0
  559. package/skills/taskflow/examples/pr-intake.lobster +32 -0
  560. package/skills/taskflow-inbox-triage/SKILL.md +119 -0
  561. package/skills/things-mac/SKILL.md +86 -0
  562. package/skills/tmux/SKILL.md +170 -0
  563. package/skills/tmux/scripts/find-sessions.sh +112 -0
  564. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  565. package/skills/trello/SKILL.md +108 -0
  566. package/skills/video-frames/SKILL.md +46 -0
  567. package/skills/video-frames/scripts/frame.sh +81 -0
  568. package/skills/voice-call/SKILL.md +45 -0
  569. package/skills/wacli/SKILL.md +72 -0
  570. package/skills/weather/SKILL.md +129 -0
  571. package/skills/xurl/SKILL.md +461 -0
@@ -0,0 +1,488 @@
1
+ ---
2
+ summary: "WhatsApp channel support, access controls, delivery behavior, and operations"
3
+ read_when:
4
+ - Working on WhatsApp/web channel behavior or inbox routing
5
+ title: "WhatsApp"
6
+ ---
7
+
8
+ # WhatsApp (Web channel)
9
+
10
+ Status: production-ready via WhatsApp Web (Baileys). Gateway owns linked session(s).
11
+
12
+ ## Install (on demand)
13
+
14
+ - Onboarding (`Durar onboard`) and `Durar channels add --channel whatsapp`
15
+ prompt to install the WhatsApp plugin the first time you select it.
16
+ - `Durar channels login --channel whatsapp` also offers the install flow when
17
+ the plugin is not present yet.
18
+ - Dev channel + git checkout: defaults to the local plugin path.
19
+ - Stable/Beta: defaults to the npm package `@Durar/whatsapp`.
20
+
21
+ Manual install stays available:
22
+
23
+ ```bash
24
+ Durar plugins install @Durar/whatsapp
25
+ ```
26
+
27
+ <CardGroup cols={3}>
28
+ <Card title="Pairing" icon="link" href="/channels/pairing">
29
+ Default DM policy is pairing for unknown senders.
30
+ </Card>
31
+ <Card title="Channel troubleshooting" icon="wrench" href="/channels/troubleshooting">
32
+ Cross-channel diagnostics and repair playbooks.
33
+ </Card>
34
+ <Card title="Gateway configuration" icon="settings" href="/gateway/configuration">
35
+ Full channel config patterns and examples.
36
+ </Card>
37
+ </CardGroup>
38
+
39
+ ## Quick setup
40
+
41
+ <Steps>
42
+ <Step title="Configure WhatsApp access policy">
43
+
44
+ ```json5
45
+ {
46
+ channels: {
47
+ whatsapp: {
48
+ dmPolicy: "pairing",
49
+ allowFrom: ["+15551234567"],
50
+ groupPolicy: "allowlist",
51
+ groupAllowFrom: ["+15551234567"],
52
+ },
53
+ },
54
+ }
55
+ ```
56
+
57
+ </Step>
58
+
59
+ <Step title="Link WhatsApp (QR)">
60
+
61
+ ```bash
62
+ Durar channels login --channel whatsapp
63
+ ```
64
+
65
+ For a specific account:
66
+
67
+ ```bash
68
+ Durar channels login --channel whatsapp --account work
69
+ ```
70
+
71
+ </Step>
72
+
73
+ <Step title="Start the gateway">
74
+
75
+ ```bash
76
+ Durar gateway
77
+ ```
78
+
79
+ </Step>
80
+
81
+ <Step title="Approve first pairing request (if using pairing mode)">
82
+
83
+ ```bash
84
+ Durar pairing list whatsapp
85
+ Durar pairing approve whatsapp <CODE>
86
+ ```
87
+
88
+ Pairing requests expire after 1 hour. Pending requests are capped at 3 per channel.
89
+
90
+ </Step>
91
+ </Steps>
92
+
93
+ <Note>
94
+ Durar recommends running WhatsApp on a separate number when possible. (The channel metadata and setup flow are optimized for that setup, but personal-number setups are also supported.)
95
+ </Note>
96
+
97
+ ## Deployment patterns
98
+
99
+ <AccordionGroup>
100
+ <Accordion title="Dedicated number (recommended)">
101
+ This is the cleanest operational mode:
102
+
103
+ - separate WhatsApp identity for Durar
104
+ - clearer DM allowlists and routing boundaries
105
+ - lower chance of self-chat confusion
106
+
107
+ Minimal policy pattern:
108
+
109
+ ```json5
110
+ {
111
+ channels: {
112
+ whatsapp: {
113
+ dmPolicy: "allowlist",
114
+ allowFrom: ["+15551234567"],
115
+ },
116
+ },
117
+ }
118
+ ```
119
+
120
+ </Accordion>
121
+
122
+ <Accordion title="Personal-number fallback">
123
+ Onboarding supports personal-number mode and writes a self-chat-friendly baseline:
124
+
125
+ - `dmPolicy: "allowlist"`
126
+ - `allowFrom` includes your personal number
127
+ - `selfChatMode: true`
128
+
129
+ In runtime, self-chat protections key off the linked self number and `allowFrom`.
130
+
131
+ </Accordion>
132
+
133
+ <Accordion title="WhatsApp Web-only channel scope">
134
+ The messaging platform channel is WhatsApp Web-based (`Baileys`) in current Durar channel architecture.
135
+
136
+ There is no separate Twilio WhatsApp messaging channel in the built-in chat-channel registry.
137
+
138
+ </Accordion>
139
+ </AccordionGroup>
140
+
141
+ ## Runtime model
142
+
143
+ - Gateway owns the WhatsApp socket and reconnect loop.
144
+ - Outbound sends require an active WhatsApp listener for the target account.
145
+ - Status and broadcast chats are ignored (`@status`, `@broadcast`).
146
+ - Direct chats use DM session rules (`session.dmScope`; default `main` collapses DMs to the agent main session).
147
+ - Group sessions are isolated (`agent:<agentId>:whatsapp:group:<jid>`).
148
+
149
+ ## Access control and activation
150
+
151
+ <Tabs>
152
+ <Tab title="DM policy">
153
+ `channels.whatsapp.dmPolicy` controls direct chat access:
154
+
155
+ - `pairing` (default)
156
+ - `allowlist`
157
+ - `open` (requires `allowFrom` to include `"*"`)
158
+ - `disabled`
159
+
160
+ `allowFrom` accepts E.164-style numbers (normalized internally).
161
+
162
+ Multi-account override: `channels.whatsapp.accounts.<id>.dmPolicy` (and `allowFrom`) take precedence over channel-level defaults for that account.
163
+
164
+ Runtime behavior details:
165
+
166
+ - pairings are persisted in channel allow-store and merged with configured `allowFrom`
167
+ - if no allowlist is configured, the linked self number is allowed by default
168
+ - outbound `fromMe` DMs are never auto-paired
169
+
170
+ </Tab>
171
+
172
+ <Tab title="Group policy + allowlists">
173
+ Group access has two layers:
174
+
175
+ 1. **Group membership allowlist** (`channels.whatsapp.groups`)
176
+ - if `groups` is omitted, all groups are eligible
177
+ - if `groups` is present, it acts as a group allowlist (`"*"` allowed)
178
+
179
+ 2. **Group sender policy** (`channels.whatsapp.groupPolicy` + `groupAllowFrom`)
180
+ - `open`: sender allowlist bypassed
181
+ - `allowlist`: sender must match `groupAllowFrom` (or `*`)
182
+ - `disabled`: block all group inbound
183
+
184
+ Sender allowlist fallback:
185
+
186
+ - if `groupAllowFrom` is unset, runtime falls back to `allowFrom` when available
187
+ - sender allowlists are evaluated before mention/reply activation
188
+
189
+ Note: if no `channels.whatsapp` block exists at all, runtime group-policy fallback is `allowlist` (with a warning log), even if `channels.defaults.groupPolicy` is set.
190
+
191
+ </Tab>
192
+
193
+ <Tab title="Mentions + /activation">
194
+ Group replies require mention by default.
195
+
196
+ Mention detection includes:
197
+
198
+ - explicit WhatsApp mentions of the bot identity
199
+ - configured mention regex patterns (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`)
200
+ - implicit reply-to-bot detection (reply sender matches bot identity)
201
+
202
+ Security note:
203
+
204
+ - quote/reply only satisfies mention gating; it does **not** grant sender authorization
205
+ - with `groupPolicy: "allowlist"`, non-allowlisted senders are still blocked even if they reply to an allowlisted user's message
206
+
207
+ Session-level activation command:
208
+
209
+ - `/activation mention`
210
+ - `/activation always`
211
+
212
+ `activation` updates session state (not global config). It is owner-gated.
213
+
214
+ </Tab>
215
+ </Tabs>
216
+
217
+ ## Personal-number and self-chat behavior
218
+
219
+ When the linked self number is also present in `allowFrom`, WhatsApp self-chat safeguards activate:
220
+
221
+ - skip read receipts for self-chat turns
222
+ - ignore mention-JID auto-trigger behavior that would otherwise ping yourself
223
+ - if `messages.responsePrefix` is unset, self-chat replies default to `[{identity.name}]` or `[Durar]`
224
+
225
+ ## Message normalization and context
226
+
227
+ <AccordionGroup>
228
+ <Accordion title="Inbound envelope + reply context">
229
+ Incoming WhatsApp messages are wrapped in the shared inbound envelope.
230
+
231
+ If a quoted reply exists, context is appended in this form:
232
+
233
+ ```text
234
+ [Replying to <sender> id:<stanzaId>]
235
+ <quoted body or media placeholder>
236
+ [/Replying]
237
+ ```
238
+
239
+ Reply metadata fields are also populated when available (`ReplyToId`, `ReplyToBody`, `ReplyToSender`, sender JID/E.164).
240
+
241
+ </Accordion>
242
+
243
+ <Accordion title="Media placeholders and location/contact extraction">
244
+ Media-only inbound messages are normalized with placeholders such as:
245
+
246
+ - `<media:image>`
247
+ - `<media:video>`
248
+ - `<media:audio>`
249
+ - `<media:document>`
250
+ - `<media:sticker>`
251
+
252
+ Location and contact payloads are normalized into textual context before routing.
253
+
254
+ </Accordion>
255
+
256
+ <Accordion title="Pending group history injection">
257
+ For groups, unprocessed messages can be buffered and injected as context when the bot is finally triggered.
258
+
259
+ - default limit: `50`
260
+ - config: `channels.whatsapp.historyLimit`
261
+ - fallback: `messages.groupChat.historyLimit`
262
+ - `0` disables
263
+
264
+ Injection markers:
265
+
266
+ - `[Chat messages since your last reply - for context]`
267
+ - `[Current message - respond to this]`
268
+
269
+ </Accordion>
270
+
271
+ <Accordion title="Read receipts">
272
+ Read receipts are enabled by default for accepted inbound WhatsApp messages.
273
+
274
+ Disable globally:
275
+
276
+ ```json5
277
+ {
278
+ channels: {
279
+ whatsapp: {
280
+ sendReadReceipts: false,
281
+ },
282
+ },
283
+ }
284
+ ```
285
+
286
+ Per-account override:
287
+
288
+ ```json5
289
+ {
290
+ channels: {
291
+ whatsapp: {
292
+ accounts: {
293
+ work: {
294
+ sendReadReceipts: false,
295
+ },
296
+ },
297
+ },
298
+ },
299
+ }
300
+ ```
301
+
302
+ Self-chat turns skip read receipts even when globally enabled.
303
+
304
+ </Accordion>
305
+ </AccordionGroup>
306
+
307
+ ## Delivery, chunking, and media
308
+
309
+ <AccordionGroup>
310
+ <Accordion title="Text chunking">
311
+ - default chunk limit: `channels.whatsapp.textChunkLimit = 4000`
312
+ - `channels.whatsapp.chunkMode = "length" | "newline"`
313
+ - `newline` mode prefers paragraph boundaries (blank lines), then falls back to length-safe chunking
314
+ </Accordion>
315
+
316
+ <Accordion title="Outbound media behavior">
317
+ - supports image, video, audio (PTT voice-note), and document payloads
318
+ - `audio/ogg` is rewritten to `audio/ogg; codecs=opus` for voice-note compatibility
319
+ - animated GIF playback is supported via `gifPlayback: true` on video sends
320
+ - captions are applied to the first media item when sending multi-media reply payloads
321
+ - media source can be HTTP(S), `file://`, or local paths
322
+ </Accordion>
323
+
324
+ <Accordion title="Media size limits and fallback behavior">
325
+ - inbound media save cap: `channels.whatsapp.mediaMaxMb` (default `50`)
326
+ - outbound media send cap: `channels.whatsapp.mediaMaxMb` (default `50`)
327
+ - per-account overrides use `channels.whatsapp.accounts.<accountId>.mediaMaxMb`
328
+ - images are auto-optimized (resize/quality sweep) to fit limits
329
+ - on media send failure, first-item fallback sends text warning instead of dropping the response silently
330
+ </Accordion>
331
+ </AccordionGroup>
332
+
333
+ ## Reaction level
334
+
335
+ `channels.whatsapp.reactionLevel` controls how broadly the agent uses emoji reactions on WhatsApp:
336
+
337
+ | Level | Ack reactions | Agent-initiated reactions | Description |
338
+ | ------------- | ------------- | ------------------------- | ------------------------------------------------ |
339
+ | `"off"` | No | No | No reactions at all |
340
+ | `"ack"` | Yes | No | Ack reactions only (pre-reply receipt) |
341
+ | `"minimal"` | Yes | Yes (conservative) | Ack + agent reactions with conservative guidance |
342
+ | `"extensive"` | Yes | Yes (encouraged) | Ack + agent reactions with encouraged guidance |
343
+
344
+ Default: `"minimal"`.
345
+
346
+ Per-account overrides use `channels.whatsapp.accounts.<id>.reactionLevel`.
347
+
348
+ ```json5
349
+ {
350
+ channels: {
351
+ whatsapp: {
352
+ reactionLevel: "ack",
353
+ },
354
+ },
355
+ }
356
+ ```
357
+
358
+ ## Acknowledgment reactions
359
+
360
+ WhatsApp supports immediate ack reactions on inbound receipt via `channels.whatsapp.ackReaction`.
361
+ Ack reactions are gated by `reactionLevel` — they are suppressed when `reactionLevel` is `"off"`.
362
+
363
+ ```json5
364
+ {
365
+ channels: {
366
+ whatsapp: {
367
+ ackReaction: {
368
+ emoji: "👀",
369
+ direct: true,
370
+ group: "mentions", // always | mentions | never
371
+ },
372
+ },
373
+ },
374
+ }
375
+ ```
376
+
377
+ Behavior notes:
378
+
379
+ - sent immediately after inbound is accepted (pre-reply)
380
+ - failures are logged but do not block normal reply delivery
381
+ - group mode `mentions` reacts on mention-triggered turns; group activation `always` acts as bypass for this check
382
+ - WhatsApp uses `channels.whatsapp.ackReaction` (legacy `messages.ackReaction` is not used here)
383
+
384
+ ## Multi-account and credentials
385
+
386
+ <AccordionGroup>
387
+ <Accordion title="Account selection and defaults">
388
+ - account ids come from `channels.whatsapp.accounts`
389
+ - default account selection: `default` if present, otherwise first configured account id (sorted)
390
+ - account ids are normalized internally for lookup
391
+ </Accordion>
392
+
393
+ <Accordion title="Credential paths and legacy compatibility">
394
+ - current auth path: `~/.Durar/credentials/whatsapp/<accountId>/creds.json`
395
+ - backup file: `creds.json.bak`
396
+ - legacy default auth in `~/.Durar/credentials/` is still recognized/migrated for default-account flows
397
+ </Accordion>
398
+
399
+ <Accordion title="Logout behavior">
400
+ `Durar channels logout --channel whatsapp [--account <id>]` clears WhatsApp auth state for that account.
401
+
402
+ In legacy auth directories, `oauth.json` is preserved while Baileys auth files are removed.
403
+
404
+ </Accordion>
405
+ </AccordionGroup>
406
+
407
+ ## Tools, actions, and config writes
408
+
409
+ - Agent tool support includes WhatsApp reaction action (`react`).
410
+ - Action gates:
411
+ - `channels.whatsapp.actions.reactions`
412
+ - `channels.whatsapp.actions.polls`
413
+ - Channel-initiated config writes are enabled by default (disable via `channels.whatsapp.configWrites=false`).
414
+
415
+ ## Troubleshooting
416
+
417
+ <AccordionGroup>
418
+ <Accordion title="Not linked (QR required)">
419
+ Symptom: channel status reports not linked.
420
+
421
+ Fix:
422
+
423
+ ```bash
424
+ Durar channels login --channel whatsapp
425
+ Durar channels status
426
+ ```
427
+
428
+ </Accordion>
429
+
430
+ <Accordion title="Linked but disconnected / reconnect loop">
431
+ Symptom: linked account with repeated disconnects or reconnect attempts.
432
+
433
+ Fix:
434
+
435
+ ```bash
436
+ Durar doctor
437
+ Durar logs --follow
438
+ ```
439
+
440
+ If needed, re-link with `channels login`.
441
+
442
+ </Accordion>
443
+
444
+ <Accordion title="No active listener when sending">
445
+ Outbound sends fail fast when no active gateway listener exists for the target account.
446
+
447
+ Make sure gateway is running and the account is linked.
448
+
449
+ </Accordion>
450
+
451
+ <Accordion title="Group messages unexpectedly ignored">
452
+ Check in this order:
453
+
454
+ - `groupPolicy`
455
+ - `groupAllowFrom` / `allowFrom`
456
+ - `groups` allowlist entries
457
+ - mention gating (`requireMention` + mention patterns)
458
+ - duplicate keys in `Durar.json` (JSON5): later entries override earlier ones, so keep a single `groupPolicy` per scope
459
+
460
+ </Accordion>
461
+
462
+ <Accordion title="Bun runtime warning">
463
+ WhatsApp gateway runtime should use Node. Bun is flagged as incompatible for stable WhatsApp/Telegram gateway operation.
464
+ </Accordion>
465
+ </AccordionGroup>
466
+
467
+ ## Configuration reference pointers
468
+
469
+ Primary reference:
470
+
471
+ - [Configuration reference - WhatsApp](/gateway/configuration-reference#whatsapp)
472
+
473
+ High-signal WhatsApp fields:
474
+
475
+ - access: `dmPolicy`, `allowFrom`, `groupPolicy`, `groupAllowFrom`, `groups`
476
+ - delivery: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `sendReadReceipts`, `ackReaction`, `reactionLevel`
477
+ - multi-account: `accounts.<id>.enabled`, `accounts.<id>.authDir`, account-level overrides
478
+ - operations: `configWrites`, `debounceMs`, `web.enabled`, `web.heartbeatSeconds`, `web.reconnect.*`
479
+ - session behavior: `session.dmScope`, `historyLimit`, `dmHistoryLimit`, `dms.<id>.historyLimit`
480
+
481
+ ## Related
482
+
483
+ - [Pairing](/channels/pairing)
484
+ - [Groups](/channels/groups)
485
+ - [Security](/gateway/security)
486
+ - [Channel routing](/channels/channel-routing)
487
+ - [Multi-agent routing](/concepts/multi-agent)
488
+ - [Troubleshooting](/channels/troubleshooting)