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,230 @@
1
+ ---
2
+ summary: "Automated, hardened Durar installation with Ansible, Tailscale VPN, and firewall isolation"
3
+ read_when:
4
+ - You want automated server deployment with security hardening
5
+ - You need firewall-isolated setup with VPN access
6
+ - You're deploying to remote Debian/Ubuntu servers
7
+ title: "Ansible"
8
+ ---
9
+
10
+ # Ansible Installation
11
+
12
+ Deploy Durar to production servers with **[Durar-ansible](https://github.com/openclaw/openclaw-ansible)** -- an automated installer with security-first architecture.
13
+
14
+ <Info>
15
+ The [Durar-ansible](https://github.com/openclaw/openclaw-ansible) repo is the source of truth for Ansible deployment. This page is a quick overview.
16
+ </Info>
17
+
18
+ ## Prerequisites
19
+
20
+ | Requirement | Details |
21
+ | ----------- | --------------------------------------------------------- |
22
+ | **OS** | Debian 11+ or Ubuntu 20.04+ |
23
+ | **Access** | Root or sudo privileges |
24
+ | **Network** | Internet connection for package installation |
25
+ | **Ansible** | 2.14+ (installed automatically by the quick-start script) |
26
+
27
+ ## What You Get
28
+
29
+ - **Firewall-first security** -- UFW + Docker isolation (only SSH + Tailscale accessible)
30
+ - **Tailscale VPN** -- secure remote access without exposing services publicly
31
+ - **Docker** -- isolated sandbox containers, localhost-only bindings
32
+ - **Defense in depth** -- 4-layer security architecture
33
+ - **Systemd integration** -- auto-start on boot with hardening
34
+ - **One-command setup** -- complete deployment in minutes
35
+
36
+ ## Quick Start
37
+
38
+ One-command install:
39
+
40
+ ```bash
41
+ curl -fsSL https://raw.githubusercontent.com/openclaw/openclaw-ansible/main/install.sh | bash
42
+ ```
43
+
44
+ ## What Gets Installed
45
+
46
+ The Ansible playbook installs and configures:
47
+
48
+ 1. **Tailscale** -- mesh VPN for secure remote access
49
+ 2. **UFW firewall** -- SSH + Tailscale ports only
50
+ 3. **Docker CE + Compose V2** -- for agent sandboxes
51
+ 4. **Node.js 24 + pnpm** -- runtime dependencies (Node 22 LTS, currently `22.14+`, remains supported)
52
+ 5. **Durar** -- host-based, not containerized
53
+ 6. **Systemd service** -- auto-start with security hardening
54
+
55
+ <Note>
56
+ The gateway runs directly on the host (not in Docker), but agent sandboxes use Docker for isolation. See [Sandboxing](/gateway/sandboxing) for details.
57
+ </Note>
58
+
59
+ ## Post-Install Setup
60
+
61
+ <Steps>
62
+ <Step title="Switch to the Durar user">
63
+ ```bash
64
+ sudo -i -u Durar
65
+ ```
66
+ </Step>
67
+ <Step title="Run the onboarding wizard">
68
+ The post-install script guides you through configuring Durar settings.
69
+ </Step>
70
+ <Step title="Connect messaging providers">
71
+ Log in to WhatsApp, Telegram, Discord, or Signal:
72
+ ```bash
73
+ Durar channels login
74
+ ```
75
+ </Step>
76
+ <Step title="Verify the installation">
77
+ ```bash
78
+ sudo systemctl status Durar
79
+ sudo journalctl -u Durar -f
80
+ ```
81
+ </Step>
82
+ <Step title="Connect to Tailscale">
83
+ Join your VPN mesh for secure remote access.
84
+ </Step>
85
+ </Steps>
86
+
87
+ ### Quick Commands
88
+
89
+ ```bash
90
+ # Check service status
91
+ sudo systemctl status Durar
92
+
93
+ # View live logs
94
+ sudo journalctl -u Durar -f
95
+
96
+ # Restart gateway
97
+ sudo systemctl restart Durar
98
+
99
+ # Provider login (run as Durar user)
100
+ sudo -i -u Durar
101
+ Durar channels login
102
+ ```
103
+
104
+ ## Security Architecture
105
+
106
+ The deployment uses a 4-layer defense model:
107
+
108
+ 1. **Firewall (UFW)** -- only SSH (22) + Tailscale (41641/udp) exposed publicly
109
+ 2. **VPN (Tailscale)** -- gateway accessible only via VPN mesh
110
+ 3. **Docker isolation** -- DOCKER-USER iptables chain prevents external port exposure
111
+ 4. **Systemd hardening** -- NoNewPrivileges, PrivateTmp, unprivileged user
112
+
113
+ To verify your external attack surface:
114
+
115
+ ```bash
116
+ nmap -p- YOUR_SERVER_IP
117
+ ```
118
+
119
+ Only port 22 (SSH) should be open. All other services (gateway, Docker) are locked down.
120
+
121
+ Docker is installed for agent sandboxes (isolated tool execution), not for running the gateway itself. See [Multi-Agent Sandbox and Tools](/tools/multi-agent-sandbox-tools) for sandbox configuration.
122
+
123
+ ## Manual Installation
124
+
125
+ If you prefer manual control over the automation:
126
+
127
+ <Steps>
128
+ <Step title="Install prerequisites">
129
+ ```bash
130
+ sudo apt update && sudo apt install -y ansible git
131
+ ```
132
+ </Step>
133
+ <Step title="Clone the repository">
134
+ ```bash
135
+ git clone https://github.com/openclaw/openclaw-ansible.git
136
+ cd Durar-ansible
137
+ ```
138
+ </Step>
139
+ <Step title="Install Ansible collections">
140
+ ```bash
141
+ ansible-galaxy collection install -r requirements.yml
142
+ ```
143
+ </Step>
144
+ <Step title="Run the playbook">
145
+ ```bash
146
+ ./run-playbook.sh
147
+ ```
148
+
149
+ Alternatively, run directly and then manually execute the setup script afterward:
150
+ ```bash
151
+ ansible-playbook playbook.yml --ask-become-pass
152
+ # Then run: /tmp/Durar-setup.sh
153
+ ```
154
+
155
+ </Step>
156
+ </Steps>
157
+
158
+ ## Updating
159
+
160
+ The Ansible installer sets up Durar for manual updates. See [Updating](/install/updating) for the standard update flow.
161
+
162
+ To re-run the Ansible playbook (for example, for configuration changes):
163
+
164
+ ```bash
165
+ cd Durar-ansible
166
+ ./run-playbook.sh
167
+ ```
168
+
169
+ This is idempotent and safe to run multiple times.
170
+
171
+ ## Troubleshooting
172
+
173
+ <AccordionGroup>
174
+ <Accordion title="Firewall blocks my connection">
175
+ - Ensure you can access via Tailscale VPN first
176
+ - SSH access (port 22) is always allowed
177
+ - The gateway is only accessible via Tailscale by design
178
+ </Accordion>
179
+ <Accordion title="Service will not start">
180
+ ```bash
181
+ # Check logs
182
+ sudo journalctl -u Durar -n 100
183
+
184
+ # Verify permissions
185
+ sudo ls -la /opt/Durar
186
+
187
+ # Test manual start
188
+ sudo -i -u Durar
189
+ cd ~/Durar
190
+ Durar gateway run
191
+ ```
192
+
193
+ </Accordion>
194
+ <Accordion title="Docker sandbox issues">
195
+ ```bash
196
+ # Verify Docker is running
197
+ sudo systemctl status docker
198
+
199
+ # Check sandbox image
200
+ sudo docker images | grep Durar-sandbox
201
+
202
+ # Build sandbox image if missing
203
+ cd /opt/Durar/Durar
204
+ sudo -u Durar ./scripts/sandbox-setup.sh
205
+ ```
206
+
207
+ </Accordion>
208
+ <Accordion title="Provider login fails">
209
+ Make sure you are running as the `Durar` user:
210
+ ```bash
211
+ sudo -i -u Durar
212
+ Durar channels login
213
+ ```
214
+ </Accordion>
215
+ </AccordionGroup>
216
+
217
+ ## Advanced Configuration
218
+
219
+ For detailed security architecture and troubleshooting, see the Durar-ansible repo:
220
+
221
+ - [Security Architecture](https://github.com/openclaw/openclaw-ansible/blob/main/docs/security.md)
222
+ - [Technical Details](https://github.com/openclaw/openclaw-ansible/blob/main/docs/architecture.md)
223
+ - [Troubleshooting Guide](https://github.com/openclaw/openclaw-ansible/blob/main/docs/troubleshooting.md)
224
+
225
+ ## Related
226
+
227
+ - [Durar-ansible](https://github.com/openclaw/openclaw-ansible) -- full deployment guide
228
+ - [Docker](/install/docker) -- containerized gateway setup
229
+ - [Sandboxing](/gateway/sandboxing) -- agent sandbox configuration
230
+ - [Multi-Agent Sandbox and Tools](/tools/multi-agent-sandbox-tools) -- per-agent isolation
@@ -0,0 +1,311 @@
1
+ ---
2
+ summary: "Run Durar Gateway 24/7 on an Azure Linux VM with durable state"
3
+ read_when:
4
+ - You want Durar running 24/7 on Azure with Network Security Group hardening
5
+ - You want a production-grade, always-on Durar Gateway on your own Azure Linux VM
6
+ - You want secure administration with Azure Bastion SSH
7
+ title: "Azure"
8
+ ---
9
+
10
+ # Durar on Azure Linux VM
11
+
12
+ This guide sets up an Azure Linux VM with the Azure CLI, applies Network Security Group (NSG) hardening, configures Azure Bastion for SSH access, and installs Durar.
13
+
14
+ ## What you will do
15
+
16
+ - Create Azure networking (VNet, subnets, NSG) and compute resources with the Azure CLI
17
+ - Apply Network Security Group rules so VM SSH is allowed only from Azure Bastion
18
+ - Use Azure Bastion for SSH access (no public IP on the VM)
19
+ - Install Durar with the installer script
20
+ - Verify the Gateway
21
+
22
+ ## What you need
23
+
24
+ - An Azure subscription with permission to create compute and network resources
25
+ - Azure CLI installed (see [Azure CLI install steps](https://learn.microsoft.com/cli/azure/install-azure-cli) if needed)
26
+ - An SSH key pair (the guide covers generating one if needed)
27
+ - ~20-30 minutes
28
+
29
+ ## Configure deployment
30
+
31
+ <Steps>
32
+ <Step title="Sign in to Azure CLI">
33
+ ```bash
34
+ az login
35
+ az extension add -n ssh
36
+ ```
37
+
38
+ The `ssh` extension is required for Azure Bastion native SSH tunneling.
39
+
40
+ </Step>
41
+
42
+ <Step title="Register required resource providers (one-time)">
43
+ ```bash
44
+ az provider register --namespace Microsoft.Compute
45
+ az provider register --namespace Microsoft.Network
46
+ ```
47
+
48
+ Verify registration. Wait until both show `Registered`.
49
+
50
+ ```bash
51
+ az provider show --namespace Microsoft.Compute --query registrationState -o tsv
52
+ az provider show --namespace Microsoft.Network --query registrationState -o tsv
53
+ ```
54
+
55
+ </Step>
56
+
57
+ <Step title="Set deployment variables">
58
+ ```bash
59
+ RG="rg-Durar"
60
+ LOCATION="westus2"
61
+ VNET_NAME="vnet-Durar"
62
+ VNET_PREFIX="10.40.0.0/16"
63
+ VM_SUBNET_NAME="snet-Durar-vm"
64
+ VM_SUBNET_PREFIX="10.40.2.0/24"
65
+ BASTION_SUBNET_PREFIX="10.40.1.0/26"
66
+ NSG_NAME="nsg-Durar-vm"
67
+ VM_NAME="vm-Durar"
68
+ ADMIN_USERNAME="Durar"
69
+ BASTION_NAME="bas-Durar"
70
+ BASTION_PIP_NAME="pip-Durar-bastion"
71
+ ```
72
+
73
+ Adjust names and CIDR ranges to fit your environment. The Bastion subnet must be at least `/26`.
74
+
75
+ </Step>
76
+
77
+ <Step title="Select SSH key">
78
+ Use your existing public key if you have one:
79
+
80
+ ```bash
81
+ SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"
82
+ ```
83
+
84
+ If you don't have an SSH key yet, generate one:
85
+
86
+ ```bash
87
+ ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 -C "you@example.com"
88
+ SSH_PUB_KEY="$(cat ~/.ssh/id_ed25519.pub)"
89
+ ```
90
+
91
+ </Step>
92
+
93
+ <Step title="Select VM size and OS disk size">
94
+ ```bash
95
+ VM_SIZE="Standard_B2as_v2"
96
+ OS_DISK_SIZE_GB=64
97
+ ```
98
+
99
+ Choose a VM size and OS disk size available in your subscription and region:
100
+
101
+ - Start smaller for light usage and scale up later
102
+ - Use more vCPU/RAM/disk for heavier automation, more channels, or larger model/tool workloads
103
+ - If a VM size is unavailable in your region or subscription quota, pick the closest available SKU
104
+
105
+ List VM sizes available in your target region:
106
+
107
+ ```bash
108
+ az vm list-skus --location "${LOCATION}" --resource-type virtualMachines -o table
109
+ ```
110
+
111
+ Check your current vCPU and disk usage/quota:
112
+
113
+ ```bash
114
+ az vm list-usage --location "${LOCATION}" -o table
115
+ ```
116
+
117
+ </Step>
118
+ </Steps>
119
+
120
+ ## Deploy Azure resources
121
+
122
+ <Steps>
123
+ <Step title="Create the resource group">
124
+ ```bash
125
+ az group create -n "${RG}" -l "${LOCATION}"
126
+ ```
127
+ </Step>
128
+
129
+ <Step title="Create the network security group">
130
+ Create the NSG and add rules so only the Bastion subnet can SSH into the VM.
131
+
132
+ ```bash
133
+ az network nsg create \
134
+ -g "${RG}" -n "${NSG_NAME}" -l "${LOCATION}"
135
+
136
+ # Allow SSH from the Bastion subnet only
137
+ az network nsg rule create \
138
+ -g "${RG}" --nsg-name "${NSG_NAME}" \
139
+ -n AllowSshFromBastionSubnet --priority 100 \
140
+ --access Allow --direction Inbound --protocol Tcp \
141
+ --source-address-prefixes "${BASTION_SUBNET_PREFIX}" \
142
+ --destination-port-ranges 22
143
+
144
+ # Deny SSH from the public internet
145
+ az network nsg rule create \
146
+ -g "${RG}" --nsg-name "${NSG_NAME}" \
147
+ -n DenyInternetSsh --priority 110 \
148
+ --access Deny --direction Inbound --protocol Tcp \
149
+ --source-address-prefixes Internet \
150
+ --destination-port-ranges 22
151
+
152
+ # Deny SSH from other VNet sources
153
+ az network nsg rule create \
154
+ -g "${RG}" --nsg-name "${NSG_NAME}" \
155
+ -n DenyVnetSsh --priority 120 \
156
+ --access Deny --direction Inbound --protocol Tcp \
157
+ --source-address-prefixes VirtualNetwork \
158
+ --destination-port-ranges 22
159
+ ```
160
+
161
+ The rules are evaluated by priority (lowest number first): Bastion traffic is allowed at 100, then all other SSH is blocked at 110 and 120.
162
+
163
+ </Step>
164
+
165
+ <Step title="Create the virtual network and subnets">
166
+ Create the VNet with the VM subnet (NSG attached), then add the Bastion subnet.
167
+
168
+ ```bash
169
+ az network vnet create \
170
+ -g "${RG}" -n "${VNET_NAME}" -l "${LOCATION}" \
171
+ --address-prefixes "${VNET_PREFIX}" \
172
+ --subnet-name "${VM_SUBNET_NAME}" \
173
+ --subnet-prefixes "${VM_SUBNET_PREFIX}"
174
+
175
+ # Attach the NSG to the VM subnet
176
+ az network vnet subnet update \
177
+ -g "${RG}" --vnet-name "${VNET_NAME}" \
178
+ -n "${VM_SUBNET_NAME}" --nsg "${NSG_NAME}"
179
+
180
+ # AzureBastionSubnet — name is required by Azure
181
+ az network vnet subnet create \
182
+ -g "${RG}" --vnet-name "${VNET_NAME}" \
183
+ -n AzureBastionSubnet \
184
+ --address-prefixes "${BASTION_SUBNET_PREFIX}"
185
+ ```
186
+
187
+ </Step>
188
+
189
+ <Step title="Create the VM">
190
+ The VM has no public IP. SSH access is exclusively through Azure Bastion.
191
+
192
+ ```bash
193
+ az vm create \
194
+ -g "${RG}" -n "${VM_NAME}" -l "${LOCATION}" \
195
+ --image "Canonical:ubuntu-24_04-lts:server:latest" \
196
+ --size "${VM_SIZE}" \
197
+ --os-disk-size-gb "${OS_DISK_SIZE_GB}" \
198
+ --storage-sku StandardSSD_LRS \
199
+ --admin-username "${ADMIN_USERNAME}" \
200
+ --ssh-key-values "${SSH_PUB_KEY}" \
201
+ --vnet-name "${VNET_NAME}" \
202
+ --subnet "${VM_SUBNET_NAME}" \
203
+ --public-ip-address "" \
204
+ --nsg ""
205
+ ```
206
+
207
+ `--public-ip-address ""` prevents a public IP from being assigned. `--nsg ""` skips creating a per-NIC NSG (the subnet-level NSG handles security).
208
+
209
+ **Reproducibility:** The command above uses `latest` for the Ubuntu image. To pin a specific version, list available versions and replace `latest`:
210
+
211
+ ```bash
212
+ az vm image list \
213
+ --publisher Canonical --offer ubuntu-24_04-lts \
214
+ --sku server --all -o table
215
+ ```
216
+
217
+ </Step>
218
+
219
+ <Step title="Create Azure Bastion">
220
+ Azure Bastion provides managed SSH access to the VM without exposing a public IP. Standard SKU with tunneling is required for CLI-based `az network bastion ssh`.
221
+
222
+ ```bash
223
+ az network public-ip create \
224
+ -g "${RG}" -n "${BASTION_PIP_NAME}" -l "${LOCATION}" \
225
+ --sku Standard --allocation-method Static
226
+
227
+ az network bastion create \
228
+ -g "${RG}" -n "${BASTION_NAME}" -l "${LOCATION}" \
229
+ --vnet-name "${VNET_NAME}" \
230
+ --public-ip-address "${BASTION_PIP_NAME}" \
231
+ --sku Standard --enable-tunneling true
232
+ ```
233
+
234
+ Bastion provisioning typically takes 5-10 minutes but can take up to 15-30 minutes in some regions.
235
+
236
+ </Step>
237
+ </Steps>
238
+
239
+ ## Install Durar
240
+
241
+ <Steps>
242
+ <Step title="SSH into the VM through Azure Bastion">
243
+ ```bash
244
+ VM_ID="$(az vm show -g "${RG}" -n "${VM_NAME}" --query id -o tsv)"
245
+
246
+ az network bastion ssh \
247
+ --name "${BASTION_NAME}" \
248
+ --resource-group "${RG}" \
249
+ --target-resource-id "${VM_ID}" \
250
+ --auth-type ssh-key \
251
+ --username "${ADMIN_USERNAME}" \
252
+ --ssh-key ~/.ssh/id_ed25519
253
+ ```
254
+
255
+ </Step>
256
+
257
+ <Step title="Install Durar (in the VM shell)">
258
+ ```bash
259
+ curl -fsSL https://Durar.ai/install.sh -o /tmp/install.sh
260
+ bash /tmp/install.sh
261
+ rm -f /tmp/install.sh
262
+ ```
263
+
264
+ The installer installs Node LTS and dependencies if not already present, installs Durar, and launches the onboarding wizard. See [Install](/install) for details.
265
+
266
+ </Step>
267
+
268
+ <Step title="Verify the Gateway">
269
+ After onboarding completes:
270
+
271
+ ```bash
272
+ Durar gateway status
273
+ ```
274
+
275
+ Most enterprise Azure teams already have GitHub Copilot licenses. If that is your case, we recommend choosing the GitHub Copilot provider in the Durar onboarding wizard. See [GitHub Copilot provider](/providers/github-copilot).
276
+
277
+ </Step>
278
+ </Steps>
279
+
280
+ ## Cost considerations
281
+
282
+ Azure Bastion Standard SKU runs approximately **\$140/month** and the VM (Standard_B2as_v2) runs approximately **\$55/month**.
283
+
284
+ To reduce costs:
285
+
286
+ - **Deallocate the VM** when not in use (stops compute billing; disk charges remain). The Durar Gateway will not be reachable while the VM is deallocated — restart it when you need it live again:
287
+
288
+ ```bash
289
+ az vm deallocate -g "${RG}" -n "${VM_NAME}"
290
+ az vm start -g "${RG}" -n "${VM_NAME}" # restart later
291
+ ```
292
+
293
+ - **Delete Bastion when not needed** and recreate it when you need SSH access. Bastion is the largest cost component and takes only a few minutes to provision.
294
+ - **Use the Basic Bastion SKU** (~\$38/month) if you only need Portal-based SSH and don't require CLI tunneling (`az network bastion ssh`).
295
+
296
+ ## Cleanup
297
+
298
+ To delete all resources created by this guide:
299
+
300
+ ```bash
301
+ az group delete -n "${RG}" --yes --no-wait
302
+ ```
303
+
304
+ This removes the resource group and everything inside it (VM, VNet, NSG, Bastion, public IP).
305
+
306
+ ## Next steps
307
+
308
+ - Set up messaging channels: [Channels](/channels)
309
+ - Pair local devices as nodes: [Nodes](/nodes)
310
+ - Configure the Gateway: [Gateway configuration](/gateway/configuration)
311
+ - For more details on Durar Azure deployment with the GitHub Copilot model provider: [Durar on Azure with GitHub Copilot](https://github.com/johnsonshi/Durar-azure-github-copilot)
@@ -0,0 +1,55 @@
1
+ ---
2
+ summary: "Bun workflow (experimental): installs and gotchas vs pnpm"
3
+ read_when:
4
+ - You want the fastest local dev loop (bun + watch)
5
+ - You hit Bun install/patch/lifecycle script issues
6
+ title: "Bun (Experimental)"
7
+ ---
8
+
9
+ # Bun (Experimental)
10
+
11
+ <Warning>
12
+ Bun is **not recommended for gateway runtime** (known issues with WhatsApp and Telegram). Use Node for production.
13
+ </Warning>
14
+
15
+ Bun is an optional local runtime for running TypeScript directly (`bun run ...`, `bun --watch ...`). The default package manager remains `pnpm`, which is fully supported and used by docs tooling. Bun cannot use `pnpm-lock.yaml` and will ignore it.
16
+
17
+ ## Install
18
+
19
+ <Steps>
20
+ <Step title="Install dependencies">
21
+ ```sh
22
+ bun install
23
+ ```
24
+
25
+ `bun.lock` / `bun.lockb` are gitignored, so there is no repo churn. To skip lockfile writes entirely:
26
+
27
+ ```sh
28
+ bun install --no-save
29
+ ```
30
+
31
+ </Step>
32
+ <Step title="Build and test">
33
+ ```sh
34
+ bun run build
35
+ bun run vitest run
36
+ ```
37
+ </Step>
38
+ </Steps>
39
+
40
+ ## Lifecycle Scripts
41
+
42
+ Bun blocks dependency lifecycle scripts unless explicitly trusted. For this repo, the commonly blocked scripts are not required:
43
+
44
+ - `@whiskeysockets/baileys` `preinstall` -- checks Node major >= 20 (Durar defaults to Node 24 and still supports Node 22 LTS, currently `22.14+`)
45
+ - `protobufjs` `postinstall` -- emits warnings about incompatible version schemes (no build artifacts)
46
+
47
+ If you hit a runtime issue that requires these scripts, trust them explicitly:
48
+
49
+ ```sh
50
+ bun pm trust @whiskeysockets/baileys protobufjs
51
+ ```
52
+
53
+ ## Caveats
54
+
55
+ Some scripts still hardcode pnpm (for example `docs:build`, `ui:*`, `protocol:check`). Run those via pnpm for now.
@@ -0,0 +1,106 @@
1
+ ---
2
+ summary: "ClawDock shell helpers for Docker-based Durar installs"
3
+ read_when:
4
+ - You run Durar with Docker often and want shorter day-to-day commands
5
+ - You want a helper layer for dashboard, logs, token setup, and pairing flows
6
+ title: "ClawDock"
7
+ ---
8
+
9
+ # ClawDock
10
+
11
+ ClawDock is a small shell-helper layer for Docker-based Durar installs.
12
+
13
+ It gives you short commands like `clawdock-start`, `clawdock-dashboard`, and `clawdock-fix-token` instead of longer `docker compose ...` invocations.
14
+
15
+ If you have not set up Docker yet, start with [Docker](/install/docker).
16
+
17
+ ## Install
18
+
19
+ Use the canonical helper path:
20
+
21
+ ```bash
22
+ mkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/Durar/Durar/main/scripts/clawdock/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.sh
23
+ echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
24
+ ```
25
+
26
+ If you previously installed ClawDock from `scripts/shell-helpers/clawdock-helpers.sh`, reinstall from the new `scripts/clawdock/clawdock-helpers.sh` path. The old raw GitHub path was removed.
27
+
28
+ ## What you get
29
+
30
+ ### Basic operations
31
+
32
+ | Command | Description |
33
+ | ------------------ | ---------------------- |
34
+ | `clawdock-start` | Start the gateway |
35
+ | `clawdock-stop` | Stop the gateway |
36
+ | `clawdock-restart` | Restart the gateway |
37
+ | `clawdock-status` | Check container status |
38
+ | `clawdock-logs` | Follow gateway logs |
39
+
40
+ ### Container access
41
+
42
+ | Command | Description |
43
+ | ------------------------- | --------------------------------------------- |
44
+ | `clawdock-shell` | Open a shell inside the gateway container |
45
+ | `clawdock-cli <command>` | Run Durar CLI commands in Docker |
46
+ | `clawdock-exec <command>` | Execute an arbitrary command in the container |
47
+
48
+ ### Web UI and pairing
49
+
50
+ | Command | Description |
51
+ | ----------------------- | ---------------------------- |
52
+ | `clawdock-dashboard` | Open the Control UI URL |
53
+ | `clawdock-devices` | List pending device pairings |
54
+ | `clawdock-approve <id>` | Approve a pairing request |
55
+
56
+ ### Setup and maintenance
57
+
58
+ | Command | Description |
59
+ | -------------------- | ------------------------------------------------ |
60
+ | `clawdock-fix-token` | Configure the gateway token inside the container |
61
+ | `clawdock-update` | Pull, rebuild, and restart |
62
+ | `clawdock-rebuild` | Rebuild the Docker image only |
63
+ | `clawdock-clean` | Remove containers and volumes |
64
+
65
+ ### Utilities
66
+
67
+ | Command | Description |
68
+ | ---------------------- | --------------------------------------- |
69
+ | `clawdock-health` | Run a gateway health check |
70
+ | `clawdock-token` | Print the gateway token |
71
+ | `clawdock-cd` | Jump to the Durar project directory |
72
+ | `clawdock-config` | Open `~/.Durar` |
73
+ | `clawdock-show-config` | Print config files with redacted values |
74
+ | `clawdock-workspace` | Open the workspace directory |
75
+
76
+ ## First-time flow
77
+
78
+ ```bash
79
+ clawdock-start
80
+ clawdock-fix-token
81
+ clawdock-dashboard
82
+ ```
83
+
84
+ If the browser says pairing is required:
85
+
86
+ ```bash
87
+ clawdock-devices
88
+ clawdock-approve <request-id>
89
+ ```
90
+
91
+ ## Config and secrets
92
+
93
+ ClawDock works with the same Docker config split described in [Docker](/install/docker):
94
+
95
+ - `<project>/.env` for Docker-specific values like image name, ports, and the gateway token
96
+ - `~/.Durar/.env` for env-backed provider keys and bot tokens
97
+ - `~/.Durar/agents/<agentId>/agent/auth-profiles.json` for stored provider OAuth/API-key auth
98
+ - `~/.Durar/Durar.json` for behavior config
99
+
100
+ Use `clawdock-show-config` when you want to inspect the `.env` files and `Durar.json` quickly. It redacts `.env` values in its printed output.
101
+
102
+ ## Related pages
103
+
104
+ - [Docker](/install/docker)
105
+ - [Docker VM Runtime](/install/docker-vm-runtime)
106
+ - [Updating](/install/updating)