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,10 @@
1
+ ---
2
+ title: "Building Plugins (redirect)"
3
+ summary: "Redirects to the current Building Plugins guide"
4
+ read_when:
5
+ - Legacy link to building-extensions
6
+ ---
7
+
8
+ # Building Plugins
9
+
10
+ This page has moved to [Building Plugins](/plugins/building-plugins).
@@ -0,0 +1,319 @@
1
+ ---
2
+ title: "Building Plugins"
3
+ sidebarTitle: "Getting Started"
4
+ summary: "Create your first Durar plugin in minutes"
5
+ read_when:
6
+ - You want to create a new Durar plugin
7
+ - You need a quick-start for plugin development
8
+ - You are adding a new channel, provider, tool, or other capability to Durar
9
+ ---
10
+
11
+ # Building Plugins
12
+
13
+ Plugins extend Durar with new capabilities: channels, model providers,
14
+ speech, realtime transcription, realtime voice, media understanding, image
15
+ generation, video generation, web fetch, web search, agent tools, or any
16
+ combination.
17
+
18
+ You do not need to add your plugin to the Durar repository. Publish to
19
+ [Durar Gateway](/tools/Durar Gateway) or npm and users install with
20
+ `Durar plugins install <package-name>`. Durar tries Durar Gateway first and
21
+ falls back to npm automatically.
22
+
23
+ ## Prerequisites
24
+
25
+ - Node >= 22 and a package manager (npm or pnpm)
26
+ - Familiarity with TypeScript (ESM)
27
+ - For in-repo plugins: repository cloned and `pnpm install` done
28
+
29
+ ## What kind of plugin?
30
+
31
+ <CardGroup cols={3}>
32
+ <Card title="Channel plugin" icon="messages-square" href="/plugins/sdk-channel-plugins">
33
+ Connect Durar to a messaging platform (Discord, IRC, etc.)
34
+ </Card>
35
+ <Card title="Provider plugin" icon="cpu" href="/plugins/sdk-provider-plugins">
36
+ Add a model provider (LLM, proxy, or custom endpoint)
37
+ </Card>
38
+ <Card title="Tool / hook plugin" icon="wrench">
39
+ Register agent tools, event hooks, or services — continue below
40
+ </Card>
41
+ </CardGroup>
42
+
43
+ If a channel plugin is optional and may not be installed when onboarding/setup
44
+ runs, use `createOptionalChannelSetupSurface(...)` from
45
+ `Durar/plugin-sdk/channel-setup`. It produces a setup adapter + wizard pair
46
+ that advertises the install requirement and fails closed on real config writes
47
+ until the plugin is installed.
48
+
49
+ ## Quick start: tool plugin
50
+
51
+ This walkthrough creates a minimal plugin that registers an agent tool. Channel
52
+ and provider plugins have dedicated guides linked above.
53
+
54
+ <Steps>
55
+ <Step title="Create the package and manifest">
56
+ <CodeGroup>
57
+ ```json package.json
58
+ {
59
+ "name": "@myorg/Durar-my-plugin",
60
+ "version": "1.0.0",
61
+ "type": "module",
62
+ "Durar": {
63
+ "extensions": ["./index.ts"],
64
+ "compat": {
65
+ "pluginApi": ">=2026.3.24-beta.2",
66
+ "minGatewayVersion": "2026.3.24-beta.2"
67
+ },
68
+ "build": {
69
+ "DurarVersion": "2026.3.24-beta.2",
70
+ "pluginSdkVersion": "2026.3.24-beta.2"
71
+ }
72
+ }
73
+ }
74
+ ```
75
+
76
+ ```json Durar.plugin.json
77
+ {
78
+ "id": "my-plugin",
79
+ "name": "My Plugin",
80
+ "description": "Adds a custom tool to Durar",
81
+ "configSchema": {
82
+ "type": "object",
83
+ "additionalProperties": false
84
+ }
85
+ }
86
+ ```
87
+ </CodeGroup>
88
+
89
+ Every plugin needs a manifest, even with no config. See
90
+ [Manifest](/plugins/manifest) for the full schema. The canonical Durar Gateway
91
+ publish snippets live in `docs/snippets/plugin-publish/`.
92
+
93
+ </Step>
94
+
95
+ <Step title="Write the entry point">
96
+
97
+ ```typescript
98
+ // index.ts
99
+ import { definePluginEntry } from "Durar/plugin-sdk/plugin-entry";
100
+ import { Type } from "@sinclair/typebox";
101
+
102
+ export default definePluginEntry({
103
+ id: "my-plugin",
104
+ name: "My Plugin",
105
+ description: "Adds a custom tool to Durar",
106
+ register(api) {
107
+ api.registerTool({
108
+ name: "my_tool",
109
+ description: "Do a thing",
110
+ parameters: Type.Object({ input: Type.String() }),
111
+ async execute(_id, params) {
112
+ return { content: [{ type: "text", text: `Got: ${params.input}` }] };
113
+ },
114
+ });
115
+ },
116
+ });
117
+ ```
118
+
119
+ `definePluginEntry` is for non-channel plugins. For channels, use
120
+ `defineChannelPluginEntry` — see [Channel Plugins](/plugins/sdk-channel-plugins).
121
+ For full entry point options, see [Entry Points](/plugins/sdk-entrypoints).
122
+
123
+ </Step>
124
+
125
+ <Step title="Test and publish">
126
+
127
+ **External plugins:** validate and publish with Durar Gateway, then install:
128
+
129
+ ```bash
130
+ Durar Gateway package publish your-org/your-plugin --dry-run
131
+ Durar Gateway package publish your-org/your-plugin
132
+ Durar plugins install Durar Gateway:@myorg/Durar-my-plugin
133
+ ```
134
+
135
+ Durar also checks Durar Gateway before npm for bare package specs like
136
+ `@myorg/Durar-my-plugin`.
137
+
138
+ **In-repo plugins:** place under the bundled plugin workspace tree — automatically discovered.
139
+
140
+ ```bash
141
+ pnpm test -- <bundled-plugin-root>/my-plugin/
142
+ ```
143
+
144
+ </Step>
145
+ </Steps>
146
+
147
+ ## Plugin capabilities
148
+
149
+ A single plugin can register any number of capabilities via the `api` object:
150
+
151
+ | Capability | Registration method | Detailed guide |
152
+ | ---------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------- |
153
+ | Text inference (LLM) | `api.registerProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins) |
154
+ | CLI inference backend | `api.registerCliBackend(...)` | [CLI Backends](/gateway/cli-backends) |
155
+ | Channel / messaging | `api.registerChannel(...)` | [Channel Plugins](/plugins/sdk-channel-plugins) |
156
+ | Speech (TTS/STT) | `api.registerSpeechProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
157
+ | Realtime transcription | `api.registerRealtimeTranscriptionProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
158
+ | Realtime voice | `api.registerRealtimeVoiceProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
159
+ | Media understanding | `api.registerMediaUnderstandingProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
160
+ | Image generation | `api.registerImageGenerationProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
161
+ | Video generation | `api.registerVideoGenerationProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
162
+ | Web fetch | `api.registerWebFetchProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
163
+ | Web search | `api.registerWebSearchProvider(...)` | [Provider Plugins](/plugins/sdk-provider-plugins#step-5-add-extra-capabilities) |
164
+ | Agent tools | `api.registerTool(...)` | Below |
165
+ | Custom commands | `api.registerCommand(...)` | [Entry Points](/plugins/sdk-entrypoints) |
166
+ | Event hooks | `api.registerHook(...)` | [Entry Points](/plugins/sdk-entrypoints) |
167
+ | HTTP routes | `api.registerHttpRoute(...)` | [Internals](/plugins/architecture#gateway-http-routes) |
168
+ | CLI subcommands | `api.registerCli(...)` | [Entry Points](/plugins/sdk-entrypoints) |
169
+
170
+ For the full registration API, see [SDK Overview](/plugins/sdk-overview#registration-api).
171
+
172
+ If your plugin registers custom gateway RPC methods, keep them on a
173
+ plugin-specific prefix. Core admin namespaces (`config.*`,
174
+ `exec.approvals.*`, `wizard.*`, `update.*`) stay reserved and always resolve to
175
+ `operator.admin`, even if a plugin asks for a narrower scope.
176
+
177
+ Hook guard semantics to keep in mind:
178
+
179
+ - `before_tool_call`: `{ block: true }` is terminal and stops lower-priority handlers.
180
+ - `before_tool_call`: `{ block: false }` is treated as no decision.
181
+ - `before_tool_call`: `{ requireApproval: true }` pauses agent execution and prompts the user for approval via the exec approval overlay, Telegram buttons, Discord interactions, or the `/approve` command on any channel.
182
+ - `before_install`: `{ block: true }` is terminal and stops lower-priority handlers.
183
+ - `before_install`: `{ block: false }` is treated as no decision.
184
+ - `message_sending`: `{ cancel: true }` is terminal and stops lower-priority handlers.
185
+ - `message_sending`: `{ cancel: false }` is treated as no decision.
186
+
187
+ The `/approve` command handles both exec and plugin approvals with bounded fallback: when an exec approval id is not found, Durar retries the same id through plugin approvals. Plugin approval forwarding can be configured independently via `approvals.plugin` in config.
188
+
189
+ If custom approval plumbing needs to detect that same bounded fallback case,
190
+ prefer `isApprovalNotFoundError` from `Durar/plugin-sdk/error-runtime`
191
+ instead of matching approval-expiry strings manually.
192
+
193
+ See [SDK Overview hook decision semantics](/plugins/sdk-overview#hook-decision-semantics) for details.
194
+
195
+ ## Registering agent tools
196
+
197
+ Tools are typed functions the LLM can call. They can be required (always
198
+ available) or optional (user opt-in):
199
+
200
+ ```typescript
201
+ register(api) {
202
+ // Required tool — always available
203
+ api.registerTool({
204
+ name: "my_tool",
205
+ description: "Do a thing",
206
+ parameters: Type.Object({ input: Type.String() }),
207
+ async execute(_id, params) {
208
+ return { content: [{ type: "text", text: params.input }] };
209
+ },
210
+ });
211
+
212
+ // Optional tool — user must add to allowlist
213
+ api.registerTool(
214
+ {
215
+ name: "workflow_tool",
216
+ description: "Run a workflow",
217
+ parameters: Type.Object({ pipeline: Type.String() }),
218
+ async execute(_id, params) {
219
+ return { content: [{ type: "text", text: params.pipeline }] };
220
+ },
221
+ },
222
+ { optional: true },
223
+ );
224
+ }
225
+ ```
226
+
227
+ Users enable optional tools in config:
228
+
229
+ ```json5
230
+ {
231
+ tools: { allow: ["workflow_tool"] },
232
+ }
233
+ ```
234
+
235
+ - Tool names must not clash with core tools (conflicts are skipped)
236
+ - Use `optional: true` for tools with side effects or extra binary requirements
237
+ - Users can enable all tools from a plugin by adding the plugin id to `tools.allow`
238
+
239
+ ## Import conventions
240
+
241
+ Always import from focused `Durar/plugin-sdk/<subpath>` paths:
242
+
243
+ ```typescript
244
+ import { definePluginEntry } from "Durar/plugin-sdk/plugin-entry";
245
+ import { createPluginRuntimeStore } from "Durar/plugin-sdk/runtime-store";
246
+
247
+ // Wrong: monolithic root (deprecated, will be removed)
248
+ import { ... } from "Durar/plugin-sdk";
249
+ ```
250
+
251
+ For the full subpath reference, see [SDK Overview](/plugins/sdk-overview).
252
+
253
+ Within your plugin, use local barrel files (`api.ts`, `runtime-api.ts`) for
254
+ internal imports — never import your own plugin through its SDK path.
255
+
256
+ For provider plugins, keep provider-specific helpers in those package-root
257
+ barrels unless the seam is truly generic. Current bundled examples:
258
+
259
+ - Anthropic: Claude stream wrappers and `service_tier` / beta helpers
260
+ - OpenAI: provider builders, default-model helpers, realtime providers
261
+ - OpenRouter: provider builder plus onboarding/config helpers
262
+
263
+ If a helper is only useful inside one bundled provider package, keep it on that
264
+ package-root seam instead of promoting it into `Durar/plugin-sdk/*`.
265
+
266
+ Some generated `Durar/plugin-sdk/<bundled-id>` helper seams still exist for
267
+ bundled-plugin maintenance and compatibility, for example
268
+ `plugin-sdk/feishu-setup` or `plugin-sdk/zalo-setup`. Treat those as reserved
269
+ surfaces, not as the default pattern for new third-party plugins.
270
+
271
+ ## Pre-submission checklist
272
+
273
+ <Check>**package.json** has correct `Durar` metadata</Check>
274
+ <Check>**Durar.plugin.json** manifest is present and valid</Check>
275
+ <Check>Entry point uses `defineChannelPluginEntry` or `definePluginEntry`</Check>
276
+ <Check>All imports use focused `plugin-sdk/<subpath>` paths</Check>
277
+ <Check>Internal imports use local modules, not SDK self-imports</Check>
278
+ <Check>Tests pass (`pnpm test -- <bundled-plugin-root>/my-plugin/`)</Check>
279
+ <Check>`pnpm check` passes (in-repo plugins)</Check>
280
+
281
+ ## Beta Release Testing
282
+
283
+ 1. Watch for GitHub release tags on [Durar/Durar](https://github.com/openclaw/openclaw/releases) and subscribe via `Watch` > `Releases`. Beta tags look like `v2026.3.N-beta.1`. You can also turn on notifications for the official Durar X account [@Durar](https://x.com/Durar) for release announcements.
284
+ 2. Test your plugin against the beta tag as soon as it appears. The window before stable is typically only a few hours.
285
+ 3. Post in your plugin's thread in the `plugin-forum` Discord channel after testing with either `all good` or what broke. If you do not have a thread yet, create one.
286
+ 4. If something breaks, open or update an issue titled `Beta blocker: <plugin-name> - <summary>` and apply the `beta-blocker` label. Put the issue link in your thread.
287
+ 5. Open a PR to `main` titled `fix(<plugin-id>): beta blocker - <summary>` and link the issue in both the PR and your Discord thread. Contributors cannot label PRs, so the title is the PR-side signal for maintainers and automation. Blockers with a PR get merged; blockers without one might ship anyway. Maintainers watch these threads during beta testing.
288
+ 6. Silence means green. If you miss the window, your fix likely lands in the next cycle.
289
+
290
+ ## Next steps
291
+
292
+ <CardGroup cols={2}>
293
+ <Card title="Channel Plugins" icon="messages-square" href="/plugins/sdk-channel-plugins">
294
+ Build a messaging channel plugin
295
+ </Card>
296
+ <Card title="Provider Plugins" icon="cpu" href="/plugins/sdk-provider-plugins">
297
+ Build a model provider plugin
298
+ </Card>
299
+ <Card title="SDK Overview" icon="book-open" href="/plugins/sdk-overview">
300
+ Import map and registration API reference
301
+ </Card>
302
+ <Card title="Runtime Helpers" icon="settings" href="/plugins/sdk-runtime">
303
+ TTS, search, subagent via api.runtime
304
+ </Card>
305
+ <Card title="Testing" icon="test-tubes" href="/plugins/sdk-testing">
306
+ Test utilities and patterns
307
+ </Card>
308
+ <Card title="Plugin Manifest" icon="file-json" href="/plugins/manifest">
309
+ Full manifest schema reference
310
+ </Card>
311
+ </CardGroup>
312
+
313
+ ## Related
314
+
315
+ - [Plugin Architecture](/plugins/architecture) — internal architecture deep dive
316
+ - [SDK Overview](/plugins/sdk-overview) — Plugin SDK reference
317
+ - [Manifest](/plugins/manifest) — plugin manifest format
318
+ - [Channel Plugins](/plugins/sdk-channel-plugins) — building channel plugins
319
+ - [Provider Plugins](/plugins/sdk-provider-plugins) — building provider plugins
@@ -0,0 +1,292 @@
1
+ ---
2
+ summary: "Install and use Codex, Claude, and Cursor bundles as Durar plugins"
3
+ read_when:
4
+ - You want to install a Codex, Claude, or Cursor-compatible bundle
5
+ - You need to understand how Durar maps bundle content into native features
6
+ - You are debugging bundle detection or missing capabilities
7
+ title: "Plugin Bundles"
8
+ ---
9
+
10
+ # Plugin Bundles
11
+
12
+ Durar can install plugins from three external ecosystems: **Codex**, **Claude**,
13
+ and **Cursor**. These are called **bundles** — content and metadata packs that
14
+ Durar maps into native features like skills, hooks, and MCP tools.
15
+
16
+ <Info>
17
+ Bundles are **not** the same as native Durar plugins. Native plugins run
18
+ in-process and can register any capability. Bundles are content packs with
19
+ selective feature mapping and a narrower trust boundary.
20
+ </Info>
21
+
22
+ ## Why bundles exist
23
+
24
+ Many useful plugins are published in Codex, Claude, or Cursor format. Instead
25
+ of requiring authors to rewrite them as native Durar plugins, Durar
26
+ detects these formats and maps their supported content into the native feature
27
+ set. This means you can install a Claude command pack or a Codex skill bundle
28
+ and use it immediately.
29
+
30
+ ## Install a bundle
31
+
32
+ <Steps>
33
+ <Step title="Install from a directory, archive, or marketplace">
34
+ ```bash
35
+ # Local directory
36
+ Durar plugins install ./my-bundle
37
+
38
+ # Archive
39
+ Durar plugins install ./my-bundle.tgz
40
+
41
+ # Claude marketplace
42
+ Durar plugins marketplace list <marketplace-name>
43
+ Durar plugins install <plugin-name>@<marketplace-name>
44
+ ```
45
+
46
+ </Step>
47
+
48
+ <Step title="Verify detection">
49
+ ```bash
50
+ Durar plugins list
51
+ Durar plugins inspect <id>
52
+ ```
53
+
54
+ Bundles show as `Format: bundle` with a subtype of `codex`, `claude`, or `cursor`.
55
+
56
+ </Step>
57
+
58
+ <Step title="Restart and use">
59
+ ```bash
60
+ Durar gateway restart
61
+ ```
62
+
63
+ Mapped features (skills, hooks, MCP tools, LSP defaults) are available in the next session.
64
+
65
+ </Step>
66
+ </Steps>
67
+
68
+ ## What Durar maps from bundles
69
+
70
+ Not every bundle feature runs in Durar today. Here is what works and what
71
+ is detected but not yet wired.
72
+
73
+ ### Supported now
74
+
75
+ | Feature | How it maps | Applies to |
76
+ | ------------- | ------------------------------------------------------------------------------------------- | -------------- |
77
+ | Skill content | Bundle skill roots load as normal Durar skills | All formats |
78
+ | Commands | `commands/` and `.cursor/commands/` treated as skill roots | Claude, Cursor |
79
+ | Hook packs | Durar-style `HOOK.md` + `handler.ts` layouts | Codex |
80
+ | MCP tools | Bundle MCP config merged into embedded Pi settings; supported stdio and HTTP servers loaded | All formats |
81
+ | LSP servers | Claude `.lsp.json` and manifest-declared `lspServers` merged into embedded Pi LSP defaults | Claude |
82
+ | Settings | Claude `settings.json` imported as embedded Pi defaults | Claude |
83
+
84
+ #### Skill content
85
+
86
+ - bundle skill roots load as normal Durar skill roots
87
+ - Claude `commands` roots are treated as additional skill roots
88
+ - Cursor `.cursor/commands` roots are treated as additional skill roots
89
+
90
+ This means Claude markdown command files work through the normal Durar skill
91
+ loader. Cursor command markdown works through the same path.
92
+
93
+ #### Hook packs
94
+
95
+ - bundle hook roots work **only** when they use the normal Durar hook-pack
96
+ layout. Today this is primarily the Codex-compatible case:
97
+ - `HOOK.md`
98
+ - `handler.ts` or `handler.js`
99
+
100
+ #### MCP for Pi
101
+
102
+ - enabled bundles can contribute MCP server config
103
+ - Durar merges bundle MCP config into the effective embedded Pi settings as
104
+ `mcpServers`
105
+ - Durar exposes supported bundle MCP tools during embedded Pi agent turns by
106
+ launching stdio servers or connecting to HTTP servers
107
+ - project-local Pi settings still apply after bundle defaults, so workspace
108
+ settings can override bundle MCP entries when needed
109
+ - bundle MCP tool catalogs are sorted deterministically before registration, so
110
+ upstream `listTools()` order changes do not thrash prompt-cache tool blocks
111
+
112
+ ##### Transports
113
+
114
+ MCP servers can use stdio or HTTP transport:
115
+
116
+ **Stdio** launches a child process:
117
+
118
+ ```json
119
+ {
120
+ "mcp": {
121
+ "servers": {
122
+ "my-server": {
123
+ "command": "node",
124
+ "args": ["server.js"],
125
+ "env": { "PORT": "3000" }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ ```
131
+
132
+ **HTTP** connects to a running MCP server over `sse` by default, or `streamable-http` when requested:
133
+
134
+ ```json
135
+ {
136
+ "mcp": {
137
+ "servers": {
138
+ "my-server": {
139
+ "url": "http://localhost:3100/mcp",
140
+ "transport": "streamable-http",
141
+ "headers": {
142
+ "Authorization": "Bearer ${MY_SECRET_TOKEN}"
143
+ },
144
+ "connectionTimeoutMs": 30000
145
+ }
146
+ }
147
+ }
148
+ }
149
+ ```
150
+
151
+ - `transport` may be set to `"streamable-http"` or `"sse"`; when omitted, Durar uses `sse`
152
+ - only `http:` and `https:` URL schemes are allowed
153
+ - `headers` values support `${ENV_VAR}` interpolation
154
+ - a server entry with both `command` and `url` is rejected
155
+ - URL credentials (userinfo and query params) are redacted from tool
156
+ descriptions and logs
157
+ - `connectionTimeoutMs` overrides the default 30-second connection timeout for
158
+ both stdio and HTTP transports
159
+
160
+ ##### Tool naming
161
+
162
+ Durar registers bundle MCP tools with provider-safe names in the form
163
+ `serverName__toolName`. For example, a server keyed `"vigil-harbor"` exposing a
164
+ `memory_search` tool registers as `vigil-harbor__memory_search`.
165
+
166
+ - characters outside `A-Za-z0-9_-` are replaced with `-`
167
+ - server prefixes are capped at 30 characters
168
+ - full tool names are capped at 64 characters
169
+ - empty server names fall back to `mcp`
170
+ - colliding sanitized names are disambiguated with numeric suffixes
171
+ - final exposed tool order is deterministic by safe name to keep repeated Pi
172
+ turns cache-stable
173
+
174
+ #### Embedded Pi settings
175
+
176
+ - Claude `settings.json` is imported as default embedded Pi settings when the
177
+ bundle is enabled
178
+ - Durar sanitizes shell override keys before applying them
179
+
180
+ Sanitized keys:
181
+
182
+ - `shellPath`
183
+ - `shellCommandPrefix`
184
+
185
+ #### Embedded Pi LSP
186
+
187
+ - enabled Claude bundles can contribute LSP server config
188
+ - Durar loads `.lsp.json` plus any manifest-declared `lspServers` paths
189
+ - bundle LSP config is merged into the effective embedded Pi LSP defaults
190
+ - only supported stdio-backed LSP servers are runnable today; unsupported
191
+ transports still show up in `Durar plugins inspect <id>`
192
+
193
+ ### Detected but not executed
194
+
195
+ These are recognized and shown in diagnostics, but Durar does not run them:
196
+
197
+ - Claude `agents`, `hooks.json` automation, `outputStyles`
198
+ - Cursor `.cursor/agents`, `.cursor/hooks.json`, `.cursor/rules`
199
+ - Codex inline/app metadata beyond capability reporting
200
+
201
+ ## Bundle formats
202
+
203
+ <AccordionGroup>
204
+ <Accordion title="Codex bundles">
205
+ Markers: `.codex-plugin/plugin.json`
206
+
207
+ Optional content: `skills/`, `hooks/`, `.mcp.json`, `.app.json`
208
+
209
+ Codex bundles fit Durar best when they use skill roots and Durar-style
210
+ hook-pack directories (`HOOK.md` + `handler.ts`).
211
+
212
+ </Accordion>
213
+
214
+ <Accordion title="Claude bundles">
215
+ Two detection modes:
216
+
217
+ - **Manifest-based:** `.claude-plugin/plugin.json`
218
+ - **Manifestless:** default Claude layout (`skills/`, `commands/`, `agents/`, `hooks/`, `.mcp.json`, `.lsp.json`, `settings.json`)
219
+
220
+ Claude-specific behavior:
221
+
222
+ - `commands/` is treated as skill content
223
+ - `settings.json` is imported into embedded Pi settings (shell override keys are sanitized)
224
+ - `.mcp.json` exposes supported stdio tools to embedded Pi
225
+ - `.lsp.json` plus manifest-declared `lspServers` paths load into embedded Pi LSP defaults
226
+ - `hooks/hooks.json` is detected but not executed
227
+ - Custom component paths in the manifest are additive (they extend defaults, not replace them)
228
+
229
+ </Accordion>
230
+
231
+ <Accordion title="Cursor bundles">
232
+ Markers: `.cursor-plugin/plugin.json`
233
+
234
+ Optional content: `skills/`, `.cursor/commands/`, `.cursor/agents/`, `.cursor/rules/`, `.cursor/hooks.json`, `.mcp.json`
235
+
236
+ - `.cursor/commands/` is treated as skill content
237
+ - `.cursor/rules/`, `.cursor/agents/`, and `.cursor/hooks.json` are detect-only
238
+
239
+ </Accordion>
240
+ </AccordionGroup>
241
+
242
+ ## Detection precedence
243
+
244
+ Durar checks for native plugin format first:
245
+
246
+ 1. `Durar.plugin.json` or valid `package.json` with `Durar.extensions` — treated as **native plugin**
247
+ 2. Bundle markers (`.codex-plugin/`, `.claude-plugin/`, or default Claude/Cursor layout) — treated as **bundle**
248
+
249
+ If a directory contains both, Durar uses the native path. This prevents
250
+ dual-format packages from being partially installed as bundles.
251
+
252
+ ## Security
253
+
254
+ Bundles have a narrower trust boundary than native plugins:
255
+
256
+ - Durar does **not** load arbitrary bundle runtime modules in-process
257
+ - Skills and hook-pack paths must stay inside the plugin root (boundary-checked)
258
+ - Settings files are read with the same boundary checks
259
+ - Supported stdio MCP servers may be launched as subprocesses
260
+
261
+ This makes bundles safer by default, but you should still treat third-party
262
+ bundles as trusted content for the features they do expose.
263
+
264
+ ## Troubleshooting
265
+
266
+ <AccordionGroup>
267
+ <Accordion title="Bundle is detected but capabilities do not run">
268
+ Run `Durar plugins inspect <id>`. If a capability is listed but marked as
269
+ not wired, that is a product limit — not a broken install.
270
+ </Accordion>
271
+
272
+ <Accordion title="Claude command files do not appear">
273
+ Make sure the bundle is enabled and the markdown files are inside a detected
274
+ `commands/` or `skills/` root.
275
+ </Accordion>
276
+
277
+ <Accordion title="Claude settings do not apply">
278
+ Only embedded Pi settings from `settings.json` are supported. Durar does
279
+ not treat bundle settings as raw config patches.
280
+ </Accordion>
281
+
282
+ <Accordion title="Claude hooks do not execute">
283
+ `hooks/hooks.json` is detect-only. If you need runnable hooks, use the
284
+ Durar hook-pack layout or ship a native plugin.
285
+ </Accordion>
286
+ </AccordionGroup>
287
+
288
+ ## Related
289
+
290
+ - [Install and Configure Plugins](/tools/plugin)
291
+ - [Building Plugins](/plugins/building-plugins) — create a native plugin
292
+ - [Plugin Manifest](/plugins/manifest) — native manifest schema