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,246 @@
1
+ ---
2
+ summary: "Agent workspace: location, layout, and backup strategy"
3
+ read_when:
4
+ - You need to explain the agent workspace or its file layout
5
+ - You want to back up or migrate an agent workspace
6
+ title: "Agent Workspace"
7
+ ---
8
+
9
+ # Agent workspace
10
+
11
+ The workspace is the agent's home. It is the only working directory used for
12
+ file tools and for workspace context. Keep it private and treat it as memory.
13
+
14
+ This is separate from `~/.Durar/`, which stores config, credentials, and
15
+ sessions.
16
+
17
+ **Important:** the workspace is the **default cwd**, not a hard sandbox. Tools
18
+ resolve relative paths against the workspace, but absolute paths can still reach
19
+ elsewhere on the host unless sandboxing is enabled. If you need isolation, use
20
+ [`agents.defaults.sandbox`](/gateway/sandboxing) (and/or per‑agent sandbox config).
21
+ When sandboxing is enabled and `workspaceAccess` is not `"rw"`, tools operate
22
+ inside a sandbox workspace under `~/.Durar/sandboxes`, not your host workspace.
23
+
24
+ ## Default location
25
+
26
+ - Default: `~/.Durar/workspace`
27
+ - If `Durar_PROFILE` is set and not `"default"`, the default becomes
28
+ `~/.Durar/workspace-<profile>`.
29
+ - Override in `~/.Durar/Durar.json`:
30
+
31
+ ```json5
32
+ {
33
+ agent: {
34
+ workspace: "~/.Durar/workspace",
35
+ },
36
+ }
37
+ ```
38
+
39
+ `Durar onboard`, `Durar configure`, or `Durar setup` will create the
40
+ workspace and seed the bootstrap files if they are missing.
41
+ Sandbox seed copies only accept regular in-workspace files; symlink/hardlink
42
+ aliases that resolve outside the source workspace are ignored.
43
+
44
+ If you already manage the workspace files yourself, you can disable bootstrap
45
+ file creation:
46
+
47
+ ```json5
48
+ { agent: { skipBootstrap: true } }
49
+ ```
50
+
51
+ ## Extra workspace folders
52
+
53
+ Older installs may have created `~/Durar`. Keeping multiple workspace
54
+ directories around can cause confusing auth or state drift, because only one
55
+ workspace is active at a time.
56
+
57
+ **Recommendation:** keep a single active workspace. If you no longer use the
58
+ extra folders, archive or move them to Trash (for example `trash ~/Durar`).
59
+ If you intentionally keep multiple workspaces, make sure
60
+ `agents.defaults.workspace` points to the active one.
61
+
62
+ `Durar doctor` warns when it detects extra workspace directories.
63
+
64
+ ## Workspace file map (what each file means)
65
+
66
+ These are the standard files Durar expects inside the workspace:
67
+
68
+ - `AGENTS.md`
69
+ - Operating instructions for the agent and how it should use memory.
70
+ - Loaded at the start of every session.
71
+ - Good place for rules, priorities, and "how to behave" details.
72
+
73
+ - `SOUL.md`
74
+ - Persona, tone, and boundaries.
75
+ - Loaded every session.
76
+ - Guide: [SOUL.md Personality Guide](/concepts/soul)
77
+
78
+ - `USER.md`
79
+ - Who the user is and how to address them.
80
+ - Loaded every session.
81
+
82
+ - `IDENTITY.md`
83
+ - The agent's name, vibe, and emoji.
84
+ - Created/updated during the bootstrap ritual.
85
+
86
+ - `TOOLS.md`
87
+ - Notes about your local tools and conventions.
88
+ - Does not control tool availability; it is only guidance.
89
+
90
+ - `HEARTBEAT.md`
91
+ - Optional tiny checklist for heartbeat runs.
92
+ - Keep it short to avoid token burn.
93
+
94
+ - `BOOT.md`
95
+ - Optional startup checklist executed on gateway restart when internal hooks are enabled.
96
+ - Keep it short; use the message tool for outbound sends.
97
+
98
+ - `BOOTSTRAP.md`
99
+ - One-time first-run ritual.
100
+ - Only created for a brand-new workspace.
101
+ - Delete it after the ritual is complete.
102
+
103
+ - `memory/YYYY-MM-DD.md`
104
+ - Daily memory log (one file per day).
105
+ - Recommended to read today + yesterday on session start.
106
+
107
+ - `MEMORY.md` (optional)
108
+ - Curated long-term memory.
109
+ - Only load in the main, private session (not shared/group contexts).
110
+
111
+ See [Memory](/concepts/memory) for the workflow and automatic memory flush.
112
+
113
+ - `skills/` (optional)
114
+ - Workspace-specific skills.
115
+ - Highest-precedence skill location for that workspace.
116
+ - Overrides project agent skills, personal agent skills, managed skills, bundled skills, and `skills.load.extraDirs` when names collide.
117
+
118
+ - `canvas/` (optional)
119
+ - Canvas UI files for node displays (for example `canvas/index.html`).
120
+
121
+ If any bootstrap file is missing, Durar injects a "missing file" marker into
122
+ the session and continues. Large bootstrap files are truncated when injected;
123
+ adjust limits with `agents.defaults.bootstrapMaxChars` (default: 20000) and
124
+ `agents.defaults.bootstrapTotalMaxChars` (default: 150000).
125
+ `Durar setup` can recreate missing defaults without overwriting existing
126
+ files.
127
+
128
+ ## What is NOT in the workspace
129
+
130
+ These live under `~/.Durar/` and should NOT be committed to the workspace repo:
131
+
132
+ - `~/.Durar/Durar.json` (config)
133
+ - `~/.Durar/agents/<agentId>/agent/auth-profiles.json` (model auth profiles: OAuth + API keys)
134
+ - `~/.Durar/credentials/` (channel/provider state plus legacy OAuth import data)
135
+ - `~/.Durar/agents/<agentId>/sessions/` (session transcripts + metadata)
136
+ - `~/.Durar/skills/` (managed skills)
137
+
138
+ If you need to migrate sessions or config, copy them separately and keep them
139
+ out of version control.
140
+
141
+ ## Git backup (recommended, private)
142
+
143
+ Treat the workspace as private memory. Put it in a **private** git repo so it is
144
+ backed up and recoverable.
145
+
146
+ Run these steps on the machine where the Gateway runs (that is where the
147
+ workspace lives).
148
+
149
+ ### 1) Initialize the repo
150
+
151
+ If git is installed, brand-new workspaces are initialized automatically. If this
152
+ workspace is not already a repo, run:
153
+
154
+ ```bash
155
+ cd ~/.Durar/workspace
156
+ git init
157
+ git add AGENTS.md SOUL.md TOOLS.md IDENTITY.md USER.md HEARTBEAT.md memory/
158
+ git commit -m "Add agent workspace"
159
+ ```
160
+
161
+ ### 2) Add a private remote (beginner-friendly options)
162
+
163
+ Option A: GitHub web UI
164
+
165
+ 1. Create a new **private** repository on GitHub.
166
+ 2. Do not initialize with a README (avoids merge conflicts).
167
+ 3. Copy the HTTPS remote URL.
168
+ 4. Add the remote and push:
169
+
170
+ ```bash
171
+ git branch -M main
172
+ git remote add origin <https-url>
173
+ git push -u origin main
174
+ ```
175
+
176
+ Option B: GitHub CLI (`gh`)
177
+
178
+ ```bash
179
+ gh auth login
180
+ gh repo create Durar-workspace --private --source . --remote origin --push
181
+ ```
182
+
183
+ Option C: GitLab web UI
184
+
185
+ 1. Create a new **private** repository on GitLab.
186
+ 2. Do not initialize with a README (avoids merge conflicts).
187
+ 3. Copy the HTTPS remote URL.
188
+ 4. Add the remote and push:
189
+
190
+ ```bash
191
+ git branch -M main
192
+ git remote add origin <https-url>
193
+ git push -u origin main
194
+ ```
195
+
196
+ ### 3) Ongoing updates
197
+
198
+ ```bash
199
+ git status
200
+ git add .
201
+ git commit -m "Update memory"
202
+ git push
203
+ ```
204
+
205
+ ## Do not commit secrets
206
+
207
+ Even in a private repo, avoid storing secrets in the workspace:
208
+
209
+ - API keys, OAuth tokens, passwords, or private credentials.
210
+ - Anything under `~/.Durar/`.
211
+ - Raw dumps of chats or sensitive attachments.
212
+
213
+ If you must store sensitive references, use placeholders and keep the real
214
+ secret elsewhere (password manager, environment variables, or `~/.Durar/`).
215
+
216
+ Suggested `.gitignore` starter:
217
+
218
+ ```gitignore
219
+ .DS_Store
220
+ .env
221
+ **/*.key
222
+ **/*.pem
223
+ **/secrets*
224
+ ```
225
+
226
+ ## Moving the workspace to a new machine
227
+
228
+ 1. Clone the repo to the desired path (default `~/.Durar/workspace`).
229
+ 2. Set `agents.defaults.workspace` to that path in `~/.Durar/Durar.json`.
230
+ 3. Run `Durar setup --workspace <path>` to seed any missing files.
231
+ 4. If you need sessions, copy `~/.Durar/agents/<agentId>/sessions/` from the
232
+ old machine separately.
233
+
234
+ ## Advanced notes
235
+
236
+ - Multi-agent routing can use different workspaces per agent. See
237
+ [Channel routing](/channels/channel-routing) for routing configuration.
238
+ - If `agents.defaults.sandbox` is enabled, non-main sessions can use per-session sandbox
239
+ workspaces under `agents.defaults.sandbox.workspaceRoot`.
240
+
241
+ ## Related
242
+
243
+ - [Standing Orders](/automation/standing-orders) — persistent instructions in workspace files
244
+ - [Heartbeat](/gateway/heartbeat) — HEARTBEAT.md workspace file
245
+ - [Session](/concepts/session) — session storage paths
246
+ - [Sandboxing](/gateway/sandboxing) — workspace access in sandboxed environments
@@ -0,0 +1,129 @@
1
+ ---
2
+ summary: "Agent runtime, workspace contract, and session bootstrap"
3
+ read_when:
4
+ - Changing agent runtime, workspace bootstrap, or session behavior
5
+ title: "Agent Runtime"
6
+ ---
7
+
8
+ # Agent Runtime
9
+
10
+ Durar runs a single embedded agent runtime.
11
+
12
+ ## Workspace (required)
13
+
14
+ Durar uses a single agent workspace directory (`agents.defaults.workspace`) as the agent’s **only** working directory (`cwd`) for tools and context.
15
+
16
+ Recommended: use `Durar setup` to create `~/.Durar/Durar.json` if missing and initialize the workspace files.
17
+
18
+ Full workspace layout + backup guide: [Agent workspace](/concepts/agent-workspace)
19
+
20
+ If `agents.defaults.sandbox` is enabled, non-main sessions can override this with
21
+ per-session workspaces under `agents.defaults.sandbox.workspaceRoot` (see
22
+ [Gateway configuration](/gateway/configuration)).
23
+
24
+ ## Bootstrap files (injected)
25
+
26
+ Inside `agents.defaults.workspace`, Durar expects these user-editable files:
27
+
28
+ - `AGENTS.md` — operating instructions + “memory”
29
+ - `SOUL.md` — persona, boundaries, tone
30
+ - `TOOLS.md` — user-maintained tool notes (e.g. `imsg`, `sag`, conventions)
31
+ - `BOOTSTRAP.md` — one-time first-run ritual (deleted after completion)
32
+ - `IDENTITY.md` — agent name/vibe/emoji
33
+ - `USER.md` — user profile + preferred address
34
+
35
+ On the first turn of a new session, Durar injects the contents of these files directly into the agent context.
36
+
37
+ Blank files are skipped. Large files are trimmed and truncated with a marker so prompts stay lean (read the file for full content).
38
+
39
+ If a file is missing, Durar injects a single “missing file” marker line (and `Durar setup` will create a safe default template).
40
+
41
+ `BOOTSTRAP.md` is only created for a **brand new workspace** (no other bootstrap files present). If you delete it after completing the ritual, it should not be recreated on later restarts.
42
+
43
+ To disable bootstrap file creation entirely (for pre-seeded workspaces), set:
44
+
45
+ ```json5
46
+ { agent: { skipBootstrap: true } }
47
+ ```
48
+
49
+ ## Built-in tools
50
+
51
+ Core tools (read/exec/edit/write and related system tools) are always available,
52
+ subject to tool policy. `apply_patch` is optional and gated by
53
+ `tools.exec.applyPatch`. `TOOLS.md` does **not** control which tools exist; it’s
54
+ guidance for how _you_ want them used.
55
+
56
+ ## Skills
57
+
58
+ Durar loads skills from these locations (highest precedence first):
59
+
60
+ - Workspace: `<workspace>/skills`
61
+ - Project agent skills: `<workspace>/.agents/skills`
62
+ - Personal agent skills: `~/.agents/skills`
63
+ - Managed/local: `~/.Durar/skills`
64
+ - Bundled (shipped with the install)
65
+ - Extra skill folders: `skills.load.extraDirs`
66
+
67
+ Skills can be gated by config/env (see `skills` in [Gateway configuration](/gateway/configuration)).
68
+
69
+ ## Runtime boundaries
70
+
71
+ The embedded agent runtime is built on the Pi agent core (models, tools, and
72
+ prompt pipeline). Session management, discovery, tool wiring, and channel
73
+ delivery are Durar-owned layers on top of that core.
74
+
75
+ ## Sessions
76
+
77
+ Session transcripts are stored as JSONL at:
78
+
79
+ - `~/.Durar/agents/<agentId>/sessions/<SessionId>.jsonl`
80
+
81
+ The session ID is stable and chosen by Durar.
82
+ Legacy session folders from other tools are not read.
83
+
84
+ ## Steering while streaming
85
+
86
+ When queue mode is `steer`, inbound messages are injected into the current run.
87
+ Queued steering is delivered **after the current assistant turn finishes
88
+ executing its tool calls**, before the next LLM call. Steering no longer skips
89
+ remaining tool calls from the current assistant message; it injects the queued
90
+ message at the next model boundary instead.
91
+
92
+ When queue mode is `followup` or `collect`, inbound messages are held until the
93
+ current turn ends, then a new agent turn starts with the queued payloads. See
94
+ [Queue](/concepts/queue) for mode + debounce/cap behavior.
95
+
96
+ Block streaming sends completed assistant blocks as soon as they finish; it is
97
+ **off by default** (`agents.defaults.blockStreamingDefault: "off"`).
98
+ Tune the boundary via `agents.defaults.blockStreamingBreak` (`text_end` vs `message_end`; defaults to text_end).
99
+ Control soft block chunking with `agents.defaults.blockStreamingChunk` (defaults to
100
+ 800–1200 chars; prefers paragraph breaks, then newlines; sentences last).
101
+ Coalesce streamed chunks with `agents.defaults.blockStreamingCoalesce` to reduce
102
+ single-line spam (idle-based merging before send). Non-Telegram channels require
103
+ explicit `*.blockStreaming: true` to enable block replies.
104
+ Verbose tool summaries are emitted at tool start (no debounce); Control UI
105
+ streams tool output via agent events when available.
106
+ More details: [Streaming + chunking](/concepts/streaming).
107
+
108
+ ## Model refs
109
+
110
+ Model refs in config (for example `agents.defaults.model` and `agents.defaults.models`) are parsed by splitting on the **first** `/`.
111
+
112
+ - Use `provider/model` when configuring models.
113
+ - If the model ID itself contains `/` (OpenRouter-style), include the provider prefix (example: `openrouter/moonshotai/kimi-k2`).
114
+ - If you omit the provider, Durar tries an alias first, then a unique
115
+ configured-provider match for that exact model id, and only then falls back
116
+ to the configured default provider. If that provider no longer exposes the
117
+ configured default model, Durar falls back to the first configured
118
+ provider/model instead of surfacing a stale removed-provider default.
119
+
120
+ ## Configuration (minimal)
121
+
122
+ At minimum, set:
123
+
124
+ - `agents.defaults.workspace`
125
+ - `channels.whatsapp.allowFrom` (strongly recommended)
126
+
127
+ ---
128
+
129
+ _Next: [Group Chats](/channels/group-messages)_ 🦞
@@ -0,0 +1,156 @@
1
+ ---
2
+ summary: "WebSocket gateway architecture, components, and client flows"
3
+ read_when:
4
+ - Working on gateway protocol, clients, or transports
5
+ title: "Gateway Architecture"
6
+ ---
7
+
8
+ # Gateway architecture
9
+
10
+ ## Overview
11
+
12
+ - A single long‑lived **Gateway** owns all messaging surfaces (WhatsApp via
13
+ Baileys, Telegram via grammY, Slack, Discord, Signal, iMessage, WebChat).
14
+ - Control-plane clients (macOS app, CLI, web UI, automations) connect to the
15
+ Gateway over **WebSocket** on the configured bind host (default
16
+ `127.0.0.1:18789`).
17
+ - **Nodes** (macOS/iOS/Android/headless) also connect over **WebSocket**, but
18
+ declare `role: node` with explicit caps/commands.
19
+ - One Gateway per host; it is the only place that opens a WhatsApp session.
20
+ - The **canvas host** is served by the Gateway HTTP server under:
21
+ - `/__Durar__/canvas/` (agent-editable HTML/CSS/JS)
22
+ - `/__Durar__/a2ui/` (A2UI host)
23
+ It uses the same port as the Gateway (default `18789`).
24
+
25
+ ## Components and flows
26
+
27
+ ### Gateway (daemon)
28
+
29
+ - Maintains provider connections.
30
+ - Exposes a typed WS API (requests, responses, server‑push events).
31
+ - Validates inbound frames against JSON Schema.
32
+ - Emits events like `agent`, `chat`, `presence`, `health`, `heartbeat`, `cron`.
33
+
34
+ ### Clients (mac app / CLI / web admin)
35
+
36
+ - One WS connection per client.
37
+ - Send requests (`health`, `status`, `send`, `agent`, `system-presence`).
38
+ - Subscribe to events (`tick`, `agent`, `presence`, `shutdown`).
39
+
40
+ ### Nodes (macOS / iOS / Android / headless)
41
+
42
+ - Connect to the **same WS server** with `role: node`.
43
+ - Provide a device identity in `connect`; pairing is **device‑based** (role `node`) and
44
+ approval lives in the device pairing store.
45
+ - Expose commands like `canvas.*`, `camera.*`, `screen.record`, `location.get`.
46
+
47
+ Protocol details:
48
+
49
+ - [Gateway protocol](/gateway/protocol)
50
+
51
+ ### WebChat
52
+
53
+ - Static UI that uses the Gateway WS API for chat history and sends.
54
+ - In remote setups, connects through the same SSH/Tailscale tunnel as other
55
+ clients.
56
+
57
+ ## Connection lifecycle (single client)
58
+
59
+ ```mermaid
60
+ sequenceDiagram
61
+ participant Client
62
+ participant Gateway
63
+
64
+ Client->>Gateway: req:connect
65
+ Gateway-->>Client: res (ok)
66
+ Note right of Gateway: or res error + close
67
+ Note left of Client: payload=hello-ok<br>snapshot: presence + health
68
+
69
+ Gateway-->>Client: event:presence
70
+ Gateway-->>Client: event:tick
71
+
72
+ Client->>Gateway: req:agent
73
+ Gateway-->>Client: res:agent<br>ack {runId, status:"accepted"}
74
+ Gateway-->>Client: event:agent<br>(streaming)
75
+ Gateway-->>Client: res:agent<br>final {runId, status, summary}
76
+ ```
77
+
78
+ ## Wire protocol (summary)
79
+
80
+ - Transport: WebSocket, text frames with JSON payloads.
81
+ - First frame **must** be `connect`.
82
+ - After handshake:
83
+ - Requests: `{type:"req", id, method, params}` → `{type:"res", id, ok, payload|error}`
84
+ - Events: `{type:"event", event, payload, seq?, stateVersion?}`
85
+ - `hello-ok.features.methods` / `events` are discovery metadata, not a
86
+ generated dump of every callable helper route.
87
+ - Shared-secret auth uses `connect.params.auth.token` or
88
+ `connect.params.auth.password`, depending on the configured gateway auth mode.
89
+ - Identity-bearing modes such as Tailscale Serve
90
+ (`gateway.auth.allowTailscale: true`) or non-loopback
91
+ `gateway.auth.mode: "trusted-proxy"` satisfy auth from request headers
92
+ instead of `connect.params.auth.*`.
93
+ - Private-ingress `gateway.auth.mode: "none"` disables shared-secret auth
94
+ entirely; keep that mode off public/untrusted ingress.
95
+ - Idempotency keys are required for side‑effecting methods (`send`, `agent`) to
96
+ safely retry; the server keeps a short‑lived dedupe cache.
97
+ - Nodes must include `role: "node"` plus caps/commands/permissions in `connect`.
98
+
99
+ ## Pairing + local trust
100
+
101
+ - All WS clients (operators + nodes) include a **device identity** on `connect`.
102
+ - New device IDs require pairing approval; the Gateway issues a **device token**
103
+ for subsequent connects.
104
+ - Direct local loopback connects can be auto-approved to keep same-host UX
105
+ smooth.
106
+ - Durar also has a narrow backend/container-local self-connect path for
107
+ trusted shared-secret helper flows.
108
+ - Tailnet and LAN connects, including same-host tailnet binds, still require
109
+ explicit pairing approval.
110
+ - All connects must sign the `connect.challenge` nonce.
111
+ - Signature payload `v3` also binds `platform` + `deviceFamily`; the gateway
112
+ pins paired metadata on reconnect and requires repair pairing for metadata
113
+ changes.
114
+ - **Non‑local** connects still require explicit approval.
115
+ - Gateway auth (`gateway.auth.*`) still applies to **all** connections, local or
116
+ remote.
117
+
118
+ Details: [Gateway protocol](/gateway/protocol), [Pairing](/channels/pairing),
119
+ [Security](/gateway/security).
120
+
121
+ ## Protocol typing and codegen
122
+
123
+ - TypeBox schemas define the protocol.
124
+ - JSON Schema is generated from those schemas.
125
+ - Swift models are generated from the JSON Schema.
126
+
127
+ ## Remote access
128
+
129
+ - Preferred: Tailscale or VPN.
130
+ - Alternative: SSH tunnel
131
+
132
+ ```bash
133
+ ssh -N -L 18789:127.0.0.1:18789 user@host
134
+ ```
135
+
136
+ - The same handshake + auth token apply over the tunnel.
137
+ - TLS + optional pinning can be enabled for WS in remote setups.
138
+
139
+ ## Operations snapshot
140
+
141
+ - Start: `Durar gateway` (foreground, logs to stdout).
142
+ - Health: `health` over WS (also included in `hello-ok`).
143
+ - Supervision: launchd/systemd for auto‑restart.
144
+
145
+ ## Invariants
146
+
147
+ - Exactly one Gateway controls a single Baileys session per host.
148
+ - Handshake is mandatory; any non‑JSON or non‑connect first frame is a hard close.
149
+ - Events are not replayed; clients must refresh on gaps.
150
+
151
+ ## Related
152
+
153
+ - [Agent Loop](/concepts/agent-loop) — detailed agent execution cycle
154
+ - [Gateway Protocol](/gateway/protocol) — WebSocket protocol contract
155
+ - [Queue](/concepts/queue) — command queue and concurrency
156
+ - [Security](/gateway/security) — trust model and hardening
@@ -0,0 +1,122 @@
1
+ ---
2
+ summary: "How Durar summarizes long conversations to stay within model limits"
3
+ read_when:
4
+ - You want to understand auto-compaction and /compact
5
+ - You are debugging long sessions hitting context limits
6
+ title: "Compaction"
7
+ ---
8
+
9
+ # Compaction
10
+
11
+ Every model has a context window -- the maximum number of tokens it can process.
12
+ When a conversation approaches that limit, Durar **compacts** older messages
13
+ into a summary so the chat can continue.
14
+
15
+ ## How it works
16
+
17
+ 1. Older conversation turns are summarized into a compact entry.
18
+ 2. The summary is saved in the session transcript.
19
+ 3. Recent messages are kept intact.
20
+
21
+ When Durar splits history into compaction chunks, it keeps assistant tool
22
+ calls paired with their matching `toolResult` entries. If a split point lands
23
+ inside a tool block, Durar moves the boundary so the pair stays together and
24
+ the current unsummarized tail is preserved.
25
+
26
+ The full conversation history stays on disk. Compaction only changes what the
27
+ model sees on the next turn.
28
+
29
+ ## Auto-compaction
30
+
31
+ Auto-compaction is on by default. It runs when the session nears the context
32
+ limit, or when the model returns a context-overflow error (in which case
33
+ Durar compacts and retries). Typical overflow signatures include
34
+ `request_too_large`, `context length exceeded`, `input exceeds the maximum
35
+ number of tokens`, `input token count exceeds the maximum number of input
36
+ tokens`, `input is too long for the model`, and `ollama error: context length
37
+ exceeded`.
38
+
39
+ <Info>
40
+ Before compacting, Durar automatically reminds the agent to save important
41
+ notes to [memory](/concepts/memory) files. This prevents context loss.
42
+ </Info>
43
+
44
+ ## Manual compaction
45
+
46
+ Type `/compact` in any chat to force a compaction. Add instructions to guide
47
+ the summary:
48
+
49
+ ```
50
+ /compact Focus on the API design decisions
51
+ ```
52
+
53
+ ## Using a different model
54
+
55
+ By default, compaction uses your agent's primary model. You can use a more
56
+ capable model for better summaries:
57
+
58
+ ```json5
59
+ {
60
+ agents: {
61
+ defaults: {
62
+ compaction: {
63
+ model: "openrouter/anthropic/claude-sonnet-4-6",
64
+ },
65
+ },
66
+ },
67
+ }
68
+ ```
69
+
70
+ ## Compaction start notice
71
+
72
+ By default, compaction runs silently. To show a brief notice when compaction
73
+ starts, enable `notifyUser`:
74
+
75
+ ```json5
76
+ {
77
+ agents: {
78
+ defaults: {
79
+ compaction: {
80
+ notifyUser: true,
81
+ },
82
+ },
83
+ },
84
+ }
85
+ ```
86
+
87
+ When enabled, the user sees a short message (for example, "Compacting
88
+ context...") at the start of each compaction run.
89
+
90
+ ## Compaction vs pruning
91
+
92
+ | | Compaction | Pruning |
93
+ | ---------------- | ----------------------------- | -------------------------------- |
94
+ | **What it does** | Summarizes older conversation | Trims old tool results |
95
+ | **Saved?** | Yes (in session transcript) | No (in-memory only, per request) |
96
+ | **Scope** | Entire conversation | Tool results only |
97
+
98
+ [Session pruning](/concepts/session-pruning) is a lighter-weight complement that
99
+ trims tool output without summarizing.
100
+
101
+ ## Troubleshooting
102
+
103
+ **Compacting too often?** The model's context window may be small, or tool
104
+ outputs may be large. Try enabling
105
+ [session pruning](/concepts/session-pruning).
106
+
107
+ **Context feels stale after compaction?** Use `/compact Focus on <topic>` to
108
+ guide the summary, or enable the [memory flush](/concepts/memory) so notes
109
+ survive.
110
+
111
+ **Need a clean slate?** `/new` starts a fresh session without compacting.
112
+
113
+ For advanced configuration (reserve tokens, identifier preservation, custom
114
+ context engines, OpenAI server-side compaction), see the
115
+ [Session Management Deep Dive](/reference/session-management-compaction).
116
+
117
+ ## Related
118
+
119
+ - [Session](/concepts/session) — session management and lifecycle
120
+ - [Session Pruning](/concepts/session-pruning) — trimming tool results
121
+ - [Context](/concepts/context) — how context is built for agent turns
122
+ - [Hooks](/automation/hooks) — compaction lifecycle hooks (before_compaction, after_compaction)