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,159 @@
1
+ ---
2
+ summary: "web_fetch tool -- HTTP fetch with readable content extraction"
3
+ read_when:
4
+ - You want to fetch a URL and extract readable content
5
+ - You need to configure web_fetch or its Firecrawl fallback
6
+ - You want to understand web_fetch limits and caching
7
+ title: "Web Fetch"
8
+ sidebarTitle: "Web Fetch"
9
+ ---
10
+
11
+ # Web Fetch
12
+
13
+ The `web_fetch` tool does a plain HTTP GET and extracts readable content
14
+ (HTML to markdown or text). It does **not** execute JavaScript.
15
+
16
+ For JS-heavy sites or login-protected pages, use the
17
+ [Web Browser](/tools/browser) instead.
18
+
19
+ ## Quick start
20
+
21
+ `web_fetch` is **enabled by default** -- no configuration needed. The agent can
22
+ call it immediately:
23
+
24
+ ```javascript
25
+ await web_fetch({ url: "https://example.com/article" });
26
+ ```
27
+
28
+ ## Tool parameters
29
+
30
+ | Parameter | Type | Description |
31
+ | ------------- | -------- | ---------------------------------------- |
32
+ | `url` | `string` | URL to fetch (required, http/https only) |
33
+ | `extractMode` | `string` | `"markdown"` (default) or `"text"` |
34
+ | `maxChars` | `number` | Truncate output to this many chars |
35
+
36
+ ## How it works
37
+
38
+ <Steps>
39
+ <Step title="Fetch">
40
+ Sends an HTTP GET with a Chrome-like User-Agent and `Accept-Language`
41
+ header. Blocks private/internal hostnames and re-checks redirects.
42
+ </Step>
43
+ <Step title="Extract">
44
+ Runs Readability (main-content extraction) on the HTML response.
45
+ </Step>
46
+ <Step title="Fallback (optional)">
47
+ If Readability fails and Firecrawl is configured, retries through the
48
+ Firecrawl API with bot-circumvention mode.
49
+ </Step>
50
+ <Step title="Cache">
51
+ Results are cached for 15 minutes (configurable) to reduce repeated
52
+ fetches of the same URL.
53
+ </Step>
54
+ </Steps>
55
+
56
+ ## Config
57
+
58
+ ```json5
59
+ {
60
+ tools: {
61
+ web: {
62
+ fetch: {
63
+ enabled: true, // default: true
64
+ provider: "firecrawl", // optional; omit for auto-detect
65
+ maxChars: 50000, // max output chars
66
+ maxCharsCap: 50000, // hard cap for maxChars param
67
+ maxResponseBytes: 2000000, // max download size before truncation
68
+ timeoutSeconds: 30,
69
+ cacheTtlMinutes: 15,
70
+ maxRedirects: 3,
71
+ readability: true, // use Readability extraction
72
+ userAgent: "Mozilla/5.0 ...", // override User-Agent
73
+ },
74
+ },
75
+ },
76
+ }
77
+ ```
78
+
79
+ ## Firecrawl fallback
80
+
81
+ If Readability extraction fails, `web_fetch` can fall back to
82
+ [Firecrawl](/tools/firecrawl) for bot-circumvention and better extraction:
83
+
84
+ ```json5
85
+ {
86
+ tools: {
87
+ web: {
88
+ fetch: {
89
+ provider: "firecrawl", // optional; omit for auto-detect from available credentials
90
+ },
91
+ },
92
+ },
93
+ plugins: {
94
+ entries: {
95
+ firecrawl: {
96
+ enabled: true,
97
+ config: {
98
+ webFetch: {
99
+ apiKey: "fc-...", // optional if FIRECRAWL_API_KEY is set
100
+ baseUrl: "https://api.firecrawl.dev",
101
+ onlyMainContent: true,
102
+ maxAgeMs: 86400000, // cache duration (1 day)
103
+ timeoutSeconds: 60,
104
+ },
105
+ },
106
+ },
107
+ },
108
+ },
109
+ }
110
+ ```
111
+
112
+ `plugins.entries.firecrawl.config.webFetch.apiKey` supports SecretRef objects.
113
+ Legacy `tools.web.fetch.firecrawl.*` config is auto-migrated by `Durar doctor --fix`.
114
+
115
+ <Note>
116
+ If Firecrawl is enabled and its SecretRef is unresolved with no
117
+ `FIRECRAWL_API_KEY` env fallback, gateway startup fails fast.
118
+ </Note>
119
+
120
+ <Note>
121
+ Firecrawl `baseUrl` overrides are locked down: they must use `https://` and
122
+ the official Firecrawl host (`api.firecrawl.dev`).
123
+ </Note>
124
+
125
+ Current runtime behavior:
126
+
127
+ - `tools.web.fetch.provider` selects the fetch fallback provider explicitly.
128
+ - If `provider` is omitted, Durar auto-detects the first ready web-fetch
129
+ provider from available credentials. Today the bundled provider is Firecrawl.
130
+ - If Readability is disabled, `web_fetch` skips straight to the selected
131
+ provider fallback. If no provider is available, it fails closed.
132
+
133
+ ## Limits and safety
134
+
135
+ - `maxChars` is clamped to `tools.web.fetch.maxCharsCap`
136
+ - Response body is capped at `maxResponseBytes` before parsing; oversized
137
+ responses are truncated with a warning
138
+ - Private/internal hostnames are blocked
139
+ - Redirects are checked and limited by `maxRedirects`
140
+ - `web_fetch` is best-effort -- some sites need the [Web Browser](/tools/browser)
141
+
142
+ ## Tool profiles
143
+
144
+ If you use tool profiles or allowlists, add `web_fetch` or `group:web`:
145
+
146
+ ```json5
147
+ {
148
+ tools: {
149
+ allow: ["web_fetch"],
150
+ // or: allow: ["group:web"] (includes web_fetch, web_search, and x_search)
151
+ },
152
+ }
153
+ ```
154
+
155
+ ## Related
156
+
157
+ - [Web Search](/tools/web) -- search the web with multiple providers
158
+ - [Web Browser](/tools/browser) -- full browser automation for JS-heavy sites
159
+ - [Firecrawl](/tools/firecrawl) -- Firecrawl search and scrape tools
@@ -0,0 +1,417 @@
1
+ ---
2
+ title: "Web Search"
3
+ sidebarTitle: "Web Search"
4
+ summary: "web_search, x_search, and web_fetch -- search the web, search X posts, or fetch page content"
5
+ read_when:
6
+ - You want to enable or configure web_search
7
+ - You want to enable or configure x_search
8
+ - You need to choose a search provider
9
+ - You want to understand auto-detection and provider fallback
10
+ ---
11
+
12
+ # Web Search
13
+
14
+ The `web_search` tool searches the web using your configured provider and
15
+ returns results. Results are cached by query for 15 minutes (configurable).
16
+
17
+ Durar also includes `x_search` for X (formerly Twitter) posts and
18
+ `web_fetch` for lightweight URL fetching. In this phase, `web_fetch` stays
19
+ local while `web_search` and `x_search` can use xAI Responses under the hood.
20
+
21
+ <Info>
22
+ `web_search` is a lightweight HTTP tool, not browser automation. For
23
+ JS-heavy sites or logins, use the [Web Browser](/tools/browser). For
24
+ fetching a specific URL, use [Web Fetch](/tools/web-fetch).
25
+ </Info>
26
+
27
+ ## Quick start
28
+
29
+ <Steps>
30
+ <Step title="Choose a provider">
31
+ Pick a provider and complete any required setup. Some providers are
32
+ key-free, while others use API keys. See the provider pages below for
33
+ details.
34
+ </Step>
35
+ <Step title="Configure">
36
+ ```bash
37
+ Durar configure --section web
38
+ ```
39
+ This stores the provider and any needed credential. You can also set an env
40
+ var (for example `BRAVE_API_KEY`) and skip this step for API-backed
41
+ providers.
42
+ </Step>
43
+ <Step title="Use it">
44
+ The agent can now call `web_search`:
45
+
46
+ ```javascript
47
+ await web_search({ query: "Durar plugin SDK" });
48
+ ```
49
+
50
+ For X posts, use:
51
+
52
+ ```javascript
53
+ await x_search({ query: "dinner recipes" });
54
+ ```
55
+
56
+ </Step>
57
+ </Steps>
58
+
59
+ ## Choosing a provider
60
+
61
+ <CardGroup cols={2}>
62
+ <Card title="Brave Search" icon="shield" href="/tools/brave-search">
63
+ Structured results with snippets. Supports `llm-context` mode, country/language filters. Free tier available.
64
+ </Card>
65
+ <Card title="DuckDuckGo" icon="bird" href="/tools/duckduckgo-search">
66
+ Key-free fallback. No API key needed. Unofficial HTML-based integration.
67
+ </Card>
68
+ <Card title="Exa" icon="brain" href="/tools/exa-search">
69
+ Neural + keyword search with content extraction (highlights, text, summaries).
70
+ </Card>
71
+ <Card title="Firecrawl" icon="flame" href="/tools/firecrawl">
72
+ Structured results. Best paired with `firecrawl_search` and `firecrawl_scrape` for deep extraction.
73
+ </Card>
74
+ <Card title="Gemini" icon="sparkles" href="/tools/gemini-search">
75
+ AI-synthesized answers with citations via Google Search grounding.
76
+ </Card>
77
+ <Card title="Grok" icon="zap" href="/tools/grok-search">
78
+ AI-synthesized answers with citations via xAI web grounding.
79
+ </Card>
80
+ <Card title="Kimi" icon="moon" href="/tools/kimi-search">
81
+ AI-synthesized answers with citations via Moonshot web search.
82
+ </Card>
83
+ <Card title="MiniMax Search" icon="globe" href="/tools/minimax-search">
84
+ Structured results via the MiniMax Coding Plan search API.
85
+ </Card>
86
+ <Card title="Ollama Web Search" icon="globe" href="/tools/ollama-search">
87
+ Key-free search via your configured Ollama host. Requires `ollama signin`.
88
+ </Card>
89
+ <Card title="Perplexity" icon="search" href="/tools/perplexity-search">
90
+ Structured results with content extraction controls and domain filtering.
91
+ </Card>
92
+ <Card title="SearXNG" icon="server" href="/tools/searxng-search">
93
+ Self-hosted meta-search. No API key needed. Aggregates Google, Bing, DuckDuckGo, and more.
94
+ </Card>
95
+ <Card title="Tavily" icon="globe" href="/tools/tavily">
96
+ Structured results with search depth, topic filtering, and `tavily_extract` for URL extraction.
97
+ </Card>
98
+ </CardGroup>
99
+
100
+ ### Provider comparison
101
+
102
+ | Provider | Result style | Filters | API key |
103
+ | ----------------------------------------- | -------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------- |
104
+ | [Brave](/tools/brave-search) | Structured snippets | Country, language, time, `llm-context` mode | `BRAVE_API_KEY` |
105
+ | [DuckDuckGo](/tools/duckduckgo-search) | Structured snippets | -- | None (key-free) |
106
+ | [Exa](/tools/exa-search) | Structured + extracted | Neural/keyword mode, date, content extraction | `EXA_API_KEY` |
107
+ | [Firecrawl](/tools/firecrawl) | Structured snippets | Via `firecrawl_search` tool | `FIRECRAWL_API_KEY` |
108
+ | [Gemini](/tools/gemini-search) | AI-synthesized + citations | -- | `GEMINI_API_KEY` |
109
+ | [Grok](/tools/grok-search) | AI-synthesized + citations | -- | `XAI_API_KEY` |
110
+ | [Kimi](/tools/kimi-search) | AI-synthesized + citations | -- | `KIMI_API_KEY` / `MOONSHOT_API_KEY` |
111
+ | [MiniMax Search](/tools/minimax-search) | Structured snippets | Region (`global` / `cn`) | `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` |
112
+ | [Ollama Web Search](/tools/ollama-search) | Structured snippets | -- | None by default; `ollama signin` required, can reuse Ollama provider bearer auth |
113
+ | [Perplexity](/tools/perplexity-search) | Structured snippets | Country, language, time, domains, content limits | `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` |
114
+ | [SearXNG](/tools/searxng-search) | Structured snippets | Categories, language | None (self-hosted) |
115
+ | [Tavily](/tools/tavily) | Structured snippets | Via `tavily_search` tool | `TAVILY_API_KEY` |
116
+
117
+ ## Auto-detection
118
+
119
+ ## Native Codex web search
120
+
121
+ Codex-capable models can optionally use the provider-native Responses `web_search` tool instead of Durar's managed `web_search` function.
122
+
123
+ - Configure it under `tools.web.search.openaiCodex`
124
+ - It only activates for Codex-capable models (`openai-codex/*` or providers using `api: "openai-codex-responses"`)
125
+ - Managed `web_search` still applies to non-Codex models
126
+ - `mode: "cached"` is the default and recommended setting
127
+ - `tools.web.search.enabled: false` disables both managed and native search
128
+
129
+ ```json5
130
+ {
131
+ tools: {
132
+ web: {
133
+ search: {
134
+ enabled: true,
135
+ openaiCodex: {
136
+ enabled: true,
137
+ mode: "cached",
138
+ allowedDomains: ["example.com"],
139
+ contextSize: "high",
140
+ userLocation: {
141
+ country: "US",
142
+ city: "New York",
143
+ timezone: "America/New_York",
144
+ },
145
+ },
146
+ },
147
+ },
148
+ },
149
+ }
150
+ ```
151
+
152
+ If native Codex search is enabled but the current model is not Codex-capable, Durar keeps the normal managed `web_search` behavior.
153
+
154
+ ## Setting up web search
155
+
156
+ Provider lists in docs and setup flows are alphabetical. Auto-detection keeps a
157
+ separate precedence order.
158
+
159
+ If no `provider` is set, Durar checks providers in this order and uses the
160
+ first one that is ready:
161
+
162
+ API-backed providers first:
163
+
164
+ 1. **Brave** -- `BRAVE_API_KEY` or `plugins.entries.brave.config.webSearch.apiKey` (order 10)
165
+ 2. **MiniMax Search** -- `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` or `plugins.entries.minimax.config.webSearch.apiKey` (order 15)
166
+ 3. **Gemini** -- `GEMINI_API_KEY` or `plugins.entries.google.config.webSearch.apiKey` (order 20)
167
+ 4. **Grok** -- `XAI_API_KEY` or `plugins.entries.xai.config.webSearch.apiKey` (order 30)
168
+ 5. **Kimi** -- `KIMI_API_KEY` / `MOONSHOT_API_KEY` or `plugins.entries.moonshot.config.webSearch.apiKey` (order 40)
169
+ 6. **Perplexity** -- `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` or `plugins.entries.perplexity.config.webSearch.apiKey` (order 50)
170
+ 7. **Firecrawl** -- `FIRECRAWL_API_KEY` or `plugins.entries.firecrawl.config.webSearch.apiKey` (order 60)
171
+ 8. **Exa** -- `EXA_API_KEY` or `plugins.entries.exa.config.webSearch.apiKey` (order 65)
172
+ 9. **Tavily** -- `TAVILY_API_KEY` or `plugins.entries.tavily.config.webSearch.apiKey` (order 70)
173
+
174
+ Key-free fallbacks after that:
175
+
176
+ 10. **DuckDuckGo** -- key-free HTML fallback with no account or API key (order 100)
177
+ 11. **Ollama Web Search** -- key-free fallback via your configured Ollama host; requires Ollama to be reachable and signed in with `ollama signin` and can reuse Ollama provider bearer auth if the host needs it (order 110)
178
+ 12. **SearXNG** -- `SEARXNG_BASE_URL` or `plugins.entries.searxng.config.webSearch.baseUrl` (order 200)
179
+
180
+ If no provider is detected, it falls back to Brave (you will get a missing-key
181
+ error prompting you to configure one).
182
+
183
+ <Note>
184
+ All provider key fields support SecretRef objects. In auto-detect mode,
185
+ Durar resolves only the selected provider key -- non-selected SecretRefs
186
+ stay inactive.
187
+ </Note>
188
+
189
+ ## Config
190
+
191
+ ```json5
192
+ {
193
+ tools: {
194
+ web: {
195
+ search: {
196
+ enabled: true, // default: true
197
+ provider: "brave", // or omit for auto-detection
198
+ maxResults: 5,
199
+ timeoutSeconds: 30,
200
+ cacheTtlMinutes: 15,
201
+ },
202
+ },
203
+ },
204
+ }
205
+ ```
206
+
207
+ Provider-specific config (API keys, base URLs, modes) lives under
208
+ `plugins.entries.<plugin>.config.webSearch.*`. See the provider pages for
209
+ examples.
210
+
211
+ `web_fetch` fallback provider selection is separate:
212
+
213
+ - choose it with `tools.web.fetch.provider`
214
+ - or omit that field and let Durar auto-detect the first ready web-fetch
215
+ provider from available credentials
216
+ - today the bundled web-fetch provider is Firecrawl, configured under
217
+ `plugins.entries.firecrawl.config.webFetch.*`
218
+
219
+ When you choose **Kimi** during `Durar onboard` or
220
+ `Durar configure --section web`, Durar can also ask for:
221
+
222
+ - the Moonshot API region (`https://api.moonshot.ai/v1` or `https://api.moonshot.cn/v1`)
223
+ - the default Kimi web-search model (defaults to `kimi-k2.5`)
224
+
225
+ For `x_search`, configure `plugins.entries.xai.config.xSearch.*`. It uses the
226
+ same `XAI_API_KEY` fallback as Grok web search.
227
+ Legacy `tools.web.x_search.*` config is auto-migrated by `Durar doctor --fix`.
228
+ When you choose Grok during `Durar onboard` or `Durar configure --section web`,
229
+ Durar can also offer optional `x_search` setup with the same key.
230
+ This is a separate follow-up step inside the Grok path, not a separate top-level
231
+ web-search provider choice. If you pick another provider, Durar does not
232
+ show the `x_search` prompt.
233
+
234
+ ### Storing API keys
235
+
236
+ <Tabs>
237
+ <Tab title="Config file">
238
+ Run `Durar configure --section web` or set the key directly:
239
+
240
+ ```json5
241
+ {
242
+ plugins: {
243
+ entries: {
244
+ brave: {
245
+ config: {
246
+ webSearch: {
247
+ apiKey: "YOUR_KEY", // pragma: allowlist secret
248
+ },
249
+ },
250
+ },
251
+ },
252
+ },
253
+ }
254
+ ```
255
+
256
+ </Tab>
257
+ <Tab title="Environment variable">
258
+ Set the provider env var in the Gateway process environment:
259
+
260
+ ```bash
261
+ export BRAVE_API_KEY="YOUR_KEY"
262
+ ```
263
+
264
+ For a gateway install, put it in `~/.Durar/.env`.
265
+ See [Env vars](/help/faq#env-vars-and-env-loading).
266
+
267
+ </Tab>
268
+ </Tabs>
269
+
270
+ ## Tool parameters
271
+
272
+ | Parameter | Description |
273
+ | --------------------- | ----------------------------------------------------- |
274
+ | `query` | Search query (required) |
275
+ | `count` | Results to return (1-10, default: 5) |
276
+ | `country` | 2-letter ISO country code (e.g. "US", "DE") |
277
+ | `language` | ISO 639-1 language code (e.g. "en", "de") |
278
+ | `search_lang` | Search-language code (Brave only) |
279
+ | `freshness` | Time filter: `day`, `week`, `month`, or `year` |
280
+ | `date_after` | Results after this date (YYYY-MM-DD) |
281
+ | `date_before` | Results before this date (YYYY-MM-DD) |
282
+ | `ui_lang` | UI language code (Brave only) |
283
+ | `domain_filter` | Domain allowlist/denylist array (Perplexity only) |
284
+ | `max_tokens` | Total content budget, default 25000 (Perplexity only) |
285
+ | `max_tokens_per_page` | Per-page token limit, default 2048 (Perplexity only) |
286
+
287
+ <Warning>
288
+ Not all parameters work with all providers. Brave `llm-context` mode
289
+ rejects `ui_lang`, `freshness`, `date_after`, and `date_before`.
290
+ Gemini, Grok, and Kimi return one synthesized answer with citations. They
291
+ accept `count` for shared-tool compatibility, but it does not change the
292
+ grounded answer shape.
293
+ Perplexity behaves the same way when you use the Sonar/OpenRouter
294
+ compatibility path (`plugins.entries.perplexity.config.webSearch.baseUrl` /
295
+ `model` or `OPENROUTER_API_KEY`).
296
+ SearXNG accepts `http://` only for trusted private-network or loopback hosts;
297
+ public SearXNG endpoints must use `https://`.
298
+ Firecrawl and Tavily only support `query` and `count` through `web_search`
299
+ -- use their dedicated tools for advanced options.
300
+ </Warning>
301
+
302
+ ## x_search
303
+
304
+ `x_search` queries X (formerly Twitter) posts using xAI and returns
305
+ AI-synthesized answers with citations. It accepts natural-language queries and
306
+ optional structured filters. Durar only enables the built-in xAI `x_search`
307
+ tool on the request that serves this tool call.
308
+
309
+ <Note>
310
+ xAI documents `x_search` as supporting keyword search, semantic search, user
311
+ search, and thread fetch. For per-post engagement stats such as reposts,
312
+ replies, bookmarks, or views, prefer a targeted lookup for the exact post URL
313
+ or status ID. Broad keyword searches may find the right post but return less
314
+ complete per-post metadata. A good pattern is: locate the post first, then
315
+ run a second `x_search` query focused on that exact post.
316
+ </Note>
317
+
318
+ ### x_search config
319
+
320
+ ```json5
321
+ {
322
+ plugins: {
323
+ entries: {
324
+ xai: {
325
+ config: {
326
+ xSearch: {
327
+ enabled: true,
328
+ model: "grok-4-1-fast-non-reasoning",
329
+ inlineCitations: false,
330
+ maxTurns: 2,
331
+ timeoutSeconds: 30,
332
+ cacheTtlMinutes: 15,
333
+ },
334
+ webSearch: {
335
+ apiKey: "xai-...", // optional if XAI_API_KEY is set
336
+ },
337
+ },
338
+ },
339
+ },
340
+ },
341
+ }
342
+ ```
343
+
344
+ ### x_search parameters
345
+
346
+ | Parameter | Description |
347
+ | ---------------------------- | ------------------------------------------------------ |
348
+ | `query` | Search query (required) |
349
+ | `allowed_x_handles` | Restrict results to specific X handles |
350
+ | `excluded_x_handles` | Exclude specific X handles |
351
+ | `from_date` | Only include posts on or after this date (YYYY-MM-DD) |
352
+ | `to_date` | Only include posts on or before this date (YYYY-MM-DD) |
353
+ | `enable_image_understanding` | Let xAI inspect images attached to matching posts |
354
+ | `enable_video_understanding` | Let xAI inspect videos attached to matching posts |
355
+
356
+ ### x_search example
357
+
358
+ ```javascript
359
+ await x_search({
360
+ query: "dinner recipes",
361
+ allowed_x_handles: ["nytfood"],
362
+ from_date: "2026-03-01",
363
+ });
364
+ ```
365
+
366
+ ```javascript
367
+ // Per-post stats: use the exact status URL or status ID when possible
368
+ await x_search({
369
+ query: "https://x.com/huntharo/status/1905678901234567890",
370
+ });
371
+ ```
372
+
373
+ ## Examples
374
+
375
+ ```javascript
376
+ // Basic search
377
+ await web_search({ query: "Durar plugin SDK" });
378
+
379
+ // German-specific search
380
+ await web_search({ query: "TV online schauen", country: "DE", language: "de" });
381
+
382
+ // Recent results (past week)
383
+ await web_search({ query: "AI developments", freshness: "week" });
384
+
385
+ // Date range
386
+ await web_search({
387
+ query: "climate research",
388
+ date_after: "2024-01-01",
389
+ date_before: "2024-06-30",
390
+ });
391
+
392
+ // Domain filtering (Perplexity only)
393
+ await web_search({
394
+ query: "product reviews",
395
+ domain_filter: ["-reddit.com", "-pinterest.com"],
396
+ });
397
+ ```
398
+
399
+ ## Tool profiles
400
+
401
+ If you use tool profiles or allowlists, add `web_search`, `x_search`, or `group:web`:
402
+
403
+ ```json5
404
+ {
405
+ tools: {
406
+ allow: ["web_search", "x_search"],
407
+ // or: allow: ["group:web"] (includes web_search, x_search, and web_fetch)
408
+ },
409
+ }
410
+ ```
411
+
412
+ ## Related
413
+
414
+ - [Web Fetch](/tools/web-fetch) -- fetch a URL and extract readable content
415
+ - [Web Browser](/tools/browser) -- full browser automation for JS-heavy sites
416
+ - [Grok Search](/tools/grok-search) -- Grok as the `web_search` provider
417
+ - [Ollama Web Search](/tools/ollama-search) -- key-free web search through your Ollama host