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,412 @@
1
+ ---
2
+ summary: "Run Durar Gateway 24/7 on a GCP Compute Engine VM (Docker) with durable state"
3
+ read_when:
4
+ - You want Durar running 24/7 on GCP
5
+ - You want a production-grade, always-on Gateway on your own VM
6
+ - You want full control over persistence, binaries, and restart behavior
7
+ title: "GCP"
8
+ ---
9
+
10
+ # Durar on GCP Compute Engine (Docker, Production VPS Guide)
11
+
12
+ ## Goal
13
+
14
+ Run a persistent Durar Gateway on a GCP Compute Engine VM using Docker, with durable state, baked-in binaries, and safe restart behavior.
15
+
16
+ If you want "Durar 24/7 for ~$5-12/mo", this is a reliable setup on Google Cloud.
17
+ Pricing varies by machine type and region; pick the smallest VM that fits your workload and scale up if you hit OOMs.
18
+
19
+ ## What are we doing (simple terms)?
20
+
21
+ - Create a GCP project and enable billing
22
+ - Create a Compute Engine VM
23
+ - Install Docker (isolated app runtime)
24
+ - Start the Durar Gateway in Docker
25
+ - Persist `~/.Durar` + `~/.Durar/workspace` on the host (survives restarts/rebuilds)
26
+ - Access the Control UI from your laptop via an SSH tunnel
27
+
28
+ That mounted `~/.Durar` state includes `Durar.json`, per-agent
29
+ `agents/<agentId>/agent/auth-profiles.json`, and `.env`.
30
+
31
+ The Gateway can be accessed via:
32
+
33
+ - SSH port forwarding from your laptop
34
+ - Direct port exposure if you manage firewalling and tokens yourself
35
+
36
+ This guide uses Debian on GCP Compute Engine.
37
+ Ubuntu also works; map packages accordingly.
38
+ For the generic Docker flow, see [Docker](/install/docker).
39
+
40
+ ---
41
+
42
+ ## Quick path (experienced operators)
43
+
44
+ 1. Create GCP project + enable Compute Engine API
45
+ 2. Create Compute Engine VM (e2-small, Debian 12, 20GB)
46
+ 3. SSH into the VM
47
+ 4. Install Docker
48
+ 5. Clone Durar repository
49
+ 6. Create persistent host directories
50
+ 7. Configure `.env` and `docker-compose.yml`
51
+ 8. Bake required binaries, build, and launch
52
+
53
+ ---
54
+
55
+ ## What you need
56
+
57
+ - GCP account (free tier eligible for e2-micro)
58
+ - gcloud CLI installed (or use Cloud Console)
59
+ - SSH access from your laptop
60
+ - Basic comfort with SSH + copy/paste
61
+ - ~20-30 minutes
62
+ - Docker and Docker Compose
63
+ - Model auth credentials
64
+ - Optional provider credentials
65
+ - WhatsApp QR
66
+ - Telegram bot token
67
+ - Gmail OAuth
68
+
69
+ ---
70
+
71
+ <Steps>
72
+ <Step title="Install gcloud CLI (or use Console)">
73
+ **Option A: gcloud CLI** (recommended for automation)
74
+
75
+ Install from [https://cloud.google.com/sdk/docs/install](https://cloud.google.com/sdk/docs/install)
76
+
77
+ Initialize and authenticate:
78
+
79
+ ```bash
80
+ gcloud init
81
+ gcloud auth login
82
+ ```
83
+
84
+ **Option B: Cloud Console**
85
+
86
+ All steps can be done via the web UI at [https://console.cloud.google.com](https://console.cloud.google.com)
87
+
88
+ </Step>
89
+
90
+ <Step title="Create a GCP project">
91
+ **CLI:**
92
+
93
+ ```bash
94
+ gcloud projects create my-Durar-project --name="Durar Gateway"
95
+ gcloud config set project my-Durar-project
96
+ ```
97
+
98
+ Enable billing at [https://console.cloud.google.com/billing](https://console.cloud.google.com/billing) (required for Compute Engine).
99
+
100
+ Enable the Compute Engine API:
101
+
102
+ ```bash
103
+ gcloud services enable compute.googleapis.com
104
+ ```
105
+
106
+ **Console:**
107
+
108
+ 1. Go to IAM & Admin > Create Project
109
+ 2. Name it and create
110
+ 3. Enable billing for the project
111
+ 4. Navigate to APIs & Services > Enable APIs > search "Compute Engine API" > Enable
112
+
113
+ </Step>
114
+
115
+ <Step title="Create the VM">
116
+ **Machine types:**
117
+
118
+ | Type | Specs | Cost | Notes |
119
+ | --------- | ------------------------ | ------------------ | -------------------------------------------- |
120
+ | e2-medium | 2 vCPU, 4GB RAM | ~$25/mo | Most reliable for local Docker builds |
121
+ | e2-small | 2 vCPU, 2GB RAM | ~$12/mo | Minimum recommended for Docker build |
122
+ | e2-micro | 2 vCPU (shared), 1GB RAM | Free tier eligible | Often fails with Docker build OOM (exit 137) |
123
+
124
+ **CLI:**
125
+
126
+ ```bash
127
+ gcloud compute instances create Durar-gateway \
128
+ --zone=us-central1-a \
129
+ --machine-type=e2-small \
130
+ --boot-disk-size=20GB \
131
+ --image-family=debian-12 \
132
+ --image-project=debian-cloud
133
+ ```
134
+
135
+ **Console:**
136
+
137
+ 1. Go to Compute Engine > VM instances > Create instance
138
+ 2. Name: `Durar-gateway`
139
+ 3. Region: `us-central1`, Zone: `us-central1-a`
140
+ 4. Machine type: `e2-small`
141
+ 5. Boot disk: Debian 12, 20GB
142
+ 6. Create
143
+
144
+ </Step>
145
+
146
+ <Step title="SSH into the VM">
147
+ **CLI:**
148
+
149
+ ```bash
150
+ gcloud compute ssh Durar-gateway --zone=us-central1-a
151
+ ```
152
+
153
+ **Console:**
154
+
155
+ Click the "SSH" button next to your VM in the Compute Engine dashboard.
156
+
157
+ Note: SSH key propagation can take 1-2 minutes after VM creation. If connection is refused, wait and retry.
158
+
159
+ </Step>
160
+
161
+ <Step title="Install Docker (on the VM)">
162
+ ```bash
163
+ sudo apt-get update
164
+ sudo apt-get install -y git curl ca-certificates
165
+ curl -fsSL https://get.docker.com | sudo sh
166
+ sudo usermod -aG docker $USER
167
+ ```
168
+
169
+ Log out and back in for the group change to take effect:
170
+
171
+ ```bash
172
+ exit
173
+ ```
174
+
175
+ Then SSH back in:
176
+
177
+ ```bash
178
+ gcloud compute ssh Durar-gateway --zone=us-central1-a
179
+ ```
180
+
181
+ Verify:
182
+
183
+ ```bash
184
+ docker --version
185
+ docker compose version
186
+ ```
187
+
188
+ </Step>
189
+
190
+ <Step title="Clone the Durar repository">
191
+ ```bash
192
+ git clone https://github.com/openclaw/openclaw.git
193
+ cd Durar
194
+ ```
195
+
196
+ This guide assumes you will build a custom image to guarantee binary persistence.
197
+
198
+ </Step>
199
+
200
+ <Step title="Create persistent host directories">
201
+ Docker containers are ephemeral.
202
+ All long-lived state must live on the host.
203
+
204
+ ```bash
205
+ mkdir -p ~/.Durar
206
+ mkdir -p ~/.Durar/workspace
207
+ ```
208
+
209
+ </Step>
210
+
211
+ <Step title="Configure environment variables">
212
+ Create `.env` in the repository root.
213
+
214
+ ```bash
215
+ Durar_IMAGE=Durar:latest
216
+ Durar_GATEWAY_TOKEN=change-me-now
217
+ Durar_GATEWAY_BIND=lan
218
+ Durar_GATEWAY_PORT=18789
219
+
220
+ Durar_CONFIG_DIR=/home/$USER/.Durar
221
+ Durar_WORKSPACE_DIR=/home/$USER/.Durar/workspace
222
+
223
+ GOG_KEYRING_PASSWORD=change-me-now
224
+ XDG_CONFIG_HOME=/home/node/.Durar
225
+ ```
226
+
227
+ Generate strong secrets:
228
+
229
+ ```bash
230
+ openssl rand -hex 32
231
+ ```
232
+
233
+ **Do not commit this file.**
234
+
235
+ This `.env` file is for container/runtime env such as `Durar_GATEWAY_TOKEN`.
236
+ Stored provider OAuth/API-key auth lives in the mounted
237
+ `~/.Durar/agents/<agentId>/agent/auth-profiles.json`.
238
+
239
+ </Step>
240
+
241
+ <Step title="Docker Compose configuration">
242
+ Create or update `docker-compose.yml`.
243
+
244
+ ```yaml
245
+ services:
246
+ Durar-gateway:
247
+ image: ${Durar_IMAGE}
248
+ build: .
249
+ restart: unless-stopped
250
+ env_file:
251
+ - .env
252
+ environment:
253
+ - HOME=/home/node
254
+ - NODE_ENV=production
255
+ - TERM=xterm-256color
256
+ - Durar_GATEWAY_BIND=${Durar_GATEWAY_BIND}
257
+ - Durar_GATEWAY_PORT=${Durar_GATEWAY_PORT}
258
+ - Durar_GATEWAY_TOKEN=${Durar_GATEWAY_TOKEN}
259
+ - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
260
+ - XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
261
+ - PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
262
+ volumes:
263
+ - ${Durar_CONFIG_DIR}:/home/node/.Durar
264
+ - ${Durar_WORKSPACE_DIR}:/home/node/.Durar/workspace
265
+ ports:
266
+ # Recommended: keep the Gateway loopback-only on the VM; access via SSH tunnel.
267
+ # To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly.
268
+ - "127.0.0.1:${Durar_GATEWAY_PORT}:18789"
269
+ command:
270
+ [
271
+ "node",
272
+ "dist/index.js",
273
+ "gateway",
274
+ "--bind",
275
+ "${Durar_GATEWAY_BIND}",
276
+ "--port",
277
+ "${Durar_GATEWAY_PORT}",
278
+ "--allow-unconfigured",
279
+ ]
280
+ ```
281
+
282
+ `--allow-unconfigured` is only for bootstrap convenience, it is not a replacement for a proper gateway configuration. Still set auth (`gateway.auth.token` or password) and use safe bind settings for your deployment.
283
+
284
+ </Step>
285
+
286
+ <Step title="Shared Docker VM runtime steps">
287
+ Use the shared runtime guide for the common Docker host flow:
288
+
289
+ - [Bake required binaries into the image](/install/docker-vm-runtime#bake-required-binaries-into-the-image)
290
+ - [Build and launch](/install/docker-vm-runtime#build-and-launch)
291
+ - [What persists where](/install/docker-vm-runtime#what-persists-where)
292
+ - [Updates](/install/docker-vm-runtime#updates)
293
+
294
+ </Step>
295
+
296
+ <Step title="GCP-specific launch notes">
297
+ On GCP, if build fails with `Killed` or `exit code 137` during `pnpm install --frozen-lockfile`, the VM is out of memory. Use `e2-small` minimum, or `e2-medium` for more reliable first builds.
298
+
299
+ When binding to LAN (`Durar_GATEWAY_BIND=lan`), configure a trusted browser origin before continuing:
300
+
301
+ ```bash
302
+ docker compose run --rm Durar-cli config set gateway.controlUi.allowedOrigins '["http://127.0.0.1:18789"]' --strict-json
303
+ ```
304
+
305
+ If you changed the gateway port, replace `18789` with your configured port.
306
+
307
+ </Step>
308
+
309
+ <Step title="Access from your laptop">
310
+ Create an SSH tunnel to forward the Gateway port:
311
+
312
+ ```bash
313
+ gcloud compute ssh Durar-gateway --zone=us-central1-a -- -L 18789:127.0.0.1:18789
314
+ ```
315
+
316
+ Open in your browser:
317
+
318
+ `http://127.0.0.1:18789/`
319
+
320
+ Reprint a clean dashboard link:
321
+
322
+ ```bash
323
+ docker compose run --rm Durar-cli dashboard --no-open
324
+ ```
325
+
326
+ If the UI prompts for shared-secret auth, paste the configured token or
327
+ password into Control UI settings. This Docker flow writes a token by
328
+ default; if you switch the container config to password auth, use that
329
+ password instead.
330
+
331
+ If Control UI shows `unauthorized` or `disconnected (1008): pairing required`, approve the browser device:
332
+
333
+ ```bash
334
+ docker compose run --rm Durar-cli devices list
335
+ docker compose run --rm Durar-cli devices approve <requestId>
336
+ ```
337
+
338
+ Need the shared persistence and update reference again?
339
+ See [Docker VM Runtime](/install/docker-vm-runtime#what-persists-where) and [Docker VM Runtime updates](/install/docker-vm-runtime#updates).
340
+
341
+ </Step>
342
+ </Steps>
343
+
344
+ ---
345
+
346
+ ## Troubleshooting
347
+
348
+ **SSH connection refused**
349
+
350
+ SSH key propagation can take 1-2 minutes after VM creation. Wait and retry.
351
+
352
+ **OS Login issues**
353
+
354
+ Check your OS Login profile:
355
+
356
+ ```bash
357
+ gcloud compute os-login describe-profile
358
+ ```
359
+
360
+ Ensure your account has the required IAM permissions (Compute OS Login or Compute OS Admin Login).
361
+
362
+ **Out of memory (OOM)**
363
+
364
+ If Docker build fails with `Killed` and `exit code 137`, the VM was OOM-killed. Upgrade to e2-small (minimum) or e2-medium (recommended for reliable local builds):
365
+
366
+ ```bash
367
+ # Stop the VM first
368
+ gcloud compute instances stop Durar-gateway --zone=us-central1-a
369
+
370
+ # Change machine type
371
+ gcloud compute instances set-machine-type Durar-gateway \
372
+ --zone=us-central1-a \
373
+ --machine-type=e2-small
374
+
375
+ # Start the VM
376
+ gcloud compute instances start Durar-gateway --zone=us-central1-a
377
+ ```
378
+
379
+ ---
380
+
381
+ ## Service accounts (security best practice)
382
+
383
+ For personal use, your default user account works fine.
384
+
385
+ For automation or CI/CD pipelines, create a dedicated service account with minimal permissions:
386
+
387
+ 1. Create a service account:
388
+
389
+ ```bash
390
+ gcloud iam service-accounts create Durar-deploy \
391
+ --display-name="Durar Deployment"
392
+ ```
393
+
394
+ 2. Grant Compute Instance Admin role (or narrower custom role):
395
+
396
+ ```bash
397
+ gcloud projects add-iam-policy-binding my-Durar-project \
398
+ --member="serviceAccount:Durar-deploy@my-Durar-project.iam.gserviceaccount.com" \
399
+ --role="roles/compute.instanceAdmin.v1"
400
+ ```
401
+
402
+ Avoid using the Owner role for automation. Use the principle of least privilege.
403
+
404
+ See [https://cloud.google.com/iam/docs/understanding-roles](https://cloud.google.com/iam/docs/understanding-roles) for IAM role details.
405
+
406
+ ---
407
+
408
+ ## Next steps
409
+
410
+ - Set up messaging channels: [Channels](/channels)
411
+ - Pair local devices as nodes: [Nodes](/nodes)
412
+ - Configure the Gateway: [Gateway configuration](/gateway/configuration)
@@ -0,0 +1,259 @@
1
+ ---
2
+ summary: "Run Durar Gateway 24/7 on a cheap Hetzner VPS (Docker) with durable state and baked-in binaries"
3
+ read_when:
4
+ - You want Durar running 24/7 on a cloud VPS (not your laptop)
5
+ - You want a production-grade, always-on Gateway on your own VPS
6
+ - You want full control over persistence, binaries, and restart behavior
7
+ - You are running Durar in Docker on Hetzner or a similar provider
8
+ title: "Hetzner"
9
+ ---
10
+
11
+ # Durar on Hetzner (Docker, Production VPS Guide)
12
+
13
+ ## Goal
14
+
15
+ Run a persistent Durar Gateway on a Hetzner VPS using Docker, with durable state, baked-in binaries, and safe restart behavior.
16
+
17
+ If you want “Durar 24/7 for ~$5”, this is the simplest reliable setup.
18
+ Hetzner pricing changes; pick the smallest Debian/Ubuntu VPS and scale up if you hit OOMs.
19
+
20
+ Security model reminder:
21
+
22
+ - Company-shared agents are fine when everyone is in the same trust boundary and the runtime is business-only.
23
+ - Keep strict separation: dedicated VPS/runtime + dedicated accounts; no personal Apple/Google/browser/password-manager profiles on that host.
24
+ - If users are adversarial to each other, split by gateway/host/OS user.
25
+
26
+ See [Security](/gateway/security) and [VPS hosting](/vps).
27
+
28
+ ## What are we doing (simple terms)?
29
+
30
+ - Rent a small Linux server (Hetzner VPS)
31
+ - Install Docker (isolated app runtime)
32
+ - Start the Durar Gateway in Docker
33
+ - Persist `~/.Durar` + `~/.Durar/workspace` on the host (survives restarts/rebuilds)
34
+ - Access the Control UI from your laptop via an SSH tunnel
35
+
36
+ That mounted `~/.Durar` state includes `Durar.json`, per-agent
37
+ `agents/<agentId>/agent/auth-profiles.json`, and `.env`.
38
+
39
+ The Gateway can be accessed via:
40
+
41
+ - SSH port forwarding from your laptop
42
+ - Direct port exposure if you manage firewalling and tokens yourself
43
+
44
+ This guide assumes Ubuntu or Debian on Hetzner.
45
+ If you are on another Linux VPS, map packages accordingly.
46
+ For the generic Docker flow, see [Docker](/install/docker).
47
+
48
+ ---
49
+
50
+ ## Quick path (experienced operators)
51
+
52
+ 1. Provision Hetzner VPS
53
+ 2. Install Docker
54
+ 3. Clone Durar repository
55
+ 4. Create persistent host directories
56
+ 5. Configure `.env` and `docker-compose.yml`
57
+ 6. Bake required binaries into the image
58
+ 7. `docker compose up -d`
59
+ 8. Verify persistence and Gateway access
60
+
61
+ ---
62
+
63
+ ## What you need
64
+
65
+ - Hetzner VPS with root access
66
+ - SSH access from your laptop
67
+ - Basic comfort with SSH + copy/paste
68
+ - ~20 minutes
69
+ - Docker and Docker Compose
70
+ - Model auth credentials
71
+ - Optional provider credentials
72
+ - WhatsApp QR
73
+ - Telegram bot token
74
+ - Gmail OAuth
75
+
76
+ ---
77
+
78
+ <Steps>
79
+ <Step title="Provision the VPS">
80
+ Create an Ubuntu or Debian VPS in Hetzner.
81
+
82
+ Connect as root:
83
+
84
+ ```bash
85
+ ssh root@YOUR_VPS_IP
86
+ ```
87
+
88
+ This guide assumes the VPS is stateful.
89
+ Do not treat it as disposable infrastructure.
90
+
91
+ </Step>
92
+
93
+ <Step title="Install Docker (on the VPS)">
94
+ ```bash
95
+ apt-get update
96
+ apt-get install -y git curl ca-certificates
97
+ curl -fsSL https://get.docker.com | sh
98
+ ```
99
+
100
+ Verify:
101
+
102
+ ```bash
103
+ docker --version
104
+ docker compose version
105
+ ```
106
+
107
+ </Step>
108
+
109
+ <Step title="Clone the Durar repository">
110
+ ```bash
111
+ git clone https://github.com/openclaw/openclaw.git
112
+ cd Durar
113
+ ```
114
+
115
+ This guide assumes you will build a custom image to guarantee binary persistence.
116
+
117
+ </Step>
118
+
119
+ <Step title="Create persistent host directories">
120
+ Docker containers are ephemeral.
121
+ All long-lived state must live on the host.
122
+
123
+ ```bash
124
+ mkdir -p /root/.Durar/workspace
125
+
126
+ # Set ownership to the container user (uid 1000):
127
+ chown -R 1000:1000 /root/.Durar
128
+ ```
129
+
130
+ </Step>
131
+
132
+ <Step title="Configure environment variables">
133
+ Create `.env` in the repository root.
134
+
135
+ ```bash
136
+ Durar_IMAGE=Durar:latest
137
+ Durar_GATEWAY_TOKEN=change-me-now
138
+ Durar_GATEWAY_BIND=lan
139
+ Durar_GATEWAY_PORT=18789
140
+
141
+ Durar_CONFIG_DIR=/root/.Durar
142
+ Durar_WORKSPACE_DIR=/root/.Durar/workspace
143
+
144
+ GOG_KEYRING_PASSWORD=change-me-now
145
+ XDG_CONFIG_HOME=/home/node/.Durar
146
+ ```
147
+
148
+ Generate strong secrets:
149
+
150
+ ```bash
151
+ openssl rand -hex 32
152
+ ```
153
+
154
+ **Do not commit this file.**
155
+
156
+ This `.env` file is for container/runtime env such as `Durar_GATEWAY_TOKEN`.
157
+ Stored provider OAuth/API-key auth lives in the mounted
158
+ `~/.Durar/agents/<agentId>/agent/auth-profiles.json`.
159
+
160
+ </Step>
161
+
162
+ <Step title="Docker Compose configuration">
163
+ Create or update `docker-compose.yml`.
164
+
165
+ ```yaml
166
+ services:
167
+ Durar-gateway:
168
+ image: ${Durar_IMAGE}
169
+ build: .
170
+ restart: unless-stopped
171
+ env_file:
172
+ - .env
173
+ environment:
174
+ - HOME=/home/node
175
+ - NODE_ENV=production
176
+ - TERM=xterm-256color
177
+ - Durar_GATEWAY_BIND=${Durar_GATEWAY_BIND}
178
+ - Durar_GATEWAY_PORT=${Durar_GATEWAY_PORT}
179
+ - Durar_GATEWAY_TOKEN=${Durar_GATEWAY_TOKEN}
180
+ - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
181
+ - XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
182
+ - PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
183
+ volumes:
184
+ - ${Durar_CONFIG_DIR}:/home/node/.Durar
185
+ - ${Durar_WORKSPACE_DIR}:/home/node/.Durar/workspace
186
+ ports:
187
+ # Recommended: keep the Gateway loopback-only on the VPS; access via SSH tunnel.
188
+ # To expose it publicly, remove the `127.0.0.1:` prefix and firewall accordingly.
189
+ - "127.0.0.1:${Durar_GATEWAY_PORT}:18789"
190
+ command:
191
+ [
192
+ "node",
193
+ "dist/index.js",
194
+ "gateway",
195
+ "--bind",
196
+ "${Durar_GATEWAY_BIND}",
197
+ "--port",
198
+ "${Durar_GATEWAY_PORT}",
199
+ "--allow-unconfigured",
200
+ ]
201
+ ```
202
+
203
+ `--allow-unconfigured` is only for bootstrap convenience, it is not a replacement for a proper gateway configuration. Still set auth (`gateway.auth.token` or password) and use safe bind settings for your deployment.
204
+
205
+ </Step>
206
+
207
+ <Step title="Shared Docker VM runtime steps">
208
+ Use the shared runtime guide for the common Docker host flow:
209
+
210
+ - [Bake required binaries into the image](/install/docker-vm-runtime#bake-required-binaries-into-the-image)
211
+ - [Build and launch](/install/docker-vm-runtime#build-and-launch)
212
+ - [What persists where](/install/docker-vm-runtime#what-persists-where)
213
+ - [Updates](/install/docker-vm-runtime#updates)
214
+
215
+ </Step>
216
+
217
+ <Step title="Hetzner-specific access">
218
+ After the shared build and launch steps, tunnel from your laptop:
219
+
220
+ ```bash
221
+ ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP
222
+ ```
223
+
224
+ Open:
225
+
226
+ `http://127.0.0.1:18789/`
227
+
228
+ Paste the configured shared secret. This guide uses the gateway token by
229
+ default; if you switched to password auth, use that password instead.
230
+
231
+ </Step>
232
+ </Steps>
233
+
234
+ The shared persistence map lives in [Docker VM Runtime](/install/docker-vm-runtime#what-persists-where).
235
+
236
+ ## Infrastructure as Code (Terraform)
237
+
238
+ For teams preferring infrastructure-as-code workflows, a community-maintained Terraform setup provides:
239
+
240
+ - Modular Terraform configuration with remote state management
241
+ - Automated provisioning via cloud-init
242
+ - Deployment scripts (bootstrap, deploy, backup/restore)
243
+ - Security hardening (firewall, UFW, SSH-only access)
244
+ - SSH tunnel configuration for gateway access
245
+
246
+ **Repositories:**
247
+
248
+ - Infrastructure: [Durar-terraform-hetzner](https://github.com/andreesg/Durar-terraform-hetzner)
249
+ - Docker config: [Durar-docker-config](https://github.com/andreesg/Durar-docker-config)
250
+
251
+ This approach complements the Docker setup above with reproducible deployments, version-controlled infrastructure, and automated disaster recovery.
252
+
253
+ > **Note:** Community-maintained. For issues or contributions, see the repository links above.
254
+
255
+ ## Next steps
256
+
257
+ - Set up messaging channels: [Channels](/channels)
258
+ - Configure the Gateway: [Gateway configuration](/gateway/configuration)
259
+ - Keep Durar up to date: [Updating](/install/updating)