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,100 @@
1
+ ---
2
+ summary: "Run agent turns from the CLI and optionally deliver replies to channels"
3
+ read_when:
4
+ - You want to trigger agent runs from scripts or the command line
5
+ - You need to deliver agent replies to a chat channel programmatically
6
+ title: "Agent Send"
7
+ ---
8
+
9
+ # Agent Send
10
+
11
+ `Durar agent` runs a single agent turn from the command line without needing
12
+ an inbound chat message. Use it for scripted workflows, testing, and
13
+ programmatic delivery.
14
+
15
+ ## Quick start
16
+
17
+ <Steps>
18
+ <Step title="Run a simple agent turn">
19
+ ```bash
20
+ Durar agent --message "What is the weather today?"
21
+ ```
22
+
23
+ This sends the message through the Gateway and prints the reply.
24
+
25
+ </Step>
26
+
27
+ <Step title="Target a specific agent or session">
28
+ ```bash
29
+ # Target a specific agent
30
+ Durar agent --agent ops --message "Summarize logs"
31
+
32
+ # Target a phone number (derives session key)
33
+ Durar agent --to +15555550123 --message "Status update"
34
+
35
+ # Reuse an existing session
36
+ Durar agent --session-id abc123 --message "Continue the task"
37
+ ```
38
+
39
+ </Step>
40
+
41
+ <Step title="Deliver the reply to a channel">
42
+ ```bash
43
+ # Deliver to WhatsApp (default channel)
44
+ Durar agent --to +15555550123 --message "Report ready" --deliver
45
+
46
+ # Deliver to Slack
47
+ Durar agent --agent ops --message "Generate report" \
48
+ --deliver --reply-channel slack --reply-to "#reports"
49
+ ```
50
+
51
+ </Step>
52
+ </Steps>
53
+
54
+ ## Flags
55
+
56
+ | Flag | Description |
57
+ | ----------------------------- | ----------------------------------------------------------- |
58
+ | `--message \<text\>` | Message to send (required) |
59
+ | `--to \<dest\>` | Derive session key from a target (phone, chat id) |
60
+ | `--agent \<id\>` | Target a configured agent (uses its `main` session) |
61
+ | `--session-id \<id\>` | Reuse an existing session by id |
62
+ | `--local` | Force local embedded runtime (skip Gateway) |
63
+ | `--deliver` | Send the reply to a chat channel |
64
+ | `--channel \<name\>` | Delivery channel (whatsapp, telegram, discord, slack, etc.) |
65
+ | `--reply-to \<target\>` | Delivery target override |
66
+ | `--reply-channel \<name\>` | Delivery channel override |
67
+ | `--reply-account \<id\>` | Delivery account id override |
68
+ | `--thinking \<level\>` | Set thinking level (off, minimal, low, medium, high, xhigh) |
69
+ | `--verbose \<on\|full\|off\>` | Set verbose level |
70
+ | `--timeout \<seconds\>` | Override agent timeout |
71
+ | `--json` | Output structured JSON |
72
+
73
+ ## Behavior
74
+
75
+ - By default, the CLI goes **through the Gateway**. Add `--local` to force the
76
+ embedded runtime on the current machine.
77
+ - If the Gateway is unreachable, the CLI **falls back** to the local embedded run.
78
+ - Session selection: `--to` derives the session key (group/channel targets
79
+ preserve isolation; direct chats collapse to `main`).
80
+ - Thinking and verbose flags persist into the session store.
81
+ - Output: plain text by default, or `--json` for structured payload + metadata.
82
+
83
+ ## Examples
84
+
85
+ ```bash
86
+ # Simple turn with JSON output
87
+ Durar agent --to +15555550123 --message "Trace logs" --verbose on --json
88
+
89
+ # Turn with thinking level
90
+ Durar agent --session-id 1234 --message "Summarize inbox" --thinking medium
91
+
92
+ # Deliver to a different channel than the session
93
+ Durar agent --agent ops --message "Alert" --deliver --reply-channel telegram --reply-to "@admin"
94
+ ```
95
+
96
+ ## Related
97
+
98
+ - [Agent CLI reference](/cli/agent)
99
+ - [Sub-agents](/tools/subagents) — background sub-agent spawning
100
+ - [Sessions](/concepts/session) — how session keys work
@@ -0,0 +1,52 @@
1
+ ---
2
+ summary: "Apply multi-file patches with the apply_patch tool"
3
+ read_when:
4
+ - You need structured file edits across multiple files
5
+ - You want to document or debug patch-based edits
6
+ title: "apply_patch Tool"
7
+ ---
8
+
9
+ # apply_patch tool
10
+
11
+ Apply file changes using a structured patch format. This is ideal for multi-file
12
+ or multi-hunk edits where a single `edit` call would be brittle.
13
+
14
+ The tool accepts a single `input` string that wraps one or more file operations:
15
+
16
+ ```
17
+ *** Begin Patch
18
+ *** Add File: path/to/file.txt
19
+ +line 1
20
+ +line 2
21
+ *** Update File: src/app.ts
22
+ @@
23
+ -old line
24
+ +new line
25
+ *** Delete File: obsolete.txt
26
+ *** End Patch
27
+ ```
28
+
29
+ ## Parameters
30
+
31
+ - `input` (required): Full patch contents including `*** Begin Patch` and `*** End Patch`.
32
+
33
+ ## Notes
34
+
35
+ - Patch paths support relative paths (from the workspace directory) and absolute paths.
36
+ - `tools.exec.applyPatch.workspaceOnly` defaults to `true` (workspace-contained). Set it to `false` only if you intentionally want `apply_patch` to write/delete outside the workspace directory.
37
+ - Use `*** Move to:` within an `*** Update File:` hunk to rename files.
38
+ - `*** End of File` marks an EOF-only insert when needed.
39
+ - Available by default for OpenAI and OpenAI Codex models. Set
40
+ `tools.exec.applyPatch.enabled: false` to disable it.
41
+ - Optionally gate by model via
42
+ `tools.exec.applyPatch.allowModels`.
43
+ - Config is only under `tools.exec`.
44
+
45
+ ## Example
46
+
47
+ ```json
48
+ {
49
+ "tool": "apply_patch",
50
+ "input": "*** Begin Patch\n*** Update File: src/index.ts\n@@\n-const foo = 1\n+const foo = 2\n*** End Patch"
51
+ }
52
+ ```
@@ -0,0 +1,107 @@
1
+ ---
2
+ summary: "Brave Search API setup for web_search"
3
+ read_when:
4
+ - You want to use Brave Search for web_search
5
+ - You need a BRAVE_API_KEY or plan details
6
+ title: "Brave Search"
7
+ ---
8
+
9
+ # Brave Search API
10
+
11
+ Durar supports Brave Search API as a `web_search` provider.
12
+
13
+ ## Get an API key
14
+
15
+ 1. Create a Brave Search API account at [https://brave.com/search/api/](https://brave.com/search/api/)
16
+ 2. In the dashboard, choose the **Search** plan and generate an API key.
17
+ 3. Store the key in config or set `BRAVE_API_KEY` in the Gateway environment.
18
+
19
+ ## Config example
20
+
21
+ ```json5
22
+ {
23
+ plugins: {
24
+ entries: {
25
+ brave: {
26
+ config: {
27
+ webSearch: {
28
+ apiKey: "BRAVE_API_KEY_HERE",
29
+ mode: "web", // or "llm-context"
30
+ },
31
+ },
32
+ },
33
+ },
34
+ },
35
+ tools: {
36
+ web: {
37
+ search: {
38
+ provider: "brave",
39
+ maxResults: 5,
40
+ timeoutSeconds: 30,
41
+ },
42
+ },
43
+ },
44
+ }
45
+ ```
46
+
47
+ Provider-specific Brave search settings now live under `plugins.entries.brave.config.webSearch.*`.
48
+ Legacy `tools.web.search.apiKey` still loads through the compatibility shim, but it is no longer the canonical config path.
49
+
50
+ `webSearch.mode` controls the Brave transport:
51
+
52
+ - `web` (default): normal Brave web search with titles, URLs, and snippets
53
+ - `llm-context`: Brave LLM Context API with pre-extracted text chunks and sources for grounding
54
+
55
+ ## Tool parameters
56
+
57
+ | Parameter | Description |
58
+ | ------------- | ------------------------------------------------------------------- |
59
+ | `query` | Search query (required) |
60
+ | `count` | Number of results to return (1-10, default: 5) |
61
+ | `country` | 2-letter ISO country code (e.g., "US", "DE") |
62
+ | `language` | ISO 639-1 language code for search results (e.g., "en", "de", "fr") |
63
+ | `search_lang` | Brave search-language code (e.g., `en`, `en-gb`, `zh-hans`) |
64
+ | `ui_lang` | ISO language code for UI elements |
65
+ | `freshness` | Time filter: `day` (24h), `week`, `month`, or `year` |
66
+ | `date_after` | Only results published after this date (YYYY-MM-DD) |
67
+ | `date_before` | Only results published before this date (YYYY-MM-DD) |
68
+
69
+ **Examples:**
70
+
71
+ ```javascript
72
+ // Country and language-specific search
73
+ await web_search({
74
+ query: "renewable energy",
75
+ country: "DE",
76
+ language: "de",
77
+ });
78
+
79
+ // Recent results (past week)
80
+ await web_search({
81
+ query: "AI news",
82
+ freshness: "week",
83
+ });
84
+
85
+ // Date range search
86
+ await web_search({
87
+ query: "AI developments",
88
+ date_after: "2024-01-01",
89
+ date_before: "2024-06-30",
90
+ });
91
+ ```
92
+
93
+ ## Notes
94
+
95
+ - Durar uses the Brave **Search** plan. If you have a legacy subscription (e.g. the original Free plan with 2,000 queries/month), it remains valid but does not include newer features like LLM Context or higher rate limits.
96
+ - Each Brave plan includes **\$5/month in free credit** (renewing). The Search plan costs \$5 per 1,000 requests, so the credit covers 1,000 queries/month. Set your usage limit in the Brave dashboard to avoid unexpected charges. See the [Brave API portal](https://brave.com/search/api/) for current plans.
97
+ - The Search plan includes the LLM Context endpoint and AI inference rights. Storing results to train or tune models requires a plan with explicit storage rights. See the Brave [Terms of Service](https://api-dashboard.search.brave.com/terms-of-service).
98
+ - `llm-context` mode returns grounded source entries instead of the normal web-search snippet shape.
99
+ - `llm-context` mode does not support `ui_lang`, `freshness`, `date_after`, or `date_before`.
100
+ - `ui_lang` must include a region subtag like `en-US`.
101
+ - Results are cached for 15 minutes by default (configurable via `cacheTtlMinutes`).
102
+
103
+ ## Related
104
+
105
+ - [Web Search overview](/tools/web) -- all providers and auto-detection
106
+ - [Perplexity Search](/tools/perplexity-search) -- structured results with domain filtering
107
+ - [Exa Search](/tools/exa-search) -- neural search with content extraction
@@ -0,0 +1,145 @@
1
+ ---
2
+ summary: "Fix Chrome/Brave/Edge/Chromium CDP startup issues for Durar browser control on Linux"
3
+ read_when: "Browser control fails on Linux, especially with snap Chromium"
4
+ title: "Browser Troubleshooting"
5
+ ---
6
+
7
+ # Browser Troubleshooting (Linux)
8
+
9
+ ## Problem: "Failed to start Chrome CDP on port 18800"
10
+
11
+ Durar's browser control server fails to launch Chrome/Brave/Edge/Chromium with the error:
12
+
13
+ ```
14
+ {"error":"Error: Failed to start Chrome CDP on port 18800 for profile \"Durar\"."}
15
+ ```
16
+
17
+ ### Root Cause
18
+
19
+ On Ubuntu (and many Linux distros), the default Chromium installation is a **snap package**. Snap's AppArmor confinement interferes with how Durar spawns and monitors the browser process.
20
+
21
+ The `apt install chromium` command installs a stub package that redirects to snap:
22
+
23
+ ```
24
+ Note, selecting 'chromium-browser' instead of 'chromium'
25
+ chromium-browser is already the newest version (2:1snap1-0ubuntu2).
26
+ ```
27
+
28
+ This is NOT a real browser - it's just a wrapper.
29
+
30
+ ### Solution 1: Install Google Chrome (Recommended)
31
+
32
+ Install the official Google Chrome `.deb` package, which is not sandboxed by snap:
33
+
34
+ ```bash
35
+ wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
36
+ sudo dpkg -i google-chrome-stable_current_amd64.deb
37
+ sudo apt --fix-broken install -y # if there are dependency errors
38
+ ```
39
+
40
+ Then update your Durar config (`~/.Durar/Durar.json`):
41
+
42
+ ```json
43
+ {
44
+ "browser": {
45
+ "enabled": true,
46
+ "executablePath": "/usr/bin/google-chrome-stable",
47
+ "headless": true,
48
+ "noSandbox": true
49
+ }
50
+ }
51
+ ```
52
+
53
+ ### Solution 2: Use Snap Chromium with Attach-Only Mode
54
+
55
+ If you must use snap Chromium, configure Durar to attach to a manually-started browser:
56
+
57
+ 1. Update config:
58
+
59
+ ```json
60
+ {
61
+ "browser": {
62
+ "enabled": true,
63
+ "attachOnly": true,
64
+ "headless": true,
65
+ "noSandbox": true
66
+ }
67
+ }
68
+ ```
69
+
70
+ 2. Start Chromium manually:
71
+
72
+ ```bash
73
+ chromium-browser --headless --no-sandbox --disable-gpu \
74
+ --remote-debugging-port=18800 \
75
+ --user-data-dir=$HOME/.Durar/browser/Durar/user-data \
76
+ about:blank &
77
+ ```
78
+
79
+ 3. Optionally create a systemd user service to auto-start Chrome:
80
+
81
+ ```ini
82
+ # ~/.config/systemd/user/Durar-browser.service
83
+ [Unit]
84
+ Description=Durar Browser (Chrome CDP)
85
+ After=network.target
86
+
87
+ [Service]
88
+ ExecStart=/snap/bin/chromium --headless --no-sandbox --disable-gpu --remote-debugging-port=18800 --user-data-dir=%h/.Durar/browser/Durar/user-data about:blank
89
+ Restart=on-failure
90
+ RestartSec=5
91
+
92
+ [Install]
93
+ WantedBy=default.target
94
+ ```
95
+
96
+ Enable with: `systemctl --user enable --now Durar-browser.service`
97
+
98
+ ### Verifying the Browser Works
99
+
100
+ Check status:
101
+
102
+ ```bash
103
+ curl -s http://127.0.0.1:18791/ | jq '{running, pid, chosenBrowser}'
104
+ ```
105
+
106
+ Test browsing:
107
+
108
+ ```bash
109
+ curl -s -X POST http://127.0.0.1:18791/start
110
+ curl -s http://127.0.0.1:18791/tabs
111
+ ```
112
+
113
+ ### Config Reference
114
+
115
+ | Option | Description | Default |
116
+ | ------------------------ | -------------------------------------------------------------------- | ----------------------------------------------------------- |
117
+ | `browser.enabled` | Enable browser control | `true` |
118
+ | `browser.executablePath` | Path to a Chromium-based browser binary (Chrome/Brave/Edge/Chromium) | auto-detected (prefers default browser when Chromium-based) |
119
+ | `browser.headless` | Run without GUI | `false` |
120
+ | `browser.noSandbox` | Add `--no-sandbox` flag (needed for some Linux setups) | `false` |
121
+ | `browser.attachOnly` | Don't launch browser, only attach to existing | `false` |
122
+ | `browser.cdpPort` | Chrome DevTools Protocol port | `18800` |
123
+
124
+ ### Problem: "No Chrome tabs found for profile=\"user\""
125
+
126
+ You're using an `existing-session` / Chrome MCP profile. Durar can see local Chrome,
127
+ but there are no open tabs available to attach to.
128
+
129
+ Fix options:
130
+
131
+ 1. **Use the managed browser:** `Durar browser start --browser-profile Durar`
132
+ (or set `browser.defaultProfile: "Durar"`).
133
+ 2. **Use Chrome MCP:** make sure local Chrome is running with at least one open tab, then retry with `--browser-profile user`.
134
+
135
+ Notes:
136
+
137
+ - `user` is host-only. For Linux servers, containers, or remote hosts, prefer CDP profiles.
138
+ - `user` / other `existing-session` profiles keep the current Chrome MCP limits:
139
+ ref-driven actions, one-file upload hooks, no dialog timeout overrides, no
140
+ `wait --load networkidle`, and no `responsebody`, PDF export, download
141
+ interception, or batch actions.
142
+ - Local `Durar` profiles auto-assign `cdpPort`/`cdpUrl`; only set those for remote CDP.
143
+ - Remote CDP profiles accept `http://`, `https://`, `ws://`, and `wss://`.
144
+ Use HTTP(S) for `/json/version` discovery, or WS(S) when your browser
145
+ service gives you a direct DevTools socket URL.
@@ -0,0 +1,73 @@
1
+ ---
2
+ summary: "Manual logins for browser automation + X/Twitter posting"
3
+ read_when:
4
+ - You need to log into sites for browser automation
5
+ - You want to post updates to X/Twitter
6
+ title: "Browser Login"
7
+ ---
8
+
9
+ # Browser login + X/Twitter posting
10
+
11
+ ## Manual login (recommended)
12
+
13
+ When a site requires login, **sign in manually** in the **host** browser profile (the Durar browser).
14
+
15
+ Do **not** give the model your credentials. Automated logins often trigger anti‑bot defenses and can lock the account.
16
+
17
+ Back to the main browser docs: [Browser](/tools/browser).
18
+
19
+ ## Which Chrome profile is used?
20
+
21
+ Durar controls a **dedicated Chrome profile** (named `Durar`, orange‑tinted UI). This is separate from your daily browser profile.
22
+
23
+ For agent browser tool calls:
24
+
25
+ - Default choice: the agent should use its isolated `Durar` browser.
26
+ - Use `profile="user"` only when existing logged-in sessions matter and the user is at the computer to click/approve any attach prompt.
27
+ - If you have multiple user-browser profiles, specify the profile explicitly instead of guessing.
28
+
29
+ Two easy ways to access it:
30
+
31
+ 1. **Ask the agent to open the browser** and then log in yourself.
32
+ 2. **Open it via CLI**:
33
+
34
+ ```bash
35
+ Durar browser start
36
+ Durar browser open https://x.com
37
+ ```
38
+
39
+ If you have multiple profiles, pass `--browser-profile <name>` (the default is `Durar`).
40
+
41
+ ## X/Twitter: recommended flow
42
+
43
+ - **Read/search/threads:** use the **host** browser (manual login).
44
+ - **Post updates:** use the **host** browser (manual login).
45
+
46
+ ## Sandboxing + host browser access
47
+
48
+ Sandboxed browser sessions are **more likely** to trigger bot detection. For X/Twitter (and other strict sites), prefer the **host** browser.
49
+
50
+ If the agent is sandboxed, the browser tool defaults to the sandbox. To allow host control:
51
+
52
+ ```json5
53
+ {
54
+ agents: {
55
+ defaults: {
56
+ sandbox: {
57
+ mode: "non-main",
58
+ browser: {
59
+ allowHostControl: true,
60
+ },
61
+ },
62
+ },
63
+ },
64
+ }
65
+ ```
66
+
67
+ Then target the host browser:
68
+
69
+ ```bash
70
+ Durar browser open https://x.com --browser-profile Durar --target host
71
+ ```
72
+
73
+ Or disable sandboxing for the agent that posts updates.
@@ -0,0 +1,221 @@
1
+ ---
2
+ summary: "Troubleshoot WSL2 Gateway + Windows Chrome remote CDP in layers"
3
+ read_when:
4
+ - Running Durar Gateway in WSL2 while Chrome lives on Windows
5
+ - Seeing overlapping browser/control-ui errors across WSL2 and Windows
6
+ - Deciding between host-local Chrome MCP and raw remote CDP in split-host setups
7
+ title: "WSL2 + Windows + remote Chrome CDP troubleshooting"
8
+ ---
9
+
10
+ # WSL2 + Windows + remote Chrome CDP troubleshooting
11
+
12
+ This guide covers the common split-host setup where:
13
+
14
+ - Durar Gateway runs inside WSL2
15
+ - Chrome runs on Windows
16
+ - browser control must cross the WSL2/Windows boundary
17
+
18
+ It also covers the layered failure pattern from [issue #39369](https://github.com/openclaw/openclaw/issues/39369): several independent problems can show up at once, which makes the wrong layer look broken first.
19
+
20
+ ## Choose the right browser mode first
21
+
22
+ You have two valid patterns:
23
+
24
+ ### Option 1: Raw remote CDP from WSL2 to Windows
25
+
26
+ Use a remote browser profile that points from WSL2 to a Windows Chrome CDP endpoint.
27
+
28
+ Choose this when:
29
+
30
+ - the Gateway stays inside WSL2
31
+ - Chrome runs on Windows
32
+ - you need browser control to cross the WSL2/Windows boundary
33
+
34
+ ### Option 2: Host-local Chrome MCP
35
+
36
+ Use `existing-session` / `user` only when the Gateway itself runs on the same host as Chrome.
37
+
38
+ Choose this when:
39
+
40
+ - Durar and Chrome are on the same machine
41
+ - you want the local signed-in browser state
42
+ - you do not need cross-host browser transport
43
+ - you do not need advanced managed/raw-CDP-only routes like `responsebody`, PDF
44
+ export, download interception, or batch actions
45
+
46
+ For WSL2 Gateway + Windows Chrome, prefer raw remote CDP. Chrome MCP is host-local, not a WSL2-to-Windows bridge.
47
+
48
+ ## Working architecture
49
+
50
+ Reference shape:
51
+
52
+ - WSL2 runs the Gateway on `127.0.0.1:18789`
53
+ - Windows opens the Control UI in a normal browser at `http://127.0.0.1:18789/`
54
+ - Windows Chrome exposes a CDP endpoint on port `9222`
55
+ - WSL2 can reach that Windows CDP endpoint
56
+ - Durar points a browser profile at the address that is reachable from WSL2
57
+
58
+ ## Why this setup is confusing
59
+
60
+ Several failures can overlap:
61
+
62
+ - WSL2 cannot reach the Windows CDP endpoint
63
+ - the Control UI is opened from a non-secure origin
64
+ - `gateway.controlUi.allowedOrigins` does not match the page origin
65
+ - token or pairing is missing
66
+ - the browser profile points at the wrong address
67
+
68
+ Because of that, fixing one layer can still leave a different error visible.
69
+
70
+ ## Critical rule for the Control UI
71
+
72
+ When the UI is opened from Windows, use Windows localhost unless you have a deliberate HTTPS setup.
73
+
74
+ Use:
75
+
76
+ `http://127.0.0.1:18789/`
77
+
78
+ Do not default to a LAN IP for the Control UI. Plain HTTP on a LAN or tailnet address can trigger insecure-origin/device-auth behavior that is unrelated to CDP itself. See [Control UI](/web/control-ui).
79
+
80
+ ## Validate in layers
81
+
82
+ Work top to bottom. Do not skip ahead.
83
+
84
+ ### Layer 1: Verify Chrome is serving CDP on Windows
85
+
86
+ Start Chrome on Windows with remote debugging enabled:
87
+
88
+ ```powershell
89
+ chrome.exe --remote-debugging-port=9222
90
+ ```
91
+
92
+ From Windows, verify Chrome itself first:
93
+
94
+ ```powershell
95
+ curl http://127.0.0.1:9222/json/version
96
+ curl http://127.0.0.1:9222/json/list
97
+ ```
98
+
99
+ If this fails on Windows, Durar is not the problem yet.
100
+
101
+ ### Layer 2: Verify WSL2 can reach that Windows endpoint
102
+
103
+ From WSL2, test the exact address you plan to use in `cdpUrl`:
104
+
105
+ ```bash
106
+ curl http://WINDOWS_HOST_OR_IP:9222/json/version
107
+ curl http://WINDOWS_HOST_OR_IP:9222/json/list
108
+ ```
109
+
110
+ Good result:
111
+
112
+ - `/json/version` returns JSON with Browser / Protocol-Version metadata
113
+ - `/json/list` returns JSON (empty array is fine if no pages are open)
114
+
115
+ If this fails:
116
+
117
+ - Windows is not exposing the port to WSL2 yet
118
+ - the address is wrong for the WSL2 side
119
+ - firewall / port forwarding / local proxying is still missing
120
+
121
+ Fix that before touching Durar config.
122
+
123
+ ### Layer 3: Configure the correct browser profile
124
+
125
+ For raw remote CDP, point Durar at the address that is reachable from WSL2:
126
+
127
+ ```json5
128
+ {
129
+ browser: {
130
+ enabled: true,
131
+ defaultProfile: "remote",
132
+ profiles: {
133
+ remote: {
134
+ cdpUrl: "http://WINDOWS_HOST_OR_IP:9222",
135
+ attachOnly: true,
136
+ color: "#00AA00",
137
+ },
138
+ },
139
+ },
140
+ }
141
+ ```
142
+
143
+ Notes:
144
+
145
+ - use the WSL2-reachable address, not whatever only works on Windows
146
+ - keep `attachOnly: true` for externally managed browsers
147
+ - `cdpUrl` can be `http://`, `https://`, `ws://`, or `wss://`
148
+ - use HTTP(S) when you want Durar to discover `/json/version`
149
+ - use WS(S) only when the browser provider gives you a direct DevTools socket URL
150
+ - test the same URL with `curl` before expecting Durar to succeed
151
+
152
+ ### Layer 4: Verify the Control UI layer separately
153
+
154
+ Open the UI from Windows:
155
+
156
+ `http://127.0.0.1:18789/`
157
+
158
+ Then verify:
159
+
160
+ - the page origin matches what `gateway.controlUi.allowedOrigins` expects
161
+ - token auth or pairing is configured correctly
162
+ - you are not debugging a Control UI auth problem as if it were a browser problem
163
+
164
+ Helpful page:
165
+
166
+ - [Control UI](/web/control-ui)
167
+
168
+ ### Layer 5: Verify end-to-end browser control
169
+
170
+ From WSL2:
171
+
172
+ ```bash
173
+ Durar browser open https://example.com --browser-profile remote
174
+ Durar browser tabs --browser-profile remote
175
+ ```
176
+
177
+ Good result:
178
+
179
+ - the tab opens in Windows Chrome
180
+ - `Durar browser tabs` returns the target
181
+ - later actions (`snapshot`, `screenshot`, `navigate`) work from the same profile
182
+
183
+ ## Common misleading errors
184
+
185
+ Treat each message as a layer-specific clue:
186
+
187
+ - `control-ui-insecure-auth`
188
+ - UI origin / secure-context problem, not a CDP transport problem
189
+ - `token_missing`
190
+ - auth configuration problem
191
+ - `pairing required`
192
+ - device approval problem
193
+ - `Remote CDP for profile "remote" is not reachable`
194
+ - WSL2 cannot reach the configured `cdpUrl`
195
+ - `Browser attachOnly is enabled and CDP websocket for profile "remote" is not reachable`
196
+ - the HTTP endpoint answered, but the DevTools WebSocket still could not be opened
197
+ - stale viewport / dark-mode / locale / offline overrides after a remote session
198
+ - run `Durar browser stop --browser-profile remote`
199
+ - this closes the active control session and releases Playwright/CDP emulation state without restarting the gateway or the external browser
200
+ - `gateway timeout after 1500ms`
201
+ - often still CDP reachability or a slow/unreachable remote endpoint
202
+ - `No Chrome tabs found for profile="user"`
203
+ - local Chrome MCP profile selected where no host-local tabs are available
204
+
205
+ ## Fast triage checklist
206
+
207
+ 1. Windows: does `curl http://127.0.0.1:9222/json/version` work?
208
+ 2. WSL2: does `curl http://WINDOWS_HOST_OR_IP:9222/json/version` work?
209
+ 3. Durar config: does `browser.profiles.<name>.cdpUrl` use that exact WSL2-reachable address?
210
+ 4. Control UI: are you opening `http://127.0.0.1:18789/` instead of a LAN IP?
211
+ 5. Are you trying to use `existing-session` across WSL2 and Windows instead of raw remote CDP?
212
+
213
+ ## Practical takeaway
214
+
215
+ The setup is usually viable. The hard part is that browser transport, Control UI origin security, and token/pairing can each fail independently while looking similar from the user side.
216
+
217
+ When in doubt:
218
+
219
+ - verify the Windows Chrome endpoint locally first
220
+ - verify the same endpoint from WSL2 second
221
+ - only then debug Durar config or Control UI auth