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,631 @@
1
+ ---
2
+ summary: "Schema-accurate configuration examples for common Durar setups"
3
+ read_when:
4
+ - Learning how to configure Durar
5
+ - Looking for configuration examples
6
+ - Setting up Durar for the first time
7
+ title: "Configuration Examples"
8
+ ---
9
+
10
+ # Configuration Examples
11
+
12
+ Examples below are aligned with the current config schema. For the exhaustive reference and per-field notes, see [Configuration](/gateway/configuration).
13
+
14
+ ## Quick start
15
+
16
+ ### Absolute minimum
17
+
18
+ ```json5
19
+ {
20
+ agent: { workspace: "~/.Durar/workspace" },
21
+ channels: { whatsapp: { allowFrom: ["+15555550123"] } },
22
+ }
23
+ ```
24
+
25
+ Save to `~/.Durar/Durar.json` and you can DM the bot from that number.
26
+
27
+ ### Recommended starter
28
+
29
+ ```json5
30
+ {
31
+ identity: {
32
+ name: "Clawd",
33
+ theme: "helpful assistant",
34
+ emoji: "🦞",
35
+ },
36
+ agent: {
37
+ workspace: "~/.Durar/workspace",
38
+ model: { primary: "anthropic/claude-sonnet-4-6" },
39
+ },
40
+ channels: {
41
+ whatsapp: {
42
+ allowFrom: ["+15555550123"],
43
+ groups: { "*": { requireMention: true } },
44
+ },
45
+ },
46
+ }
47
+ ```
48
+
49
+ ## Expanded example (major options)
50
+
51
+ > JSON5 lets you use comments and trailing commas. Regular JSON works too.
52
+
53
+ ```json5
54
+ {
55
+ // Environment + shell
56
+ env: {
57
+ OPENROUTER_API_KEY: "sk-or-...",
58
+ vars: {
59
+ GROQ_API_KEY: "gsk-...",
60
+ },
61
+ shellEnv: {
62
+ enabled: true,
63
+ timeoutMs: 15000,
64
+ },
65
+ },
66
+
67
+ // Auth profile metadata (secrets live in auth-profiles.json)
68
+ auth: {
69
+ profiles: {
70
+ "anthropic:default": { provider: "anthropic", mode: "api_key" },
71
+ "anthropic:work": { provider: "anthropic", mode: "api_key" },
72
+ "openai:default": { provider: "openai", mode: "api_key" },
73
+ "openai-codex:personal": { provider: "openai-codex", mode: "oauth" },
74
+ },
75
+ order: {
76
+ anthropic: ["anthropic:default", "anthropic:work"],
77
+ openai: ["openai:default"],
78
+ "openai-codex": ["openai-codex:personal"],
79
+ },
80
+ },
81
+
82
+ // Identity
83
+ identity: {
84
+ name: "Samantha",
85
+ theme: "helpful sloth",
86
+ emoji: "🦥",
87
+ },
88
+
89
+ // Logging
90
+ logging: {
91
+ level: "info",
92
+ file: "/tmp/Durar/Durar.log",
93
+ consoleLevel: "info",
94
+ consoleStyle: "pretty",
95
+ redactSensitive: "tools",
96
+ },
97
+
98
+ // Message formatting
99
+ messages: {
100
+ messagePrefix: "[Durar]",
101
+ responsePrefix: ">",
102
+ ackReaction: "👀",
103
+ ackReactionScope: "group-mentions",
104
+ },
105
+
106
+ // Routing + queue
107
+ routing: {
108
+ groupChat: {
109
+ mentionPatterns: ["@Durar", "Durar"],
110
+ historyLimit: 50,
111
+ },
112
+ queue: {
113
+ mode: "collect",
114
+ debounceMs: 1000,
115
+ cap: 20,
116
+ drop: "summarize",
117
+ byChannel: {
118
+ whatsapp: "collect",
119
+ telegram: "collect",
120
+ discord: "collect",
121
+ slack: "collect",
122
+ signal: "collect",
123
+ imessage: "collect",
124
+ webchat: "collect",
125
+ },
126
+ },
127
+ },
128
+
129
+ // Tooling
130
+ tools: {
131
+ media: {
132
+ audio: {
133
+ enabled: true,
134
+ maxBytes: 20971520,
135
+ models: [
136
+ { provider: "openai", model: "gpt-4o-mini-transcribe" },
137
+ // Optional CLI fallback (Whisper binary):
138
+ // { type: "cli", command: "whisper", args: ["--model", "base", "{{MediaPath}}"] }
139
+ ],
140
+ timeoutSeconds: 120,
141
+ },
142
+ video: {
143
+ enabled: true,
144
+ maxBytes: 52428800,
145
+ models: [{ provider: "google", model: "gemini-3-flash-preview" }],
146
+ },
147
+ },
148
+ },
149
+
150
+ // Session behavior
151
+ session: {
152
+ scope: "per-sender",
153
+ dmScope: "per-channel-peer", // recommended for multi-user inboxes
154
+ reset: {
155
+ mode: "daily",
156
+ atHour: 4,
157
+ idleMinutes: 60,
158
+ },
159
+ resetByChannel: {
160
+ discord: { mode: "idle", idleMinutes: 10080 },
161
+ },
162
+ resetTriggers: ["/new", "/reset"],
163
+ store: "~/.Durar/agents/default/sessions/sessions.json",
164
+ maintenance: {
165
+ mode: "warn",
166
+ pruneAfter: "30d",
167
+ maxEntries: 500,
168
+ rotateBytes: "10mb",
169
+ resetArchiveRetention: "30d", // duration or false
170
+ maxDiskBytes: "500mb", // optional
171
+ highWaterBytes: "400mb", // optional (defaults to 80% of maxDiskBytes)
172
+ },
173
+ typingIntervalSeconds: 5,
174
+ sendPolicy: {
175
+ default: "allow",
176
+ rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }],
177
+ },
178
+ },
179
+
180
+ // Channels
181
+ channels: {
182
+ whatsapp: {
183
+ dmPolicy: "pairing",
184
+ allowFrom: ["+15555550123"],
185
+ groupPolicy: "allowlist",
186
+ groupAllowFrom: ["+15555550123"],
187
+ groups: { "*": { requireMention: true } },
188
+ },
189
+
190
+ telegram: {
191
+ enabled: true,
192
+ botToken: "YOUR_TELEGRAM_BOT_TOKEN",
193
+ allowFrom: ["123456789"],
194
+ groupPolicy: "allowlist",
195
+ groupAllowFrom: ["123456789"],
196
+ groups: { "*": { requireMention: true } },
197
+ },
198
+
199
+ discord: {
200
+ enabled: true,
201
+ token: "YOUR_DISCORD_BOT_TOKEN",
202
+ dm: { enabled: true, allowFrom: ["123456789012345678"] },
203
+ guilds: {
204
+ "123456789012345678": {
205
+ slug: "friends-of-Durar",
206
+ requireMention: false,
207
+ channels: {
208
+ general: { allow: true },
209
+ help: { allow: true, requireMention: true },
210
+ },
211
+ },
212
+ },
213
+ },
214
+
215
+ slack: {
216
+ enabled: true,
217
+ botToken: "xoxb-REPLACE_ME",
218
+ appToken: "xapp-REPLACE_ME",
219
+ channels: {
220
+ "#general": { allow: true, requireMention: true },
221
+ },
222
+ dm: { enabled: true, allowFrom: ["U123"] },
223
+ slashCommand: {
224
+ enabled: true,
225
+ name: "Durar",
226
+ sessionPrefix: "slack:slash",
227
+ ephemeral: true,
228
+ },
229
+ },
230
+ },
231
+
232
+ // Agent runtime
233
+ agents: {
234
+ defaults: {
235
+ workspace: "~/.Durar/workspace",
236
+ userTimezone: "America/Chicago",
237
+ model: {
238
+ primary: "anthropic/claude-sonnet-4-6",
239
+ fallbacks: ["anthropic/claude-opus-4-6", "openai/gpt-5.4"],
240
+ },
241
+ imageModel: {
242
+ primary: "openrouter/anthropic/claude-sonnet-4-6",
243
+ },
244
+ models: {
245
+ "anthropic/claude-opus-4-6": { alias: "opus" },
246
+ "anthropic/claude-sonnet-4-6": { alias: "sonnet" },
247
+ "openai/gpt-5.4": { alias: "gpt" },
248
+ },
249
+ skills: ["github", "weather"], // inherited by agents that omit list[].skills
250
+ thinkingDefault: "low",
251
+ verboseDefault: "off",
252
+ elevatedDefault: "on",
253
+ blockStreamingDefault: "off",
254
+ blockStreamingBreak: "text_end",
255
+ blockStreamingChunk: {
256
+ minChars: 800,
257
+ maxChars: 1200,
258
+ breakPreference: "paragraph",
259
+ },
260
+ blockStreamingCoalesce: {
261
+ idleMs: 1000,
262
+ },
263
+ humanDelay: {
264
+ mode: "natural",
265
+ },
266
+ timeoutSeconds: 600,
267
+ mediaMaxMb: 5,
268
+ typingIntervalSeconds: 5,
269
+ maxConcurrent: 3,
270
+ heartbeat: {
271
+ every: "30m",
272
+ model: "anthropic/claude-sonnet-4-6",
273
+ target: "last",
274
+ directPolicy: "allow", // allow (default) | block
275
+ to: "+15555550123",
276
+ prompt: "HEARTBEAT",
277
+ ackMaxChars: 300,
278
+ },
279
+ memorySearch: {
280
+ provider: "gemini",
281
+ model: "gemini-embedding-001",
282
+ remote: {
283
+ apiKey: "${GEMINI_API_KEY}",
284
+ },
285
+ extraPaths: ["../team-docs", "/srv/shared-notes"],
286
+ },
287
+ sandbox: {
288
+ mode: "non-main",
289
+ scope: "session", // preferred over legacy perSession: true
290
+ workspaceRoot: "~/.Durar/sandboxes",
291
+ docker: {
292
+ image: "Durar-sandbox:bookworm-slim",
293
+ workdir: "/workspace",
294
+ readOnlyRoot: true,
295
+ tmpfs: ["/tmp", "/var/tmp", "/run"],
296
+ network: "none",
297
+ user: "1000:1000",
298
+ },
299
+ browser: {
300
+ enabled: false,
301
+ },
302
+ },
303
+ },
304
+ list: [
305
+ {
306
+ id: "main",
307
+ default: true,
308
+ // inherits defaults.skills -> github, weather
309
+ thinkingDefault: "high", // per-agent thinking override
310
+ reasoningDefault: "on", // per-agent reasoning visibility
311
+ fastModeDefault: false, // per-agent fast mode
312
+ },
313
+ {
314
+ id: "quick",
315
+ skills: [], // no skills for this agent
316
+ fastModeDefault: true, // this agent always runs fast
317
+ thinkingDefault: "off",
318
+ },
319
+ ],
320
+ },
321
+
322
+ tools: {
323
+ allow: ["exec", "process", "read", "write", "edit", "apply_patch"],
324
+ deny: ["browser", "canvas"],
325
+ exec: {
326
+ backgroundMs: 10000,
327
+ timeoutSec: 1800,
328
+ cleanupMs: 1800000,
329
+ },
330
+ elevated: {
331
+ enabled: true,
332
+ allowFrom: {
333
+ whatsapp: ["+15555550123"],
334
+ telegram: ["123456789"],
335
+ discord: ["123456789012345678"],
336
+ slack: ["U123"],
337
+ signal: ["+15555550123"],
338
+ imessage: ["user@example.com"],
339
+ webchat: ["session:demo"],
340
+ },
341
+ },
342
+ },
343
+
344
+ // Custom model providers
345
+ models: {
346
+ mode: "merge",
347
+ providers: {
348
+ "custom-proxy": {
349
+ baseUrl: "http://localhost:4000/v1",
350
+ apiKey: "LITELLM_KEY",
351
+ api: "openai-responses",
352
+ authHeader: true,
353
+ headers: { "X-Proxy-Region": "us-west" },
354
+ models: [
355
+ {
356
+ id: "llama-3.1-8b",
357
+ name: "Llama 3.1 8B",
358
+ api: "openai-responses",
359
+ reasoning: false,
360
+ input: ["text"],
361
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
362
+ contextWindow: 128000,
363
+ maxTokens: 32000,
364
+ },
365
+ ],
366
+ },
367
+ },
368
+ },
369
+
370
+ // Cron jobs
371
+ cron: {
372
+ enabled: true,
373
+ store: "~/.Durar/cron/cron.json",
374
+ maxConcurrentRuns: 2,
375
+ sessionRetention: "24h",
376
+ runLog: {
377
+ maxBytes: "2mb",
378
+ keepLines: 2000,
379
+ },
380
+ },
381
+
382
+ // Webhooks
383
+ hooks: {
384
+ enabled: true,
385
+ path: "/hooks",
386
+ token: "shared-secret",
387
+ presets: ["gmail"],
388
+ transformsDir: "~/.Durar/hooks/transforms",
389
+ mappings: [
390
+ {
391
+ id: "gmail-hook",
392
+ match: { path: "gmail" },
393
+ action: "agent",
394
+ wakeMode: "now",
395
+ name: "Gmail",
396
+ sessionKey: "hook:gmail:{{messages[0].id}}",
397
+ messageTemplate: "From: {{messages[0].from}}\nSubject: {{messages[0].subject}}",
398
+ textTemplate: "{{messages[0].snippet}}",
399
+ deliver: true,
400
+ channel: "last",
401
+ to: "+15555550123",
402
+ thinking: "low",
403
+ timeoutSeconds: 300,
404
+ transform: {
405
+ module: "gmail.js",
406
+ export: "transformGmail",
407
+ },
408
+ },
409
+ ],
410
+ gmail: {
411
+ account: "Durar@gmail.com",
412
+ label: "INBOX",
413
+ topic: "projects/<project-id>/topics/gog-gmail-watch",
414
+ subscription: "gog-gmail-watch-push",
415
+ pushToken: "shared-push-token",
416
+ hookUrl: "http://127.0.0.1:18789/hooks/gmail",
417
+ includeBody: true,
418
+ maxBytes: 20000,
419
+ renewEveryMinutes: 720,
420
+ serve: { bind: "127.0.0.1", port: 8788, path: "/" },
421
+ tailscale: { mode: "funnel", path: "/gmail-pubsub" },
422
+ },
423
+ },
424
+
425
+ // Gateway + networking
426
+ gateway: {
427
+ mode: "local",
428
+ port: 18789,
429
+ bind: "loopback",
430
+ controlUi: { enabled: true, basePath: "/Durar" },
431
+ auth: {
432
+ mode: "token",
433
+ token: "gateway-token",
434
+ allowTailscale: true,
435
+ },
436
+ tailscale: { mode: "serve", resetOnExit: false },
437
+ remote: { url: "ws://gateway.tailnet:18789", token: "remote-token" },
438
+ reload: { mode: "hybrid", debounceMs: 300 },
439
+ },
440
+
441
+ skills: {
442
+ allowBundled: ["gemini", "peekaboo"],
443
+ load: {
444
+ extraDirs: ["~/Projects/agent-scripts/skills"],
445
+ },
446
+ install: {
447
+ preferBrew: true,
448
+ nodeManager: "npm", // npm | pnpm | yarn | bun
449
+ },
450
+ entries: {
451
+ "image-lab": {
452
+ enabled: true,
453
+ apiKey: "GEMINI_KEY_HERE",
454
+ env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },
455
+ },
456
+ peekaboo: { enabled: true },
457
+ },
458
+ },
459
+ }
460
+ ```
461
+
462
+ ## Common patterns
463
+
464
+ ### Shared skill baseline with one override
465
+
466
+ ```json5
467
+ {
468
+ agents: {
469
+ defaults: {
470
+ workspace: "~/.Durar/workspace",
471
+ skills: ["github", "weather"],
472
+ },
473
+ list: [
474
+ { id: "main", default: true },
475
+ { id: "docs", workspace: "~/.Durar/workspace-docs", skills: ["docs-search"] },
476
+ ],
477
+ },
478
+ }
479
+ ```
480
+
481
+ - `agents.defaults.skills` is the shared baseline.
482
+ - `agents.list[].skills` replaces that baseline for one agent.
483
+ - Use `skills: []` when an agent should see no skills.
484
+
485
+ ### Multi-platform setup
486
+
487
+ ```json5
488
+ {
489
+ agent: { workspace: "~/.Durar/workspace" },
490
+ channels: {
491
+ whatsapp: { allowFrom: ["+15555550123"] },
492
+ telegram: {
493
+ enabled: true,
494
+ botToken: "YOUR_TOKEN",
495
+ allowFrom: ["123456789"],
496
+ },
497
+ discord: {
498
+ enabled: true,
499
+ token: "YOUR_TOKEN",
500
+ dm: { allowFrom: ["123456789012345678"] },
501
+ },
502
+ },
503
+ }
504
+ ```
505
+
506
+ ### Secure DM mode (shared inbox / multi-user DMs)
507
+
508
+ If more than one person can DM your bot (multiple entries in `allowFrom`, pairing approvals for multiple people, or `dmPolicy: "open"`), enable **secure DM mode** so DMs from different senders don’t share one context by default:
509
+
510
+ ```json5
511
+ {
512
+ // Secure DM mode (recommended for multi-user or sensitive DM agents)
513
+ session: { dmScope: "per-channel-peer" },
514
+
515
+ channels: {
516
+ // Example: WhatsApp multi-user inbox
517
+ whatsapp: {
518
+ dmPolicy: "allowlist",
519
+ allowFrom: ["+15555550123", "+15555550124"],
520
+ },
521
+
522
+ // Example: Discord multi-user inbox
523
+ discord: {
524
+ enabled: true,
525
+ token: "YOUR_DISCORD_BOT_TOKEN",
526
+ dm: { enabled: true, allowFrom: ["123456789012345678", "987654321098765432"] },
527
+ },
528
+ },
529
+ }
530
+ ```
531
+
532
+ For Discord/Slack/Google Chat/Microsoft Teams/Mattermost/IRC, sender authorization is ID-first by default.
533
+ Only enable direct mutable name/email/nick matching with each channel's `dangerouslyAllowNameMatching: true` if you explicitly accept that risk.
534
+
535
+ ### Anthropic API key + MiniMax fallback
536
+
537
+ ```json5
538
+ {
539
+ auth: {
540
+ profiles: {
541
+ "anthropic:api": {
542
+ provider: "anthropic",
543
+ mode: "api_key",
544
+ },
545
+ },
546
+ order: {
547
+ anthropic: ["anthropic:api"],
548
+ },
549
+ },
550
+ models: {
551
+ providers: {
552
+ minimax: {
553
+ baseUrl: "https://api.minimax.io/anthropic",
554
+ api: "anthropic-messages",
555
+ apiKey: "${MINIMAX_API_KEY}",
556
+ },
557
+ },
558
+ },
559
+ agent: {
560
+ workspace: "~/.Durar/workspace",
561
+ model: {
562
+ primary: "anthropic/claude-opus-4-6",
563
+ fallbacks: ["minimax/MiniMax-M2.7"],
564
+ },
565
+ },
566
+ }
567
+ ```
568
+
569
+ ### Work bot (restricted access)
570
+
571
+ ```json5
572
+ {
573
+ identity: {
574
+ name: "WorkBot",
575
+ theme: "professional assistant",
576
+ },
577
+ agent: {
578
+ workspace: "~/work-Durar",
579
+ elevated: { enabled: false },
580
+ },
581
+ channels: {
582
+ slack: {
583
+ enabled: true,
584
+ botToken: "xoxb-...",
585
+ channels: {
586
+ "#engineering": { allow: true, requireMention: true },
587
+ "#general": { allow: true, requireMention: true },
588
+ },
589
+ },
590
+ },
591
+ }
592
+ ```
593
+
594
+ ### Local models only
595
+
596
+ ```json5
597
+ {
598
+ agent: {
599
+ workspace: "~/.Durar/workspace",
600
+ model: { primary: "lmstudio/my-local-model" },
601
+ },
602
+ models: {
603
+ mode: "merge",
604
+ providers: {
605
+ lmstudio: {
606
+ baseUrl: "http://127.0.0.1:1234/v1",
607
+ apiKey: "lmstudio",
608
+ api: "openai-responses",
609
+ models: [
610
+ {
611
+ id: "my-local-model",
612
+ name: "Local Model",
613
+ reasoning: false,
614
+ input: ["text"],
615
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
616
+ contextWindow: 196608,
617
+ maxTokens: 8192,
618
+ },
619
+ ],
620
+ },
621
+ },
622
+ },
623
+ }
624
+ ```
625
+
626
+ ## Tips
627
+
628
+ - If you set `dmPolicy: "open"`, the matching `allowFrom` list must include `"*"`.
629
+ - Provider IDs differ (phone numbers, user IDs, channel IDs). Use the provider docs to confirm the format.
630
+ - Optional sections to add later: `web`, `browser`, `ui`, `discovery`, `canvasHost`, `talk`, `signal`, `imessage`.
631
+ - See [Providers](/providers) and [Troubleshooting](/gateway/troubleshooting) for deeper setup notes.