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,197 @@
1
+ ---
2
+ summary: "How Durar builds prompt context and reports token usage + costs"
3
+ read_when:
4
+ - Explaining token usage, costs, or context windows
5
+ - Debugging context growth or compaction behavior
6
+ title: "Token Use and Costs"
7
+ ---
8
+
9
+ # Token use & costs
10
+
11
+ Durar tracks **tokens**, not characters. Tokens are model-specific, but most
12
+ OpenAI-style models average ~4 characters per token for English text.
13
+
14
+ ## How the system prompt is built
15
+
16
+ Durar assembles its own system prompt on every run. It includes:
17
+
18
+ - Tool list + short descriptions
19
+ - Skills list (only metadata; instructions are loaded on demand with `read`)
20
+ - Self-update instructions
21
+ - Workspace + bootstrap files (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md` when new, plus `MEMORY.md` when present or `memory.md` as a lowercase fallback). Large files are truncated by `agents.defaults.bootstrapMaxChars` (default: 20000), and total bootstrap injection is capped by `agents.defaults.bootstrapTotalMaxChars` (default: 150000). `memory/*.md` files are on-demand via memory tools and are not auto-injected.
22
+ - Time (UTC + user timezone)
23
+ - Reply tags + heartbeat behavior
24
+ - Runtime metadata (host/OS/model/thinking)
25
+
26
+ See the full breakdown in [System Prompt](/concepts/system-prompt).
27
+
28
+ ## What counts in the context window
29
+
30
+ Everything the model receives counts toward the context limit:
31
+
32
+ - System prompt (all sections listed above)
33
+ - Conversation history (user + assistant messages)
34
+ - Tool calls and tool results
35
+ - Attachments/transcripts (images, audio, files)
36
+ - Compaction summaries and pruning artifacts
37
+ - Provider wrappers or safety headers (not visible, but still counted)
38
+
39
+ For images, Durar downscales transcript/tool image payloads before provider calls.
40
+ Use `agents.defaults.imageMaxDimensionPx` (default: `1200`) to tune this:
41
+
42
+ - Lower values usually reduce vision-token usage and payload size.
43
+ - Higher values preserve more visual detail for OCR/UI-heavy screenshots.
44
+
45
+ For a practical breakdown (per injected file, tools, skills, and system prompt size), use `/context list` or `/context detail`. See [Context](/concepts/context).
46
+
47
+ ## How to see current token usage
48
+
49
+ Use these in chat:
50
+
51
+ - `/status` → **emoji‑rich status card** with the session model, context usage,
52
+ last response input/output tokens, and **estimated cost** (API key only).
53
+ - `/usage off|tokens|full` → appends a **per-response usage footer** to every reply.
54
+ - Persists per session (stored as `responseUsage`).
55
+ - OAuth auth **hides cost** (tokens only).
56
+ - `/usage cost` → shows a local cost summary from Durar session logs.
57
+
58
+ Other surfaces:
59
+
60
+ - **TUI/Web TUI:** `/status` + `/usage` are supported.
61
+ - **CLI:** `Durar status --usage` and `Durar channels list` show
62
+ normalized provider quota windows (`X% left`, not per-response costs).
63
+ Current usage-window providers: Anthropic, GitHub Copilot, Gemini CLI,
64
+ OpenAI Codex, MiniMax, Xiaomi, and z.ai.
65
+
66
+ Usage surfaces normalize common provider-native field aliases before display.
67
+ For OpenAI-family Responses traffic, that includes both `input_tokens` /
68
+ `output_tokens` and `prompt_tokens` / `completion_tokens`, so transport-specific
69
+ field names do not change `/status`, `/usage`, or session summaries.
70
+ Gemini CLI JSON usage is normalized too: reply text comes from `response`, and
71
+ `stats.cached` maps to `cacheRead` with `stats.input_tokens - stats.cached`
72
+ used when the CLI omits an explicit `stats.input` field.
73
+ For native OpenAI-family Responses traffic, WebSocket/SSE usage aliases are
74
+ normalized the same way, and totals fall back to normalized input + output when
75
+ `total_tokens` is missing or `0`.
76
+ When the current session snapshot is sparse, `/status` and `session_status` can
77
+ also recover token/cache counters and the active runtime model label from the
78
+ most recent transcript usage log. Existing nonzero live values still take
79
+ precedence over transcript fallback values, and larger prompt-oriented
80
+ transcript totals can win when stored totals are missing or smaller.
81
+ Usage auth for provider quota windows comes from provider-specific hooks when
82
+ available; otherwise Durar falls back to matching OAuth/API-key credentials
83
+ from auth profiles, env, or config.
84
+
85
+ ## Cost estimation (when shown)
86
+
87
+ Costs are estimated from your model pricing config:
88
+
89
+ ```
90
+ models.providers.<provider>.models[].cost
91
+ ```
92
+
93
+ These are **USD per 1M tokens** for `input`, `output`, `cacheRead`, and
94
+ `cacheWrite`. If pricing is missing, Durar shows tokens only. OAuth tokens
95
+ never show dollar cost.
96
+
97
+ ## Cache TTL and pruning impact
98
+
99
+ Provider prompt caching only applies within the cache TTL window. Durar can
100
+ optionally run **cache-ttl pruning**: it prunes the session once the cache TTL
101
+ has expired, then resets the cache window so subsequent requests can re-use the
102
+ freshly cached context instead of re-caching the full history. This keeps cache
103
+ write costs lower when a session goes idle past the TTL.
104
+
105
+ Configure it in [Gateway configuration](/gateway/configuration) and see the
106
+ behavior details in [Session pruning](/concepts/session-pruning).
107
+
108
+ Heartbeat can keep the cache **warm** across idle gaps. If your model cache TTL
109
+ is `1h`, setting the heartbeat interval just under that (e.g., `55m`) can avoid
110
+ re-caching the full prompt, reducing cache write costs.
111
+
112
+ In multi-agent setups, you can keep one shared model config and tune cache behavior
113
+ per agent with `agents.list[].params.cacheRetention`.
114
+
115
+ For a full knob-by-knob guide, see [Prompt Caching](/reference/prompt-caching).
116
+
117
+ For Anthropic API pricing, cache reads are significantly cheaper than input
118
+ tokens, while cache writes are billed at a higher multiplier. See Anthropic’s
119
+ prompt caching pricing for the latest rates and TTL multipliers:
120
+ [https://docs.anthropic.com/docs/build-with-claude/prompt-caching](https://docs.anthropic.com/docs/build-with-claude/prompt-caching)
121
+
122
+ ### Example: keep 1h cache warm with heartbeat
123
+
124
+ ```yaml
125
+ agents:
126
+ defaults:
127
+ model:
128
+ primary: "anthropic/claude-opus-4-6"
129
+ models:
130
+ "anthropic/claude-opus-4-6":
131
+ params:
132
+ cacheRetention: "long"
133
+ heartbeat:
134
+ every: "55m"
135
+ ```
136
+
137
+ ### Example: mixed traffic with per-agent cache strategy
138
+
139
+ ```yaml
140
+ agents:
141
+ defaults:
142
+ model:
143
+ primary: "anthropic/claude-opus-4-6"
144
+ models:
145
+ "anthropic/claude-opus-4-6":
146
+ params:
147
+ cacheRetention: "long" # default baseline for most agents
148
+ list:
149
+ - id: "research"
150
+ default: true
151
+ heartbeat:
152
+ every: "55m" # keep long cache warm for deep sessions
153
+ - id: "alerts"
154
+ params:
155
+ cacheRetention: "none" # avoid cache writes for bursty notifications
156
+ ```
157
+
158
+ `agents.list[].params` merges on top of the selected model's `params`, so you can
159
+ override only `cacheRetention` and inherit other model defaults unchanged.
160
+
161
+ ### Example: enable Anthropic 1M context beta header
162
+
163
+ Anthropic's 1M context window is currently beta-gated. Durar can inject the
164
+ required `anthropic-beta` value when you enable `context1m` on supported Opus
165
+ or Sonnet models.
166
+
167
+ ```yaml
168
+ agents:
169
+ defaults:
170
+ models:
171
+ "anthropic/claude-opus-4-6":
172
+ params:
173
+ context1m: true
174
+ ```
175
+
176
+ This maps to Anthropic's `context-1m-2025-08-07` beta header.
177
+
178
+ This only applies when `context1m: true` is set on that model entry.
179
+
180
+ Requirement: the credential must be eligible for long-context usage (API key
181
+ billing, or Durar's Claude-login path with Extra Usage enabled). If not,
182
+ Anthropic responds
183
+ with `HTTP 429: rate_limit_error: Extra usage is required for long context requests`.
184
+
185
+ If you authenticate Anthropic with OAuth/subscription tokens (`sk-ant-oat-*`),
186
+ Durar skips the `context-1m-*` beta header because Anthropic currently
187
+ rejects that combination with HTTP 401.
188
+
189
+ ## Tips for reducing token pressure
190
+
191
+ - Use `/compact` to summarize long sessions.
192
+ - Trim large tool outputs in your workflows.
193
+ - Lower `agents.defaults.imageMaxDimensionPx` for screenshot-heavy sessions.
194
+ - Keep skill descriptions short (skill list is injected into the prompt).
195
+ - Prefer smaller models for verbose, exploratory work.
196
+
197
+ See [Skills](/tools/skills) for the exact skill list overhead formula.
@@ -0,0 +1,151 @@
1
+ ---
2
+ summary: "Reference: provider-specific transcript sanitization and repair rules"
3
+ read_when:
4
+ - You are debugging provider request rejections tied to transcript shape
5
+ - You are changing transcript sanitization or tool-call repair logic
6
+ - You are investigating tool-call id mismatches across providers
7
+ title: "Transcript Hygiene"
8
+ ---
9
+
10
+ # Transcript Hygiene (Provider Fixups)
11
+
12
+ This document describes **provider-specific fixes** applied to transcripts before a run
13
+ (building model context). These are **in-memory** adjustments used to satisfy strict
14
+ provider requirements. These hygiene steps do **not** rewrite the stored JSONL transcript
15
+ on disk; however, a separate session-file repair pass may rewrite malformed JSONL files
16
+ by dropping invalid lines before the session is loaded. When a repair occurs, the original
17
+ file is backed up alongside the session file.
18
+
19
+ Scope includes:
20
+
21
+ - Tool call id sanitization
22
+ - Tool call input validation
23
+ - Tool result pairing repair
24
+ - Turn validation / ordering
25
+ - Thought signature cleanup
26
+ - Image payload sanitization
27
+ - User-input provenance tagging (for inter-session routed prompts)
28
+
29
+ If you need transcript storage details, see:
30
+
31
+ - [/reference/session-management-compaction](/reference/session-management-compaction)
32
+
33
+ ---
34
+
35
+ ## Where this runs
36
+
37
+ All transcript hygiene is centralized in the embedded runner:
38
+
39
+ - Policy selection: `src/agents/transcript-policy.ts`
40
+ - Sanitization/repair application: `sanitizeSessionHistory` in `src/agents/pi-embedded-runner/google.ts`
41
+
42
+ The policy uses `provider`, `modelApi`, and `modelId` to decide what to apply.
43
+
44
+ Separate from transcript hygiene, session files are repaired (if needed) before load:
45
+
46
+ - `repairSessionFileIfNeeded` in `src/agents/session-file-repair.ts`
47
+ - Called from `run/attempt.ts` and `compact.ts` (embedded runner)
48
+
49
+ ---
50
+
51
+ ## Global rule: image sanitization
52
+
53
+ Image payloads are always sanitized to prevent provider-side rejection due to size
54
+ limits (downscale/recompress oversized base64 images).
55
+
56
+ This also helps control image-driven token pressure for vision-capable models.
57
+ Lower max dimensions generally reduce token usage; higher dimensions preserve detail.
58
+
59
+ Implementation:
60
+
61
+ - `sanitizeSessionMessagesImages` in `src/agents/pi-embedded-helpers/images.ts`
62
+ - `sanitizeContentBlocksImages` in `src/agents/tool-images.ts`
63
+ - Max image side is configurable via `agents.defaults.imageMaxDimensionPx` (default: `1200`).
64
+
65
+ ---
66
+
67
+ ## Global rule: malformed tool calls
68
+
69
+ Assistant tool-call blocks that are missing both `input` and `arguments` are dropped
70
+ before model context is built. This prevents provider rejections from partially
71
+ persisted tool calls (for example, after a rate limit failure).
72
+
73
+ Implementation:
74
+
75
+ - `sanitizeToolCallInputs` in `src/agents/session-transcript-repair.ts`
76
+ - Applied in `sanitizeSessionHistory` in `src/agents/pi-embedded-runner/google.ts`
77
+
78
+ ---
79
+
80
+ ## Global rule: inter-session input provenance
81
+
82
+ When an agent sends a prompt into another session via `sessions_send` (including
83
+ agent-to-agent reply/announce steps), Durar persists the created user turn with:
84
+
85
+ - `message.provenance.kind = "inter_session"`
86
+
87
+ This metadata is written at transcript append time and does not change role
88
+ (`role: "user"` remains for provider compatibility). Transcript readers can use
89
+ this to avoid treating routed internal prompts as end-user-authored instructions.
90
+
91
+ During context rebuild, Durar also prepends a short `[Inter-session message]`
92
+ marker to those user turns in-memory so the model can distinguish them from
93
+ external end-user instructions.
94
+
95
+ ---
96
+
97
+ ## Provider matrix (current behavior)
98
+
99
+ **OpenAI / OpenAI Codex**
100
+
101
+ - Image sanitization only.
102
+ - Drop orphaned reasoning signatures (standalone reasoning items without a following content block) for OpenAI Responses/Codex transcripts.
103
+ - No tool call id sanitization.
104
+ - No tool result pairing repair.
105
+ - No turn validation or reordering.
106
+ - No synthetic tool results.
107
+ - No thought signature stripping.
108
+
109
+ **Google (Generative AI / Gemini CLI / Antigravity)**
110
+
111
+ - Tool call id sanitization: strict alphanumeric.
112
+ - Tool result pairing repair and synthetic tool results.
113
+ - Turn validation (Gemini-style turn alternation).
114
+ - Google turn ordering fixup (prepend a tiny user bootstrap if history starts with assistant).
115
+ - Antigravity Claude: normalize thinking signatures; drop unsigned thinking blocks.
116
+
117
+ **Anthropic / Minimax (Anthropic-compatible)**
118
+
119
+ - Tool result pairing repair and synthetic tool results.
120
+ - Turn validation (merge consecutive user turns to satisfy strict alternation).
121
+
122
+ **Mistral (including model-id based detection)**
123
+
124
+ - Tool call id sanitization: strict9 (alphanumeric length 9).
125
+
126
+ **OpenRouter Gemini**
127
+
128
+ - Thought signature cleanup: strip non-base64 `thought_signature` values (keep base64).
129
+
130
+ **Everything else**
131
+
132
+ - Image sanitization only.
133
+
134
+ ---
135
+
136
+ ## Historical behavior (pre-2026.1.22)
137
+
138
+ Before the 2026.1.22 release, Durar applied multiple layers of transcript hygiene:
139
+
140
+ - A **transcript-sanitize extension** ran on every context build and could:
141
+ - Repair tool use/result pairing.
142
+ - Sanitize tool call ids (including a non-strict mode that preserved `_`/`-`).
143
+ - The runner also performed provider-specific sanitization, which duplicated work.
144
+ - Additional mutations occurred outside the provider policy, including:
145
+ - Stripping `<final>` tags from assistant text before persistence.
146
+ - Dropping empty assistant error turns.
147
+ - Trimming assistant content after tool calls.
148
+
149
+ This complexity caused cross-provider regressions (notably `openai-responses`
150
+ `call_id|fc_id` pairing). The 2026.1.22 cleanup removed the extension, centralized
151
+ logic in the runner, and made OpenAI **no-touch** beyond image sanitization.
@@ -0,0 +1,245 @@
1
+ ---
2
+ summary: "Full reference for CLI onboarding: every step, flag, and config field"
3
+ read_when:
4
+ - Looking up a specific onboarding step or flag
5
+ - Automating onboarding with non-interactive mode
6
+ - Debugging onboarding behavior
7
+ title: "Onboarding Reference"
8
+ sidebarTitle: "Onboarding Reference"
9
+ ---
10
+
11
+ # Onboarding Reference
12
+
13
+ This is the full reference for `Durar onboard`.
14
+ For a high-level overview, see [Onboarding (CLI)](/start/wizard).
15
+
16
+ ## Flow details (local mode)
17
+
18
+ <Steps>
19
+ <Step title="Existing config detection">
20
+ - If `~/.Durar/Durar.json` exists, choose **Keep / Modify / Reset**.
21
+ - Re-running onboarding does **not** wipe anything unless you explicitly choose **Reset**
22
+ (or pass `--reset`).
23
+ - CLI `--reset` defaults to `config+creds+sessions`; use `--reset-scope full`
24
+ to also remove workspace.
25
+ - If the config is invalid or contains legacy keys, the wizard stops and asks
26
+ you to run `Durar doctor` before continuing.
27
+ - Reset uses `trash` (never `rm`) and offers scopes:
28
+ - Config only
29
+ - Config + credentials + sessions
30
+ - Full reset (also removes workspace)
31
+ </Step>
32
+ <Step title="Model/Auth">
33
+ - **Anthropic API key**: uses `ANTHROPIC_API_KEY` if present or prompts for a key, then saves it for daemon use.
34
+ - **Anthropic Claude CLI**: preferred Anthropic assistant choice in onboarding/configure. On macOS onboarding checks Keychain item "Claude Code-credentials" (choose "Always Allow" so launchd starts don't block); on Linux/Windows it reuses `~/.claude/.credentials.json` if present and switches model selection to a canonical `claude-cli/claude-*` ref.
35
+ - **Anthropic setup-token (legacy/manual)**: available again in onboarding/configure, but Anthropic told Durar users that the Durar Claude-login path counts as third-party harness usage and requires **Extra Usage** on the Claude account.
36
+ - **OpenAI Code (Codex) subscription (Codex CLI)**: if `~/.codex/auth.json` exists, onboarding can reuse it. Reused Codex CLI credentials stay managed by Codex CLI; on expiry Durar re-reads that source first and, when the provider can refresh it, writes the refreshed credential back to Codex storage instead of taking ownership itself.
37
+ - **OpenAI Code (Codex) subscription (OAuth)**: browser flow; paste the `code#state`.
38
+ - Sets `agents.defaults.model` to `openai-codex/gpt-5.4` when model is unset or `openai/*`.
39
+ - **OpenAI API key**: uses `OPENAI_API_KEY` if present or prompts for a key, then stores it in auth profiles.
40
+ - Sets `agents.defaults.model` to `openai/gpt-5.4` when model is unset, `openai/*`, or `openai-codex/*`.
41
+ - **xAI (Grok) API key**: prompts for `XAI_API_KEY` and configures xAI as a model provider.
42
+ - **OpenCode**: prompts for `OPENCODE_API_KEY` (or `OPENCODE_ZEN_API_KEY`, get it at https://opencode.ai/auth) and lets you pick the Zen or Go catalog.
43
+ - **Ollama**: prompts for the Ollama base URL, offers **Cloud + Local** or **Local** mode, discovers available models, and auto-pulls the selected local model when needed.
44
+ - More detail: [Ollama](/providers/ollama)
45
+ - **API key**: stores the key for you.
46
+ - **Vercel AI Gateway (multi-model proxy)**: prompts for `AI_GATEWAY_API_KEY`.
47
+ - More detail: [Vercel AI Gateway](/providers/vercel-ai-gateway)
48
+ - **Cloudflare AI Gateway**: prompts for Account ID, Gateway ID, and `CLOUDFLARE_AI_GATEWAY_API_KEY`.
49
+ - More detail: [Cloudflare AI Gateway](/providers/cloudflare-ai-gateway)
50
+ - **MiniMax**: config is auto-written; hosted default is `MiniMax-M2.7`.
51
+ API-key setup uses `minimax/...`, and OAuth setup uses
52
+ `minimax-portal/...`.
53
+ - More detail: [MiniMax](/providers/minimax)
54
+ - **StepFun**: config is auto-written for StepFun standard or Step Plan on China or global endpoints.
55
+ - Standard currently includes `step-3.5-flash`, and Step Plan also includes `step-3.5-flash-2603`.
56
+ - More detail: [StepFun](/providers/stepfun)
57
+ - **Synthetic (Anthropic-compatible)**: prompts for `SYNTHETIC_API_KEY`.
58
+ - More detail: [Synthetic](/providers/synthetic)
59
+ - **Moonshot (Kimi K2)**: config is auto-written.
60
+ - **Kimi Coding**: config is auto-written.
61
+ - More detail: [Moonshot AI (Kimi + Kimi Coding)](/providers/moonshot)
62
+ - **Skip**: no auth configured yet.
63
+ - Pick a default model from detected options (or enter provider/model manually). For best quality and lower prompt-injection risk, choose the strongest latest-generation model available in your provider stack.
64
+ - Onboarding runs a model check and warns if the configured model is unknown or missing auth.
65
+ - API key storage mode defaults to plaintext auth-profile values. Use `--secret-input-mode ref` to store env-backed refs instead (for example `keyRef: { source: "env", provider: "default", id: "OPENAI_API_KEY" }`).
66
+ - Auth profiles live in `~/.Durar/agents/<agentId>/agent/auth-profiles.json` (API keys + OAuth). `~/.Durar/credentials/oauth.json` is legacy import-only.
67
+ - More detail: [/concepts/oauth](/concepts/oauth)
68
+ <Note>
69
+ Headless/server tip: complete OAuth on a machine with a browser, then copy
70
+ that agent's `auth-profiles.json` (for example
71
+ `~/.Durar/agents/<agentId>/agent/auth-profiles.json`, or the matching
72
+ `$Durar_STATE_DIR/...` path) to the gateway host. `credentials/oauth.json`
73
+ is only a legacy import source.
74
+ </Note>
75
+ </Step>
76
+ <Step title="Workspace">
77
+ - Default `~/.Durar/workspace` (configurable).
78
+ - Seeds the workspace files needed for the agent bootstrap ritual.
79
+ - Full workspace layout + backup guide: [Agent workspace](/concepts/agent-workspace)
80
+ </Step>
81
+ <Step title="Gateway">
82
+ - Port, bind, auth mode, tailscale exposure.
83
+ - Auth recommendation: keep **Token** even for loopback so local WS clients must authenticate.
84
+ - In token mode, interactive setup offers:
85
+ - **Generate/store plaintext token** (default)
86
+ - **Use SecretRef** (opt-in)
87
+ - Quickstart reuses existing `gateway.auth.token` SecretRefs across `env`, `file`, and `exec` providers for onboarding probe/dashboard bootstrap.
88
+ - If that SecretRef is configured but cannot be resolved, onboarding fails early with a clear fix message instead of silently degrading runtime auth.
89
+ - In password mode, interactive setup also supports plaintext or SecretRef storage.
90
+ - Non-interactive token SecretRef path: `--gateway-token-ref-env <ENV_VAR>`.
91
+ - Requires a non-empty env var in the onboarding process environment.
92
+ - Cannot be combined with `--gateway-token`.
93
+ - Disable auth only if you fully trust every local process.
94
+ - Non‑loopback binds still require auth.
95
+ </Step>
96
+ <Step title="Channels">
97
+ - [WhatsApp](/channels/whatsapp): optional QR login.
98
+ - [Telegram](/channels/telegram): bot token.
99
+ - [Discord](/channels/discord): bot token.
100
+ - [Google Chat](/channels/googlechat): service account JSON + webhook audience.
101
+ - [Mattermost](/channels/mattermost) (plugin): bot token + base URL.
102
+ - [Signal](/channels/signal): optional `signal-cli` install + account config.
103
+ - [BlueBubbles](/channels/bluebubbles): **recommended for iMessage**; server URL + password + webhook.
104
+ - [iMessage](/channels/imessage): legacy `imsg` CLI path + DB access.
105
+ - DM security: default is pairing. First DM sends a code; approve via `Durar pairing approve <channel> <code>` or use allowlists.
106
+ </Step>
107
+ <Step title="Web search">
108
+ - Pick a supported provider such as Brave, DuckDuckGo, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search, Ollama Web Search, Perplexity, SearXNG, or Tavily (or skip).
109
+ - API-backed providers can use env vars or existing config for quick setup; key-free providers use their provider-specific prerequisites instead.
110
+ - Skip with `--skip-search`.
111
+ - Configure later: `Durar configure --section web`.
112
+ </Step>
113
+ <Step title="Daemon install">
114
+ - macOS: LaunchAgent
115
+ - Requires a logged-in user session; for headless, use a custom LaunchDaemon (not shipped).
116
+ - Linux (and Windows via WSL2): systemd user unit
117
+ - Onboarding attempts to enable lingering via `loginctl enable-linger <user>` so the Gateway stays up after logout.
118
+ - May prompt for sudo (writes `/var/lib/systemd/linger`); it tries without sudo first.
119
+ - **Runtime selection:** Node (recommended; required for WhatsApp/Telegram). Bun is **not recommended**.
120
+ - If token auth requires a token and `gateway.auth.token` is SecretRef-managed, daemon install validates it but does not persist resolved plaintext token values into supervisor service environment metadata.
121
+ - If token auth requires a token and the configured token SecretRef is unresolved, daemon install is blocked with actionable guidance.
122
+ - If both `gateway.auth.token` and `gateway.auth.password` are configured and `gateway.auth.mode` is unset, daemon install is blocked until mode is set explicitly.
123
+ </Step>
124
+ <Step title="Health check">
125
+ - Starts the Gateway (if needed) and runs `Durar health`.
126
+ - Tip: `Durar status --deep` adds the live gateway health probe to status output, including channel probes when supported (requires a reachable gateway).
127
+ </Step>
128
+ <Step title="Skills (recommended)">
129
+ - Reads the available skills and checks requirements.
130
+ - Lets you choose a node manager: **npm / pnpm** (bun not recommended).
131
+ - Installs optional dependencies (some use Homebrew on macOS).
132
+ </Step>
133
+ <Step title="Finish">
134
+ - Summary + next steps, including iOS/Android/macOS apps for extra features.
135
+ </Step>
136
+ </Steps>
137
+
138
+ <Note>
139
+ If no GUI is detected, onboarding prints SSH port-forward instructions for the Control UI instead of opening a browser.
140
+ If the Control UI assets are missing, onboarding attempts to build them; fallback is `pnpm ui:build` (auto-installs UI deps).
141
+ </Note>
142
+
143
+ ## Non-interactive mode
144
+
145
+ Use `--non-interactive` to automate or script onboarding:
146
+
147
+ ```bash
148
+ Durar onboard --non-interactive \
149
+ --mode local \
150
+ --auth-choice apiKey \
151
+ --anthropic-api-key "$ANTHROPIC_API_KEY" \
152
+ --gateway-port 18789 \
153
+ --gateway-bind loopback \
154
+ --install-daemon \
155
+ --daemon-runtime node \
156
+ --skip-skills
157
+ ```
158
+
159
+ Add `--json` for a machine‑readable summary.
160
+
161
+ Gateway token SecretRef in non-interactive mode:
162
+
163
+ ```bash
164
+ export Durar_GATEWAY_TOKEN="your-token"
165
+ Durar onboard --non-interactive \
166
+ --mode local \
167
+ --auth-choice skip \
168
+ --gateway-auth token \
169
+ --gateway-token-ref-env Durar_GATEWAY_TOKEN
170
+ ```
171
+
172
+ `--gateway-token` and `--gateway-token-ref-env` are mutually exclusive.
173
+
174
+ <Note>
175
+ `--json` does **not** imply non-interactive mode. Use `--non-interactive` (and `--workspace`) for scripts.
176
+ </Note>
177
+
178
+ Provider-specific command examples live in [CLI Automation](/start/wizard-cli-automation#provider-specific-examples).
179
+ Use this reference page for flag semantics and step ordering.
180
+
181
+ ### Add agent (non-interactive)
182
+
183
+ ```bash
184
+ Durar agents add work \
185
+ --workspace ~/.Durar/workspace-work \
186
+ --model openai/gpt-5.4 \
187
+ --bind whatsapp:biz \
188
+ --non-interactive \
189
+ --json
190
+ ```
191
+
192
+ ## Gateway wizard RPC
193
+
194
+ The Gateway exposes the onboarding flow over RPC (`wizard.start`, `wizard.next`, `wizard.cancel`, `wizard.status`).
195
+ Clients (macOS app, Control UI) can render steps without re‑implementing onboarding logic.
196
+
197
+ ## Signal setup (signal-cli)
198
+
199
+ Onboarding can install `signal-cli` from GitHub releases:
200
+
201
+ - Downloads the appropriate release asset.
202
+ - Stores it under `~/.Durar/tools/signal-cli/<version>/`.
203
+ - Writes `channels.signal.cliPath` to your config.
204
+
205
+ Notes:
206
+
207
+ - JVM builds require **Java 21**.
208
+ - Native builds are used when available.
209
+ - Windows uses WSL2; signal-cli install follows the Linux flow inside WSL.
210
+
211
+ ## What the wizard writes
212
+
213
+ Typical fields in `~/.Durar/Durar.json`:
214
+
215
+ - `agents.defaults.workspace`
216
+ - `agents.defaults.model` / `models.providers` (if Minimax chosen)
217
+ - `tools.profile` (local onboarding defaults to `"coding"` when unset; existing explicit values are preserved)
218
+ - `gateway.*` (mode, bind, auth, tailscale)
219
+ - `session.dmScope` (behavior details: [CLI Setup Reference](/start/wizard-cli-reference#outputs-and-internals))
220
+ - `channels.telegram.botToken`, `channels.discord.token`, `channels.matrix.*`, `channels.signal.*`, `channels.imessage.*`
221
+ - Channel allowlists (Slack/Discord/Matrix/Microsoft Teams) when you opt in during the prompts (names resolve to IDs when possible).
222
+ - `skills.install.nodeManager`
223
+ - `setup --node-manager` accepts `npm`, `pnpm`, or `bun`.
224
+ - Manual config can still use `yarn` by setting `skills.install.nodeManager` directly.
225
+ - `wizard.lastRunAt`
226
+ - `wizard.lastRunVersion`
227
+ - `wizard.lastRunCommit`
228
+ - `wizard.lastRunCommand`
229
+ - `wizard.lastRunMode`
230
+
231
+ `Durar agents add` writes `agents.list[]` and optional `bindings`.
232
+
233
+ WhatsApp credentials go under `~/.Durar/credentials/whatsapp/<accountId>/`.
234
+ Sessions are stored under `~/.Durar/agents/<agentId>/sessions/`.
235
+
236
+ Some channels are delivered as plugins. When you pick one during setup, onboarding
237
+ will prompt to install it (npm or a local path) before it can be configured.
238
+
239
+ ## Related docs
240
+
241
+ - Onboarding overview: [Onboarding (CLI)](/start/wizard)
242
+ - macOS app onboarding: [Onboarding](/start/onboarding)
243
+ - Config reference: [Gateway configuration](/gateway/configuration)
244
+ - Providers: [WhatsApp](/channels/whatsapp), [Telegram](/channels/telegram), [Discord](/channels/discord), [Google Chat](/channels/googlechat), [Signal](/channels/signal), [BlueBubbles](/channels/bluebubbles) (iMessage), [iMessage](/channels/imessage) (legacy)
245
+ - Skills: [Skills](/tools/skills), [Skills config](/tools/skills-config)