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,193 @@
1
+ ---
2
+ summary: "QQ Bot setup, config, and usage"
3
+ read_when:
4
+ - You want to connect Durar to QQ
5
+ - You need QQ Bot credential setup
6
+ - You want QQ Bot group or private chat support
7
+ title: QQ Bot
8
+ ---
9
+
10
+ # QQ Bot
11
+
12
+ QQ Bot connects to Durar via the official QQ Bot API (WebSocket gateway). The
13
+ plugin supports C2C private chat, group @messages, and guild channel messages with
14
+ rich media (images, voice, video, files).
15
+
16
+ Status: bundled plugin. Direct messages, group chats, guild channels, and
17
+ media are supported. Reactions and threads are not supported.
18
+
19
+ ## Bundled plugin
20
+
21
+ Current Durar releases bundle QQ Bot, so normal packaged builds do not need
22
+ a separate `Durar plugins install` step.
23
+
24
+ ## Setup
25
+
26
+ 1. Go to the [QQ Open Platform](https://q.qq.com/) and scan the QR code with your
27
+ phone QQ to register / log in.
28
+ 2. Click **Create Bot** to create a new QQ bot.
29
+ 3. Find **AppID** and **AppSecret** on the bot's settings page and copy them.
30
+
31
+ > AppSecret is not stored in plaintext β€” if you leave the page without saving it,
32
+ > you'll have to regenerate a new one.
33
+
34
+ 4. Add the channel:
35
+
36
+ ```bash
37
+ Durar channels add --channel qqbot --token "AppID:AppSecret"
38
+ ```
39
+
40
+ 5. Restart the Gateway.
41
+
42
+ Interactive setup paths:
43
+
44
+ ```bash
45
+ Durar channels add
46
+ Durar configure --section channels
47
+ ```
48
+
49
+ ## Configure
50
+
51
+ Minimal config:
52
+
53
+ ```json5
54
+ {
55
+ channels: {
56
+ qqbot: {
57
+ enabled: true,
58
+ appId: "YOUR_APP_ID",
59
+ clientSecret: "YOUR_APP_SECRET",
60
+ },
61
+ },
62
+ }
63
+ ```
64
+
65
+ Default-account env vars:
66
+
67
+ - `QQBOT_APP_ID`
68
+ - `QQBOT_CLIENT_SECRET`
69
+
70
+ File-backed AppSecret:
71
+
72
+ ```json5
73
+ {
74
+ channels: {
75
+ qqbot: {
76
+ enabled: true,
77
+ appId: "YOUR_APP_ID",
78
+ clientSecretFile: "/path/to/qqbot-secret.txt",
79
+ },
80
+ },
81
+ }
82
+ ```
83
+
84
+ Notes:
85
+
86
+ - Env fallback applies to the default QQ Bot account only.
87
+ - `Durar channels add --channel qqbot --token-file ...` provides the
88
+ AppSecret only; the AppID must already be set in config or `QQBOT_APP_ID`.
89
+ - `clientSecret` also accepts SecretRef input, not just a plaintext string.
90
+
91
+ ### Multi-account setup
92
+
93
+ Run multiple QQ bots under a single Durar instance:
94
+
95
+ ```json5
96
+ {
97
+ channels: {
98
+ qqbot: {
99
+ enabled: true,
100
+ appId: "111111111",
101
+ clientSecret: "secret-of-bot-1",
102
+ accounts: {
103
+ bot2: {
104
+ enabled: true,
105
+ appId: "222222222",
106
+ clientSecret: "secret-of-bot-2",
107
+ },
108
+ },
109
+ },
110
+ },
111
+ }
112
+ ```
113
+
114
+ Each account launches its own WebSocket connection and maintains an independent
115
+ token cache (isolated by `appId`).
116
+
117
+ Add a second bot via CLI:
118
+
119
+ ```bash
120
+ Durar channels add --channel qqbot --account bot2 --token "222222222:secret-of-bot-2"
121
+ ```
122
+
123
+ ### Voice (STT / TTS)
124
+
125
+ STT and TTS support two-level configuration with priority fallback:
126
+
127
+ | Setting | Plugin-specific | Framework fallback |
128
+ | ------- | -------------------- | ----------------------------- |
129
+ | STT | `channels.qqbot.stt` | `tools.media.audio.models[0]` |
130
+ | TTS | `channels.qqbot.tts` | `messages.tts` |
131
+
132
+ ```json5
133
+ {
134
+ channels: {
135
+ qqbot: {
136
+ stt: {
137
+ provider: "your-provider",
138
+ model: "your-stt-model",
139
+ },
140
+ tts: {
141
+ provider: "your-provider",
142
+ model: "your-tts-model",
143
+ voice: "your-voice",
144
+ },
145
+ },
146
+ },
147
+ }
148
+ ```
149
+
150
+ Set `enabled: false` on either to disable.
151
+
152
+ Outbound audio upload/transcode behavior can also be tuned with
153
+ `channels.qqbot.audioFormatPolicy`:
154
+
155
+ - `sttDirectFormats`
156
+ - `uploadDirectFormats`
157
+ - `transcodeEnabled`
158
+
159
+ ## Target formats
160
+
161
+ | Format | Description |
162
+ | -------------------------- | ------------------ |
163
+ | `qqbot:c2c:OPENID` | Private chat (C2C) |
164
+ | `qqbot:group:GROUP_OPENID` | Group chat |
165
+ | `qqbot:channel:CHANNEL_ID` | Guild channel |
166
+
167
+ > Each bot has its own set of user OpenIDs. An OpenID received by Bot A **cannot**
168
+ > be used to send messages via Bot B.
169
+
170
+ ## Slash commands
171
+
172
+ Built-in commands intercepted before the AI queue:
173
+
174
+ | Command | Description |
175
+ | -------------- | ------------------------------------ |
176
+ | `/bot-ping` | Latency test |
177
+ | `/bot-version` | Show the Durar framework version |
178
+ | `/bot-help` | List all commands |
179
+ | `/bot-upgrade` | Show the QQBot upgrade guide link |
180
+ | `/bot-logs` | Export recent gateway logs as a file |
181
+
182
+ Append `?` to any command for usage help (for example `/bot-upgrade ?`).
183
+
184
+ ## Troubleshooting
185
+
186
+ - **Bot replies "gone to Mars":** credentials not configured or Gateway not started.
187
+ - **No inbound messages:** verify `appId` and `clientSecret` are correct, and the
188
+ bot is enabled on the QQ Open Platform.
189
+ - **Setup with `--token-file` still shows unconfigured:** `--token-file` only sets
190
+ the AppSecret. You still need `appId` in config or `QQBOT_APP_ID`.
191
+ - **Proactive messages not arriving:** QQ may intercept bot-initiated messages if
192
+ the user hasn't interacted recently.
193
+ - **Voice not transcribed:** ensure STT is configured and the provider is reachable.
@@ -0,0 +1,337 @@
1
+ ---
2
+ summary: "Signal support via signal-cli (JSON-RPC + SSE), setup paths, and number model"
3
+ read_when:
4
+ - Setting up Signal support
5
+ - Debugging Signal send/receive
6
+ title: "Signal"
7
+ ---
8
+
9
+ # Signal (signal-cli)
10
+
11
+ Status: external CLI integration. Gateway talks to `signal-cli` over HTTP JSON-RPC + SSE.
12
+
13
+ ## Prerequisites
14
+
15
+ - Durar installed on your server (Linux flow below tested on Ubuntu 24).
16
+ - `signal-cli` available on the host where the gateway runs.
17
+ - A phone number that can receive one verification SMS (for SMS registration path).
18
+ - Browser access for Signal captcha (`signalcaptchas.org`) during registration.
19
+
20
+ ## Quick setup (beginner)
21
+
22
+ 1. Use a **separate Signal number** for the bot (recommended).
23
+ 2. Install `signal-cli` (Java required if you use the JVM build).
24
+ 3. Choose one setup path:
25
+ - **Path A (QR link):** `signal-cli link -n "Durar"` and scan with Signal.
26
+ - **Path B (SMS register):** register a dedicated number with captcha + SMS verification.
27
+ 4. Configure Durar and restart the gateway.
28
+ 5. Send a first DM and approve pairing (`Durar pairing approve signal <CODE>`).
29
+
30
+ Minimal config:
31
+
32
+ ```json5
33
+ {
34
+ channels: {
35
+ signal: {
36
+ enabled: true,
37
+ account: "+15551234567",
38
+ cliPath: "signal-cli",
39
+ dmPolicy: "pairing",
40
+ allowFrom: ["+15557654321"],
41
+ },
42
+ },
43
+ }
44
+ ```
45
+
46
+ Field reference:
47
+
48
+ | Field | Description |
49
+ | ----------- | ------------------------------------------------- |
50
+ | `account` | Bot phone number in E.164 format (`+15551234567`) |
51
+ | `cliPath` | Path to `signal-cli` (`signal-cli` if on `PATH`) |
52
+ | `dmPolicy` | DM access policy (`pairing` recommended) |
53
+ | `allowFrom` | Phone numbers or `uuid:<id>` values allowed to DM |
54
+
55
+ ## What it is
56
+
57
+ - Signal channel via `signal-cli` (not embedded libsignal).
58
+ - Deterministic routing: replies always go back to Signal.
59
+ - DMs share the agent's main session; groups are isolated (`agent:<agentId>:signal:group:<groupId>`).
60
+
61
+ ## Config writes
62
+
63
+ By default, Signal is allowed to write config updates triggered by `/config set|unset` (requires `commands.config: true`).
64
+
65
+ Disable with:
66
+
67
+ ```json5
68
+ {
69
+ channels: { signal: { configWrites: false } },
70
+ }
71
+ ```
72
+
73
+ ## The number model (important)
74
+
75
+ - The gateway connects to a **Signal device** (the `signal-cli` account).
76
+ - If you run the bot on **your personal Signal account**, it will ignore your own messages (loop protection).
77
+ - For "I text the bot and it replies," use a **separate bot number**.
78
+
79
+ ## Setup path A: link existing Signal account (QR)
80
+
81
+ 1. Install `signal-cli` (JVM or native build).
82
+ 2. Link a bot account:
83
+ - `signal-cli link -n "Durar"` then scan the QR in Signal.
84
+ 3. Configure Signal and start the gateway.
85
+
86
+ Example:
87
+
88
+ ```json5
89
+ {
90
+ channels: {
91
+ signal: {
92
+ enabled: true,
93
+ account: "+15551234567",
94
+ cliPath: "signal-cli",
95
+ dmPolicy: "pairing",
96
+ allowFrom: ["+15557654321"],
97
+ },
98
+ },
99
+ }
100
+ ```
101
+
102
+ Multi-account support: use `channels.signal.accounts` with per-account config and optional `name`. See [`gateway/configuration`](/gateway/configuration-reference#multi-account-all-channels) for the shared pattern.
103
+
104
+ ## Setup path B: register dedicated bot number (SMS, Linux)
105
+
106
+ Use this when you want a dedicated bot number instead of linking an existing Signal app account.
107
+
108
+ 1. Get a number that can receive SMS (or voice verification for landlines).
109
+ - Use a dedicated bot number to avoid account/session conflicts.
110
+ 2. Install `signal-cli` on the gateway host:
111
+
112
+ ```bash
113
+ VERSION=$(curl -Ls -o /dev/null -w %{url_effective} https://github.com/AsamK/signal-cli/releases/latest | sed -e 's/^.*\/v//')
114
+ curl -L -O "https://github.com/AsamK/signal-cli/releases/download/v${VERSION}/signal-cli-${VERSION}-Linux-native.tar.gz"
115
+ sudo tar xf "signal-cli-${VERSION}-Linux-native.tar.gz" -C /opt
116
+ sudo ln -sf /opt/signal-cli /usr/local/bin/
117
+ signal-cli --version
118
+ ```
119
+
120
+ If you use the JVM build (`signal-cli-${VERSION}.tar.gz`), install JRE 25+ first.
121
+ Keep `signal-cli` updated; upstream notes that old releases can break as Signal server APIs change.
122
+
123
+ 3. Register and verify the number:
124
+
125
+ ```bash
126
+ signal-cli -a +<BOT_PHONE_NUMBER> register
127
+ ```
128
+
129
+ If captcha is required:
130
+
131
+ 1. Open `https://signalcaptchas.org/registration/generate.html`.
132
+ 2. Complete captcha, copy the `signalcaptcha://...` link target from "Open Signal".
133
+ 3. Run from the same external IP as the browser session when possible.
134
+ 4. Run registration again immediately (captcha tokens expire quickly):
135
+
136
+ ```bash
137
+ signal-cli -a +<BOT_PHONE_NUMBER> register --captcha '<SIGNALCAPTCHA_URL>'
138
+ signal-cli -a +<BOT_PHONE_NUMBER> verify <VERIFICATION_CODE>
139
+ ```
140
+
141
+ 4. Configure Durar, restart gateway, verify channel:
142
+
143
+ ```bash
144
+ # If you run the gateway as a user systemd service:
145
+ systemctl --user restart Durar-gateway.service
146
+
147
+ # Then verify:
148
+ Durar doctor
149
+ Durar channels status --probe
150
+ ```
151
+
152
+ 5. Pair your DM sender:
153
+ - Send any message to the bot number.
154
+ - Approve code on the server: `Durar pairing approve signal <PAIRING_CODE>`.
155
+ - Save the bot number as a contact on your phone to avoid "Unknown contact".
156
+
157
+ Important: registering a phone number account with `signal-cli` can de-authenticate the main Signal app session for that number. Prefer a dedicated bot number, or use QR link mode if you need to keep your existing phone app setup.
158
+
159
+ Upstream references:
160
+
161
+ - `signal-cli` README: `https://github.com/AsamK/signal-cli`
162
+ - Captcha flow: `https://github.com/AsamK/signal-cli/wiki/Registration-with-captcha`
163
+ - Linking flow: `https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)`
164
+
165
+ ## External daemon mode (httpUrl)
166
+
167
+ If you want to manage `signal-cli` yourself (slow JVM cold starts, container init, or shared CPUs), run the daemon separately and point Durar at it:
168
+
169
+ ```json5
170
+ {
171
+ channels: {
172
+ signal: {
173
+ httpUrl: "http://127.0.0.1:8080",
174
+ autoStart: false,
175
+ },
176
+ },
177
+ }
178
+ ```
179
+
180
+ This skips auto-spawn and the startup wait inside Durar. For slow starts when auto-spawning, set `channels.signal.startupTimeoutMs`.
181
+
182
+ ## Access control (DMs + groups)
183
+
184
+ DMs:
185
+
186
+ - Default: `channels.signal.dmPolicy = "pairing"`.
187
+ - Unknown senders receive a pairing code; messages are ignored until approved (codes expire after 1 hour).
188
+ - Approve via:
189
+ - `Durar pairing list signal`
190
+ - `Durar pairing approve signal <CODE>`
191
+ - Pairing is the default token exchange for Signal DMs. Details: [Pairing](/channels/pairing)
192
+ - UUID-only senders (from `sourceUuid`) are stored as `uuid:<id>` in `channels.signal.allowFrom`.
193
+
194
+ Groups:
195
+
196
+ - `channels.signal.groupPolicy = open | allowlist | disabled`.
197
+ - `channels.signal.groupAllowFrom` controls who can trigger in groups when `allowlist` is set.
198
+ - `channels.signal.groups["<group-id>" | "*"]` can override group behavior with `requireMention`, `tools`, and `toolsBySender`.
199
+ - Use `channels.signal.accounts.<id>.groups` for per-account overrides in multi-account setups.
200
+ - Runtime note: if `channels.signal` is completely missing, runtime falls back to `groupPolicy="allowlist"` for group checks (even if `channels.defaults.groupPolicy` is set).
201
+
202
+ ## How it works (behavior)
203
+
204
+ - `signal-cli` runs as a daemon; the gateway reads events via SSE.
205
+ - Inbound messages are normalized into the shared channel envelope.
206
+ - Replies always route back to the same number or group.
207
+
208
+ ## Media + limits
209
+
210
+ - Outbound text is chunked to `channels.signal.textChunkLimit` (default 4000).
211
+ - Optional newline chunking: set `channels.signal.chunkMode="newline"` to split on blank lines (paragraph boundaries) before length chunking.
212
+ - Attachments supported (base64 fetched from `signal-cli`).
213
+ - Default media cap: `channels.signal.mediaMaxMb` (default 8).
214
+ - Use `channels.signal.ignoreAttachments` to skip downloading media.
215
+ - Group history context uses `channels.signal.historyLimit` (or `channels.signal.accounts.*.historyLimit`), falling back to `messages.groupChat.historyLimit`. Set `0` to disable (default 50).
216
+
217
+ ## Typing + read receipts
218
+
219
+ - **Typing indicators**: Durar sends typing signals via `signal-cli sendTyping` and refreshes them while a reply is running.
220
+ - **Read receipts**: when `channels.signal.sendReadReceipts` is true, Durar forwards read receipts for allowed DMs.
221
+ - Signal-cli does not expose read receipts for groups.
222
+
223
+ ## Reactions (message tool)
224
+
225
+ - Use `message action=react` with `channel=signal`.
226
+ - Targets: sender E.164 or UUID (use `uuid:<id>` from pairing output; bare UUID works too).
227
+ - `messageId` is the Signal timestamp for the message you’re reacting to.
228
+ - Group reactions require `targetAuthor` or `targetAuthorUuid`.
229
+
230
+ Examples:
231
+
232
+ ```
233
+ message action=react channel=signal target=uuid:123e4567-e89b-12d3-a456-426614174000 messageId=1737630212345 emoji=πŸ”₯
234
+ message action=react channel=signal target=+15551234567 messageId=1737630212345 emoji=πŸ”₯ remove=true
235
+ message action=react channel=signal target=signal:group:<groupId> targetAuthor=uuid:<sender-uuid> messageId=1737630212345 emoji=βœ…
236
+ ```
237
+
238
+ Config:
239
+
240
+ - `channels.signal.actions.reactions`: enable/disable reaction actions (default true).
241
+ - `channels.signal.reactionLevel`: `off | ack | minimal | extensive`.
242
+ - `off`/`ack` disables agent reactions (message tool `react` will error).
243
+ - `minimal`/`extensive` enables agent reactions and sets the guidance level.
244
+ - Per-account overrides: `channels.signal.accounts.<id>.actions.reactions`, `channels.signal.accounts.<id>.reactionLevel`.
245
+
246
+ ## Delivery targets (CLI/cron)
247
+
248
+ - DMs: `signal:+15551234567` (or plain E.164).
249
+ - UUID DMs: `uuid:<id>` (or bare UUID).
250
+ - Groups: `signal:group:<groupId>`.
251
+ - Usernames: `username:<name>` (if supported by your Signal account).
252
+
253
+ ## Troubleshooting
254
+
255
+ Run this ladder first:
256
+
257
+ ```bash
258
+ Durar status
259
+ Durar gateway status
260
+ Durar logs --follow
261
+ Durar doctor
262
+ Durar channels status --probe
263
+ ```
264
+
265
+ Then confirm DM pairing state if needed:
266
+
267
+ ```bash
268
+ Durar pairing list signal
269
+ ```
270
+
271
+ Common failures:
272
+
273
+ - Daemon reachable but no replies: verify account/daemon settings (`httpUrl`, `account`) and receive mode.
274
+ - DMs ignored: sender is pending pairing approval.
275
+ - Group messages ignored: group sender/mention gating blocks delivery.
276
+ - Config validation errors after edits: run `Durar doctor --fix`.
277
+ - Signal missing from diagnostics: confirm `channels.signal.enabled: true`.
278
+
279
+ Extra checks:
280
+
281
+ ```bash
282
+ Durar pairing list signal
283
+ pgrep -af signal-cli
284
+ grep -i "signal" "/tmp/Durar/Durar-$(date +%Y-%m-%d).log" | tail -20
285
+ ```
286
+
287
+ For triage flow: [/channels/troubleshooting](/channels/troubleshooting).
288
+
289
+ ## Security notes
290
+
291
+ - `signal-cli` stores account keys locally (typically `~/.local/share/signal-cli/data/`).
292
+ - Back up Signal account state before server migration or rebuild.
293
+ - Keep `channels.signal.dmPolicy: "pairing"` unless you explicitly want broader DM access.
294
+ - SMS verification is only needed for registration or recovery flows, but losing control of the number/account can complicate re-registration.
295
+
296
+ ## Configuration reference (Signal)
297
+
298
+ Full configuration: [Configuration](/gateway/configuration)
299
+
300
+ Provider options:
301
+
302
+ - `channels.signal.enabled`: enable/disable channel startup.
303
+ - `channels.signal.account`: E.164 for the bot account.
304
+ - `channels.signal.cliPath`: path to `signal-cli`.
305
+ - `channels.signal.httpUrl`: full daemon URL (overrides host/port).
306
+ - `channels.signal.httpHost`, `channels.signal.httpPort`: daemon bind (default 127.0.0.1:8080).
307
+ - `channels.signal.autoStart`: auto-spawn daemon (default true if `httpUrl` unset).
308
+ - `channels.signal.startupTimeoutMs`: startup wait timeout in ms (cap 120000).
309
+ - `channels.signal.receiveMode`: `on-start | manual`.
310
+ - `channels.signal.ignoreAttachments`: skip attachment downloads.
311
+ - `channels.signal.ignoreStories`: ignore stories from the daemon.
312
+ - `channels.signal.sendReadReceipts`: forward read receipts.
313
+ - `channels.signal.dmPolicy`: `pairing | allowlist | open | disabled` (default: pairing).
314
+ - `channels.signal.allowFrom`: DM allowlist (E.164 or `uuid:<id>`). `open` requires `"*"`. Signal has no usernames; use phone/UUID ids.
315
+ - `channels.signal.groupPolicy`: `open | allowlist | disabled` (default: allowlist).
316
+ - `channels.signal.groupAllowFrom`: group sender allowlist.
317
+ - `channels.signal.groups`: per-group overrides keyed by Signal group id (or `"*"`). Supported fields: `requireMention`, `tools`, `toolsBySender`.
318
+ - `channels.signal.accounts.<id>.groups`: per-account version of `channels.signal.groups` for multi-account setups.
319
+ - `channels.signal.historyLimit`: max group messages to include as context (0 disables).
320
+ - `channels.signal.dmHistoryLimit`: DM history limit in user turns. Per-user overrides: `channels.signal.dms["<phone_or_uuid>"].historyLimit`.
321
+ - `channels.signal.textChunkLimit`: outbound chunk size (chars).
322
+ - `channels.signal.chunkMode`: `length` (default) or `newline` to split on blank lines (paragraph boundaries) before length chunking.
323
+ - `channels.signal.mediaMaxMb`: inbound/outbound media cap (MB).
324
+
325
+ Related global options:
326
+
327
+ - `agents.list[].groupChat.mentionPatterns` (Signal does not support native mentions).
328
+ - `messages.groupChat.mentionPatterns` (global fallback).
329
+ - `messages.responsePrefix`.
330
+
331
+ ## Related
332
+
333
+ - [Channels Overview](/channels) β€” all supported channels
334
+ - [Pairing](/channels/pairing) β€” DM authentication and pairing flow
335
+ - [Groups](/channels/groups) β€” group chat behavior and mention gating
336
+ - [Channel Routing](/channels/channel-routing) β€” session routing for messages
337
+ - [Security](/gateway/security) β€” access model and hardening