vilvona 1.0.0

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 (812) hide show
  1. package/CHANGELOG.md +12331 -0
  2. package/LICENSE +24 -0
  3. package/README.md +314 -0
  4. package/THIRD_PARTY_NOTICES.md +37 -0
  5. package/docs/.i18n/README.md +81 -0
  6. package/docs/.i18n/ar-navigation.json +18 -0
  7. package/docs/.i18n/de-navigation.json +18 -0
  8. package/docs/.i18n/es-navigation.json +18 -0
  9. package/docs/.i18n/fr-navigation.json +18 -0
  10. package/docs/.i18n/glossary.ar.json +82 -0
  11. package/docs/.i18n/glossary.de.json +82 -0
  12. package/docs/.i18n/glossary.es.json +82 -0
  13. package/docs/.i18n/glossary.fa.json +82 -0
  14. package/docs/.i18n/glossary.fr.json +82 -0
  15. package/docs/.i18n/glossary.id.json +82 -0
  16. package/docs/.i18n/glossary.it.json +82 -0
  17. package/docs/.i18n/glossary.ja-JP.json +102 -0
  18. package/docs/.i18n/glossary.ko.json +82 -0
  19. package/docs/.i18n/glossary.nl.json +82 -0
  20. package/docs/.i18n/glossary.pl.json +82 -0
  21. package/docs/.i18n/glossary.pt-BR.json +82 -0
  22. package/docs/.i18n/glossary.th.json +82 -0
  23. package/docs/.i18n/glossary.tr.json +82 -0
  24. package/docs/.i18n/glossary.uk.json +82 -0
  25. package/docs/.i18n/glossary.vi.json +82 -0
  26. package/docs/.i18n/glossary.zh-CN.json +1182 -0
  27. package/docs/.i18n/glossary.zh-TW.json +162 -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/translation-workflow.md +111 -0
  36. package/docs/.i18n/zh-Hans-navigation.json +552 -0
  37. package/docs/AGENTS.md +36 -0
  38. package/docs/agent-runtime-architecture.md +48 -0
  39. package/docs/announcements/bluebubbles-imessage.md +79 -0
  40. package/docs/auth-credential-semantics.md +124 -0
  41. package/docs/automation/auth-monitoring.md +11 -0
  42. package/docs/automation/clawflow.md +12 -0
  43. package/docs/automation/cron-jobs.md +569 -0
  44. package/docs/automation/cron-vs-heartbeat.md +11 -0
  45. package/docs/automation/gmail-pubsub.md +11 -0
  46. package/docs/automation/hooks.md +387 -0
  47. package/docs/automation/index.md +135 -0
  48. package/docs/automation/poll.md +12 -0
  49. package/docs/automation/standing-orders.md +250 -0
  50. package/docs/automation/taskflow.md +155 -0
  51. package/docs/automation/tasks.md +374 -0
  52. package/docs/automation/troubleshooting.md +12 -0
  53. package/docs/automation/webhook.md +12 -0
  54. package/docs/brave-search.md +11 -0
  55. package/docs/channels/access-groups.md +201 -0
  56. package/docs/channels/ambient-room-events.md +214 -0
  57. package/docs/channels/bot-loop-protection.md +131 -0
  58. package/docs/channels/broadcast-groups.md +472 -0
  59. package/docs/channels/channel-routing.md +162 -0
  60. package/docs/channels/clickclack.md +146 -0
  61. package/docs/channels/discord.md +1758 -0
  62. package/docs/channels/feishu.md +654 -0
  63. package/docs/channels/googlechat.md +286 -0
  64. package/docs/channels/group-messages.md +95 -0
  65. package/docs/channels/groups.md +610 -0
  66. package/docs/channels/imessage-from-bluebubbles.md +259 -0
  67. package/docs/channels/imessage.md +864 -0
  68. package/docs/channels/index.md +65 -0
  69. package/docs/channels/irc.md +253 -0
  70. package/docs/channels/line.md +243 -0
  71. package/docs/channels/location.md +71 -0
  72. package/docs/channels/matrix-migration.md +375 -0
  73. package/docs/channels/matrix-presentation.md +77 -0
  74. package/docs/channels/matrix-push-rules.md +150 -0
  75. package/docs/channels/matrix.md +935 -0
  76. package/docs/channels/mattermost.md +542 -0
  77. package/docs/channels/msteams.md +1097 -0
  78. package/docs/channels/nextcloud-talk.md +176 -0
  79. package/docs/channels/nostr.md +253 -0
  80. package/docs/channels/pairing.md +214 -0
  81. package/docs/channels/qqbot.md +317 -0
  82. package/docs/channels/signal.md +417 -0
  83. package/docs/channels/slack.md +1623 -0
  84. package/docs/channels/sms.md +380 -0
  85. package/docs/channels/synology-chat.md +187 -0
  86. package/docs/channels/telegram.md +1121 -0
  87. package/docs/channels/tlon.md +296 -0
  88. package/docs/channels/troubleshooting.md +162 -0
  89. package/docs/channels/twitch.md +431 -0
  90. package/docs/channels/wechat.md +171 -0
  91. package/docs/channels/whatsapp.md +796 -0
  92. package/docs/channels/yuanbao.md +416 -0
  93. package/docs/channels/zalo.md +253 -0
  94. package/docs/channels/zalouser.md +217 -0
  95. package/docs/ci.md +665 -0
  96. package/docs/clawhub/cli.md +82 -0
  97. package/docs/clawhub/publishing.md +96 -0
  98. package/docs/cli/acp.md +370 -0
  99. package/docs/cli/agent.md +109 -0
  100. package/docs/cli/agents.md +253 -0
  101. package/docs/cli/approvals.md +193 -0
  102. package/docs/cli/backup.md +98 -0
  103. package/docs/cli/browser.md +322 -0
  104. package/docs/cli/channels.md +154 -0
  105. package/docs/cli/clawbot.md +25 -0
  106. package/docs/cli/commitments.md +90 -0
  107. package/docs/cli/completion.md +39 -0
  108. package/docs/cli/config.md +504 -0
  109. package/docs/cli/configure.md +77 -0
  110. package/docs/cli/crestodian.md +337 -0
  111. package/docs/cli/cron.md +344 -0
  112. package/docs/cli/daemon.md +67 -0
  113. package/docs/cli/dashboard.md +33 -0
  114. package/docs/cli/devices.md +240 -0
  115. package/docs/cli/directory.md +68 -0
  116. package/docs/cli/dns.md +53 -0
  117. package/docs/cli/docs.md +63 -0
  118. package/docs/cli/doctor.md +254 -0
  119. package/docs/cli/flows.md +52 -0
  120. package/docs/cli/gateway.md +572 -0
  121. package/docs/cli/health.md +43 -0
  122. package/docs/cli/hooks.md +345 -0
  123. package/docs/cli/index.md +406 -0
  124. package/docs/cli/infer.md +364 -0
  125. package/docs/cli/logs.md +68 -0
  126. package/docs/cli/mcp.md +851 -0
  127. package/docs/cli/memory.md +183 -0
  128. package/docs/cli/message.md +317 -0
  129. package/docs/cli/migrate.md +334 -0
  130. package/docs/cli/models.md +239 -0
  131. package/docs/cli/node.md +178 -0
  132. package/docs/cli/nodes.md +76 -0
  133. package/docs/cli/onboard.md +251 -0
  134. package/docs/cli/pairing.md +77 -0
  135. package/docs/cli/path.md +511 -0
  136. package/docs/cli/plugins.md +480 -0
  137. package/docs/cli/policy.md +929 -0
  138. package/docs/cli/proxy.md +89 -0
  139. package/docs/cli/qr.md +56 -0
  140. package/docs/cli/reset.md +39 -0
  141. package/docs/cli/sandbox.md +208 -0
  142. package/docs/cli/secrets.md +202 -0
  143. package/docs/cli/security.md +135 -0
  144. package/docs/cli/sessions.md +178 -0
  145. package/docs/cli/setup.md +60 -0
  146. package/docs/cli/skills.md +156 -0
  147. package/docs/cli/status.md +45 -0
  148. package/docs/cli/system.md +89 -0
  149. package/docs/cli/tasks.md +111 -0
  150. package/docs/cli/transcripts.md +151 -0
  151. package/docs/cli/tui.md +92 -0
  152. package/docs/cli/uninstall.md +45 -0
  153. package/docs/cli/update.md +283 -0
  154. package/docs/cli/voicecall.md +204 -0
  155. package/docs/cli/webhooks.md +117 -0
  156. package/docs/cli/wiki.md +256 -0
  157. package/docs/cli/workboard.md +228 -0
  158. package/docs/concepts/active-memory.md +856 -0
  159. package/docs/concepts/agent-loop.md +185 -0
  160. package/docs/concepts/agent-runtimes.md +276 -0
  161. package/docs/concepts/agent-workspace.md +230 -0
  162. package/docs/concepts/agent.md +142 -0
  163. package/docs/concepts/architecture.md +154 -0
  164. package/docs/concepts/channel-docking.md +145 -0
  165. package/docs/concepts/commitments.md +150 -0
  166. package/docs/concepts/compaction.md +203 -0
  167. package/docs/concepts/context-engine.md +347 -0
  168. package/docs/concepts/context.md +199 -0
  169. package/docs/concepts/delegate-architecture.md +319 -0
  170. package/docs/concepts/dreaming.md +279 -0
  171. package/docs/concepts/experimental-features.md +111 -0
  172. package/docs/concepts/features.md +91 -0
  173. package/docs/concepts/mantis-slack-desktop-runbook.md +231 -0
  174. package/docs/concepts/mantis.md +744 -0
  175. package/docs/concepts/markdown-formatting.md +139 -0
  176. package/docs/concepts/memory-builtin.md +151 -0
  177. package/docs/concepts/memory-honcho.md +144 -0
  178. package/docs/concepts/memory-qmd.md +277 -0
  179. package/docs/concepts/memory-search.md +175 -0
  180. package/docs/concepts/memory.md +299 -0
  181. package/docs/concepts/message-lifecycle-refactor.md +1126 -0
  182. package/docs/concepts/messages.md +216 -0
  183. package/docs/concepts/model-failover.md +405 -0
  184. package/docs/concepts/model-providers.md +719 -0
  185. package/docs/concepts/models.md +371 -0
  186. package/docs/concepts/multi-agent.md +625 -0
  187. package/docs/concepts/oauth.md +218 -0
  188. package/docs/concepts/parallel-specialist-lanes.md +127 -0
  189. package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
  190. package/docs/concepts/presence.md +117 -0
  191. package/docs/concepts/progress-drafts.md +406 -0
  192. package/docs/concepts/qa-e2e-automation.md +979 -0
  193. package/docs/concepts/qa-matrix.md +139 -0
  194. package/docs/concepts/queue-steering.md +90 -0
  195. package/docs/concepts/queue.md +136 -0
  196. package/docs/concepts/retry.md +86 -0
  197. package/docs/concepts/session-pruning.md +104 -0
  198. package/docs/concepts/session-tool.md +201 -0
  199. package/docs/concepts/session.md +164 -0
  200. package/docs/concepts/soul.md +116 -0
  201. package/docs/concepts/streaming.md +258 -0
  202. package/docs/concepts/system-prompt.md +330 -0
  203. package/docs/concepts/timezone.md +47 -0
  204. package/docs/concepts/typebox.md +309 -0
  205. package/docs/concepts/typing-indicators.md +88 -0
  206. package/docs/concepts/usage-tracking.md +72 -0
  207. package/docs/date-time.md +126 -0
  208. package/docs/debug/node-issue.md +90 -0
  209. package/docs/diagnostics/flags.md +182 -0
  210. package/docs/docs.json +1885 -0
  211. package/docs/gateway/authentication.md +286 -0
  212. package/docs/gateway/background-process.md +147 -0
  213. package/docs/gateway/bonjour.md +303 -0
  214. package/docs/gateway/bridge-protocol.md +97 -0
  215. package/docs/gateway/cli-backends.md +463 -0
  216. package/docs/gateway/config-agents.md +1525 -0
  217. package/docs/gateway/config-channels.md +942 -0
  218. package/docs/gateway/config-tools.md +806 -0
  219. package/docs/gateway/configuration-examples.md +706 -0
  220. package/docs/gateway/configuration-reference.md +1449 -0
  221. package/docs/gateway/configuration.md +748 -0
  222. package/docs/gateway/diagnostics.md +213 -0
  223. package/docs/gateway/discovery.md +154 -0
  224. package/docs/gateway/doctor.md +576 -0
  225. package/docs/gateway/external-apps.md +86 -0
  226. package/docs/gateway/gateway-lock.md +37 -0
  227. package/docs/gateway/health.md +73 -0
  228. package/docs/gateway/heartbeat.md +498 -0
  229. package/docs/gateway/index.md +385 -0
  230. package/docs/gateway/local-model-services.md +205 -0
  231. package/docs/gateway/local-models.md +355 -0
  232. package/docs/gateway/logging.md +149 -0
  233. package/docs/gateway/multiple-gateways.md +178 -0
  234. package/docs/gateway/network-model.md +15 -0
  235. package/docs/gateway/openai-http-api.md +379 -0
  236. package/docs/gateway/openresponses-http-api.md +349 -0
  237. package/docs/gateway/openshell.md +316 -0
  238. package/docs/gateway/opentelemetry.md +440 -0
  239. package/docs/gateway/operator-scopes.md +119 -0
  240. package/docs/gateway/pairing.md +207 -0
  241. package/docs/gateway/prometheus.md +249 -0
  242. package/docs/gateway/protocol.md +839 -0
  243. package/docs/gateway/remote-gateway-readme.md +169 -0
  244. package/docs/gateway/remote.md +280 -0
  245. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +148 -0
  246. package/docs/gateway/sandboxing.md +546 -0
  247. package/docs/gateway/secrets-plan-contract.md +159 -0
  248. package/docs/gateway/secrets.md +805 -0
  249. package/docs/gateway/security/audit-checks.md +127 -0
  250. package/docs/gateway/security/exposure-runbook.md +212 -0
  251. package/docs/gateway/security/index.md +1344 -0
  252. package/docs/gateway/security/secure-file-operations.md +76 -0
  253. package/docs/gateway/security/shrinkwrap.md +111 -0
  254. package/docs/gateway/tailscale.md +180 -0
  255. package/docs/gateway/tools-invoke-http-api.md +175 -0
  256. package/docs/gateway/troubleshooting.md +881 -0
  257. package/docs/gateway/trusted-proxy-auth.md +483 -0
  258. package/docs/help/debugging.md +341 -0
  259. package/docs/help/environment.md +240 -0
  260. package/docs/help/faq-first-run.md +872 -0
  261. package/docs/help/faq-models.md +557 -0
  262. package/docs/help/faq.md +2115 -0
  263. package/docs/help/index.md +39 -0
  264. package/docs/help/scripts.md +56 -0
  265. package/docs/help/testing-live.md +592 -0
  266. package/docs/help/testing-updates-plugins.md +299 -0
  267. package/docs/help/testing.md +977 -0
  268. package/docs/help/troubleshooting.md +500 -0
  269. package/docs/index.md +196 -0
  270. package/docs/install/ansible.md +233 -0
  271. package/docs/install/azure.md +315 -0
  272. package/docs/install/bun.md +59 -0
  273. package/docs/install/clawdock.md +112 -0
  274. package/docs/install/development-channels.md +148 -0
  275. package/docs/install/digitalocean.md +174 -0
  276. package/docs/install/docker-vm-runtime.md +154 -0
  277. package/docs/install/docker.md +564 -0
  278. package/docs/install/exe-dev.md +201 -0
  279. package/docs/install/fly.md +524 -0
  280. package/docs/install/gcp.md +418 -0
  281. package/docs/install/hetzner.md +285 -0
  282. package/docs/install/hostinger.md +98 -0
  283. package/docs/install/index.md +236 -0
  284. package/docs/install/installer.md +447 -0
  285. package/docs/install/kubernetes.md +196 -0
  286. package/docs/install/macos-vm.md +281 -0
  287. package/docs/install/migrating-claude.md +165 -0
  288. package/docs/install/migrating-hermes.md +178 -0
  289. package/docs/install/migrating.md +137 -0
  290. package/docs/install/nix.md +112 -0
  291. package/docs/install/node.md +142 -0
  292. package/docs/install/northflank.mdx +44 -0
  293. package/docs/install/oracle.md +218 -0
  294. package/docs/install/podman.md +216 -0
  295. package/docs/install/railway.mdx +92 -0
  296. package/docs/install/raspberry-pi.md +234 -0
  297. package/docs/install/render.mdx +167 -0
  298. package/docs/install/uninstall.md +140 -0
  299. package/docs/install/updating.md +284 -0
  300. package/docs/install/upstash.md +96 -0
  301. package/docs/logging.md +322 -0
  302. package/docs/maturity-scores.yaml +5361 -0
  303. package/docs/nav-tabs-underline.js +104 -0
  304. package/docs/network.md +72 -0
  305. package/docs/nodes/audio.md +216 -0
  306. package/docs/nodes/camera.md +166 -0
  307. package/docs/nodes/images.md +77 -0
  308. package/docs/nodes/index.md +444 -0
  309. package/docs/nodes/location-command.md +102 -0
  310. package/docs/nodes/media-understanding.md +495 -0
  311. package/docs/nodes/talk.md +160 -0
  312. package/docs/nodes/troubleshooting.md +123 -0
  313. package/docs/nodes/voicewake.md +93 -0
  314. package/docs/openclaw-agent-runtime.md +82 -0
  315. package/docs/perplexity.md +11 -0
  316. package/docs/plan/codex-context-engine-harness.md +624 -0
  317. package/docs/plan/ui-channels.md +284 -0
  318. package/docs/platforms/android.md +286 -0
  319. package/docs/platforms/digitalocean.md +12 -0
  320. package/docs/platforms/easyrunner.md +109 -0
  321. package/docs/platforms/index.md +65 -0
  322. package/docs/platforms/ios.md +287 -0
  323. package/docs/platforms/linux.md +141 -0
  324. package/docs/platforms/mac/bundled-gateway.md +79 -0
  325. package/docs/platforms/mac/canvas.md +128 -0
  326. package/docs/platforms/mac/child-process.md +72 -0
  327. package/docs/platforms/mac/dev-setup.md +112 -0
  328. package/docs/platforms/mac/health.md +39 -0
  329. package/docs/platforms/mac/icon.md +36 -0
  330. package/docs/platforms/mac/logging.md +62 -0
  331. package/docs/platforms/mac/menu-bar.md +93 -0
  332. package/docs/platforms/mac/peekaboo.md +96 -0
  333. package/docs/platforms/mac/permissions.md +73 -0
  334. package/docs/platforms/mac/remote.md +123 -0
  335. package/docs/platforms/mac/signing.md +52 -0
  336. package/docs/platforms/mac/skills.md +45 -0
  337. package/docs/platforms/mac/voice-overlay.md +66 -0
  338. package/docs/platforms/mac/voicewake.md +79 -0
  339. package/docs/platforms/mac/webchat.md +54 -0
  340. package/docs/platforms/mac/xpc.md +66 -0
  341. package/docs/platforms/macos.md +228 -0
  342. package/docs/platforms/oracle.md +12 -0
  343. package/docs/platforms/raspberry-pi.md +13 -0
  344. package/docs/platforms/windows.md +304 -0
  345. package/docs/plugins/adding-capabilities.md +146 -0
  346. package/docs/plugins/admin-http-rpc.md +216 -0
  347. package/docs/plugins/agent-tools.md +13 -0
  348. package/docs/plugins/architecture-internals.md +1203 -0
  349. package/docs/plugins/architecture.md +483 -0
  350. package/docs/plugins/building-extensions.md +13 -0
  351. package/docs/plugins/building-plugins.md +343 -0
  352. package/docs/plugins/bundles.md +310 -0
  353. package/docs/plugins/cli-backend-plugins.md +328 -0
  354. package/docs/plugins/codex-computer-use.md +297 -0
  355. package/docs/plugins/codex-harness-reference.md +480 -0
  356. package/docs/plugins/codex-harness-runtime.md +268 -0
  357. package/docs/plugins/codex-harness.md +800 -0
  358. package/docs/plugins/codex-native-plugins.md +280 -0
  359. package/docs/plugins/community.md +77 -0
  360. package/docs/plugins/compatibility.md +198 -0
  361. package/docs/plugins/copilot.md +355 -0
  362. package/docs/plugins/dependency-resolution.md +176 -0
  363. package/docs/plugins/google-meet.md +1737 -0
  364. package/docs/plugins/hooks.md +525 -0
  365. package/docs/plugins/install-overrides.md +80 -0
  366. package/docs/plugins/llama-cpp.md +58 -0
  367. package/docs/plugins/manage-plugins.md +214 -0
  368. package/docs/plugins/manifest.md +1468 -0
  369. package/docs/plugins/memory-lancedb.md +385 -0
  370. package/docs/plugins/memory-wiki.md +529 -0
  371. package/docs/plugins/message-presentation.md +487 -0
  372. package/docs/plugins/oc-path.md +166 -0
  373. package/docs/plugins/plugin-inventory.md +318 -0
  374. package/docs/plugins/plugin-permission-requests.md +193 -0
  375. package/docs/plugins/reference/acpx.md +23 -0
  376. package/docs/plugins/reference/admin-http-rpc.md +23 -0
  377. package/docs/plugins/reference/alibaba.md +23 -0
  378. package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
  379. package/docs/plugins/reference/amazon-bedrock.md +23 -0
  380. package/docs/plugins/reference/anthropic-vertex.md +29 -0
  381. package/docs/plugins/reference/anthropic.md +23 -0
  382. package/docs/plugins/reference/arcee.md +23 -0
  383. package/docs/plugins/reference/azure-speech.md +23 -0
  384. package/docs/plugins/reference/bonjour.md +19 -0
  385. package/docs/plugins/reference/brave.md +23 -0
  386. package/docs/plugins/reference/browser.md +23 -0
  387. package/docs/plugins/reference/byteplus.md +19 -0
  388. package/docs/plugins/reference/canvas.md +19 -0
  389. package/docs/plugins/reference/cerebras.md +23 -0
  390. package/docs/plugins/reference/chutes.md +23 -0
  391. package/docs/plugins/reference/clickclack.md +23 -0
  392. package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
  393. package/docs/plugins/reference/codex-supervisor.md +27 -0
  394. package/docs/plugins/reference/codex.md +23 -0
  395. package/docs/plugins/reference/comfy.md +23 -0
  396. package/docs/plugins/reference/copilot-proxy.md +19 -0
  397. package/docs/plugins/reference/copilot.md +23 -0
  398. package/docs/plugins/reference/deepgram.md +23 -0
  399. package/docs/plugins/reference/deepinfra.md +23 -0
  400. package/docs/plugins/reference/deepseek.md +23 -0
  401. package/docs/plugins/reference/diagnostics-otel.md +19 -0
  402. package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
  403. package/docs/plugins/reference/diffs-language-pack.md +31 -0
  404. package/docs/plugins/reference/diffs.md +19 -0
  405. package/docs/plugins/reference/discord.md +23 -0
  406. package/docs/plugins/reference/document-extract.md +23 -0
  407. package/docs/plugins/reference/duckduckgo.md +23 -0
  408. package/docs/plugins/reference/elevenlabs.md +23 -0
  409. package/docs/plugins/reference/exa.md +23 -0
  410. package/docs/plugins/reference/fal.md +23 -0
  411. package/docs/plugins/reference/feishu.md +23 -0
  412. package/docs/plugins/reference/file-transfer.md +19 -0
  413. package/docs/plugins/reference/firecrawl.md +23 -0
  414. package/docs/plugins/reference/fireworks.md +23 -0
  415. package/docs/plugins/reference/github-copilot.md +23 -0
  416. package/docs/plugins/reference/gmi.md +23 -0
  417. package/docs/plugins/reference/google-meet.md +23 -0
  418. package/docs/plugins/reference/google.md +23 -0
  419. package/docs/plugins/reference/googlechat.md +23 -0
  420. package/docs/plugins/reference/gradium.md +23 -0
  421. package/docs/plugins/reference/groq.md +23 -0
  422. package/docs/plugins/reference/huggingface.md +23 -0
  423. package/docs/plugins/reference/imessage.md +23 -0
  424. package/docs/plugins/reference/inworld.md +23 -0
  425. package/docs/plugins/reference/irc.md +23 -0
  426. package/docs/plugins/reference/kilocode.md +23 -0
  427. package/docs/plugins/reference/kimi.md +23 -0
  428. package/docs/plugins/reference/line.md +23 -0
  429. package/docs/plugins/reference/litellm.md +23 -0
  430. package/docs/plugins/reference/llama-cpp.md +23 -0
  431. package/docs/plugins/reference/llm-task.md +19 -0
  432. package/docs/plugins/reference/lmstudio.md +23 -0
  433. package/docs/plugins/reference/lobster.md +19 -0
  434. package/docs/plugins/reference/matrix.md +23 -0
  435. package/docs/plugins/reference/mattermost.md +23 -0
  436. package/docs/plugins/reference/memory-core.md +19 -0
  437. package/docs/plugins/reference/memory-lancedb.md +23 -0
  438. package/docs/plugins/reference/memory-wiki.md +23 -0
  439. package/docs/plugins/reference/microsoft-foundry.md +113 -0
  440. package/docs/plugins/reference/microsoft.md +19 -0
  441. package/docs/plugins/reference/migrate-claude.md +19 -0
  442. package/docs/plugins/reference/migrate-hermes.md +19 -0
  443. package/docs/plugins/reference/minimax.md +23 -0
  444. package/docs/plugins/reference/mistral.md +23 -0
  445. package/docs/plugins/reference/moonshot.md +23 -0
  446. package/docs/plugins/reference/msteams.md +23 -0
  447. package/docs/plugins/reference/nextcloud-talk.md +23 -0
  448. package/docs/plugins/reference/nostr.md +23 -0
  449. package/docs/plugins/reference/novita.md +23 -0
  450. package/docs/plugins/reference/nvidia.md +23 -0
  451. package/docs/plugins/reference/oc-path.md +23 -0
  452. package/docs/plugins/reference/ollama.md +24 -0
  453. package/docs/plugins/reference/open-prose.md +19 -0
  454. package/docs/plugins/reference/openai.md +23 -0
  455. package/docs/plugins/reference/opencode-go.md +23 -0
  456. package/docs/plugins/reference/opencode.md +23 -0
  457. package/docs/plugins/reference/openrouter.md +23 -0
  458. package/docs/plugins/reference/openshell.md +19 -0
  459. package/docs/plugins/reference/perplexity.md +23 -0
  460. package/docs/plugins/reference/pixverse.md +23 -0
  461. package/docs/plugins/reference/policy.md +79 -0
  462. package/docs/plugins/reference/qa-channel.md +23 -0
  463. package/docs/plugins/reference/qa-lab.md +19 -0
  464. package/docs/plugins/reference/qa-matrix.md +19 -0
  465. package/docs/plugins/reference/qianfan.md +23 -0
  466. package/docs/plugins/reference/qqbot.md +23 -0
  467. package/docs/plugins/reference/qwen.md +24 -0
  468. package/docs/plugins/reference/runway.md +23 -0
  469. package/docs/plugins/reference/searxng.md +19 -0
  470. package/docs/plugins/reference/senseaudio.md +23 -0
  471. package/docs/plugins/reference/sglang.md +23 -0
  472. package/docs/plugins/reference/signal.md +23 -0
  473. package/docs/plugins/reference/slack.md +23 -0
  474. package/docs/plugins/reference/sms.md +23 -0
  475. package/docs/plugins/reference/stepfun.md +23 -0
  476. package/docs/plugins/reference/synology-chat.md +23 -0
  477. package/docs/plugins/reference/synthetic.md +23 -0
  478. package/docs/plugins/reference/tavily.md +23 -0
  479. package/docs/plugins/reference/telegram.md +23 -0
  480. package/docs/plugins/reference/tencent.md +23 -0
  481. package/docs/plugins/reference/tlon.md +23 -0
  482. package/docs/plugins/reference/together.md +23 -0
  483. package/docs/plugins/reference/tokenjuice.md +23 -0
  484. package/docs/plugins/reference/tts-local-cli.md +19 -0
  485. package/docs/plugins/reference/twitch.md +23 -0
  486. package/docs/plugins/reference/venice.md +23 -0
  487. package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
  488. package/docs/plugins/reference/vllm.md +23 -0
  489. package/docs/plugins/reference/voice-call.md +23 -0
  490. package/docs/plugins/reference/volcengine.md +23 -0
  491. package/docs/plugins/reference/voyage.md +19 -0
  492. package/docs/plugins/reference/vydra.md +23 -0
  493. package/docs/plugins/reference/web-readability.md +19 -0
  494. package/docs/plugins/reference/webhooks.md +23 -0
  495. package/docs/plugins/reference/whatsapp.md +23 -0
  496. package/docs/plugins/reference/workboard.md +23 -0
  497. package/docs/plugins/reference/xai.md +23 -0
  498. package/docs/plugins/reference/xiaomi.md +23 -0
  499. package/docs/plugins/reference/zai.md +23 -0
  500. package/docs/plugins/reference/zalo.md +23 -0
  501. package/docs/plugins/reference/zalouser.md +24 -0
  502. package/docs/plugins/reference.md +19 -0
  503. package/docs/plugins/sdk-agent-harness.md +339 -0
  504. package/docs/plugins/sdk-channel-inbound.md +70 -0
  505. package/docs/plugins/sdk-channel-ingress.md +137 -0
  506. package/docs/plugins/sdk-channel-message.md +18 -0
  507. package/docs/plugins/sdk-channel-outbound.md +113 -0
  508. package/docs/plugins/sdk-channel-plugins.md +770 -0
  509. package/docs/plugins/sdk-channel-turn.md +9 -0
  510. package/docs/plugins/sdk-entrypoints.md +344 -0
  511. package/docs/plugins/sdk-migration.md +1011 -0
  512. package/docs/plugins/sdk-overview.md +525 -0
  513. package/docs/plugins/sdk-provider-plugins.md +1019 -0
  514. package/docs/plugins/sdk-runtime.md +683 -0
  515. package/docs/plugins/sdk-setup.md +550 -0
  516. package/docs/plugins/sdk-subpaths.md +401 -0
  517. package/docs/plugins/sdk-testing.md +403 -0
  518. package/docs/plugins/tool-plugins.md +411 -0
  519. package/docs/plugins/voice-call.md +942 -0
  520. package/docs/plugins/webhooks.md +192 -0
  521. package/docs/plugins/workboard.md +402 -0
  522. package/docs/plugins/zalouser.md +86 -0
  523. package/docs/prose.md +191 -0
  524. package/docs/providers/alibaba.md +158 -0
  525. package/docs/providers/anthropic.md +386 -0
  526. package/docs/providers/arcee.md +144 -0
  527. package/docs/providers/azure-speech.md +119 -0
  528. package/docs/providers/bedrock-mantle.md +224 -0
  529. package/docs/providers/bedrock.md +433 -0
  530. package/docs/providers/cerebras.md +130 -0
  531. package/docs/providers/chutes.md +153 -0
  532. package/docs/providers/claude-max-api-proxy.md +191 -0
  533. package/docs/providers/cloudflare-ai-gateway.md +119 -0
  534. package/docs/providers/comfy.md +362 -0
  535. package/docs/providers/deepgram.md +184 -0
  536. package/docs/providers/deepinfra.md +92 -0
  537. package/docs/providers/deepseek.md +146 -0
  538. package/docs/providers/ds4.md +309 -0
  539. package/docs/providers/elevenlabs.md +130 -0
  540. package/docs/providers/fal.md +240 -0
  541. package/docs/providers/fireworks.md +144 -0
  542. package/docs/providers/github-copilot.md +257 -0
  543. package/docs/providers/gmi.md +92 -0
  544. package/docs/providers/google.md +472 -0
  545. package/docs/providers/gradium.md +123 -0
  546. package/docs/providers/groq.md +171 -0
  547. package/docs/providers/huggingface.md +235 -0
  548. package/docs/providers/index.md +105 -0
  549. package/docs/providers/inferrs.md +272 -0
  550. package/docs/providers/inworld.md +120 -0
  551. package/docs/providers/kilocode.md +135 -0
  552. package/docs/providers/litellm.md +234 -0
  553. package/docs/providers/lmstudio.md +224 -0
  554. package/docs/providers/minimax.md +518 -0
  555. package/docs/providers/mistral.md +235 -0
  556. package/docs/providers/models.md +64 -0
  557. package/docs/providers/moonshot.md +413 -0
  558. package/docs/providers/novita.md +92 -0
  559. package/docs/providers/nvidia.md +208 -0
  560. package/docs/providers/ollama-cloud.md +115 -0
  561. package/docs/providers/ollama.md +1225 -0
  562. package/docs/providers/openai.md +1091 -0
  563. package/docs/providers/opencode-go.md +123 -0
  564. package/docs/providers/opencode.md +149 -0
  565. package/docs/providers/openrouter.md +390 -0
  566. package/docs/providers/perplexity-provider.md +123 -0
  567. package/docs/providers/pixverse.md +165 -0
  568. package/docs/providers/qianfan.md +132 -0
  569. package/docs/providers/qwen-oauth.md +115 -0
  570. package/docs/providers/qwen.md +364 -0
  571. package/docs/providers/runway.md +103 -0
  572. package/docs/providers/senseaudio.md +68 -0
  573. package/docs/providers/sglang.md +161 -0
  574. package/docs/providers/stepfun.md +229 -0
  575. package/docs/providers/synthetic.md +154 -0
  576. package/docs/providers/tencent.md +130 -0
  577. package/docs/providers/together.md +140 -0
  578. package/docs/providers/venice.md +312 -0
  579. package/docs/providers/vercel-ai-gateway.md +128 -0
  580. package/docs/providers/vllm.md +407 -0
  581. package/docs/providers/volcengine.md +199 -0
  582. package/docs/providers/vydra.md +180 -0
  583. package/docs/providers/xai.md +571 -0
  584. package/docs/providers/xiaomi.md +286 -0
  585. package/docs/providers/zai.md +224 -0
  586. package/docs/refactor/access.md +9 -0
  587. package/docs/refactor/acp.md +298 -0
  588. package/docs/refactor/canvas.md +131 -0
  589. package/docs/refactor/database-first.md +2263 -0
  590. package/docs/refactor/ingress-core.md +341 -0
  591. package/docs/reference/AGENTS.default.md +131 -0
  592. package/docs/reference/RELEASING.md +844 -0
  593. package/docs/reference/api-usage-costs.md +208 -0
  594. package/docs/reference/application-modernization-plan.md +208 -0
  595. package/docs/reference/code-mode.md +1058 -0
  596. package/docs/reference/credits.md +33 -0
  597. package/docs/reference/device-models.md +50 -0
  598. package/docs/reference/full-release-validation.md +206 -0
  599. package/docs/reference/memory-config.md +630 -0
  600. package/docs/reference/prompt-caching.md +358 -0
  601. package/docs/reference/release-performance-sweep.md +347 -0
  602. package/docs/reference/rich-output-protocol.md +93 -0
  603. package/docs/reference/rpc.md +43 -0
  604. package/docs/reference/secret-placeholder-conventions.md +33 -0
  605. package/docs/reference/secretref-credential-surface.md +163 -0
  606. package/docs/reference/secretref-user-supplied-credentials-matrix.json +691 -0
  607. package/docs/reference/session-management-compaction.md +474 -0
  608. package/docs/reference/templates/AGENTS.dev.md +90 -0
  609. package/docs/reference/templates/AGENTS.md +227 -0
  610. package/docs/reference/templates/BOOT.md +16 -0
  611. package/docs/reference/templates/BOOTSTRAP.md +66 -0
  612. package/docs/reference/templates/HEARTBEAT.md +24 -0
  613. package/docs/reference/templates/IDENTITY.dev.md +52 -0
  614. package/docs/reference/templates/IDENTITY.md +34 -0
  615. package/docs/reference/templates/SOUL.dev.md +82 -0
  616. package/docs/reference/templates/SOUL.md +49 -0
  617. package/docs/reference/templates/TOOLS.dev.md +29 -0
  618. package/docs/reference/templates/TOOLS.md +51 -0
  619. package/docs/reference/templates/USER.dev.md +23 -0
  620. package/docs/reference/templates/USER.md +28 -0
  621. package/docs/reference/test.md +248 -0
  622. package/docs/reference/token-use.md +246 -0
  623. package/docs/reference/transcript-hygiene.md +226 -0
  624. package/docs/reference/wizard.md +252 -0
  625. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
  626. package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
  627. package/docs/security/formal-verification.md +170 -0
  628. package/docs/security/incident-response.md +59 -0
  629. package/docs/security/network-proxy.md +268 -0
  630. package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
  631. package/docs/snippets/plugin-publish/minimal-package.json +16 -0
  632. package/docs/specs/claw-supervisor.md +247 -0
  633. package/docs/start/bootstrapping.md +49 -0
  634. package/docs/start/docs-directory.md +69 -0
  635. package/docs/start/getting-started.md +152 -0
  636. package/docs/start/hubs.md +201 -0
  637. package/docs/start/lore.md +223 -0
  638. package/docs/start/onboarding-overview.md +72 -0
  639. package/docs/start/onboarding.md +98 -0
  640. package/docs/start/openclaw.md +246 -0
  641. package/docs/start/quickstart.md +25 -0
  642. package/docs/start/setup.md +178 -0
  643. package/docs/start/showcase.md +371 -0
  644. package/docs/start/wizard-cli-automation.md +232 -0
  645. package/docs/start/wizard-cli-reference.md +331 -0
  646. package/docs/start/wizard.md +142 -0
  647. package/docs/style.css +137 -0
  648. package/docs/tools/acp-agents-setup.md +356 -0
  649. package/docs/tools/acp-agents.md +865 -0
  650. package/docs/tools/agent-send.md +130 -0
  651. package/docs/tools/apply-patch.md +64 -0
  652. package/docs/tools/brave-search.md +139 -0
  653. package/docs/tools/browser-control.md +405 -0
  654. package/docs/tools/browser-linux-troubleshooting.md +173 -0
  655. package/docs/tools/browser-login.md +77 -0
  656. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
  657. package/docs/tools/browser.md +866 -0
  658. package/docs/tools/btw.md +159 -0
  659. package/docs/tools/capability-cookbook.md +12 -0
  660. package/docs/tools/clawhub.md +5 -0
  661. package/docs/tools/code-execution.md +173 -0
  662. package/docs/tools/creating-skills.md +271 -0
  663. package/docs/tools/diffs.md +527 -0
  664. package/docs/tools/duckduckgo-search.md +109 -0
  665. package/docs/tools/elevated.md +128 -0
  666. package/docs/tools/exa-search.md +152 -0
  667. package/docs/tools/exec-approvals-advanced.md +457 -0
  668. package/docs/tools/exec-approvals.md +520 -0
  669. package/docs/tools/exec.md +294 -0
  670. package/docs/tools/firecrawl.md +155 -0
  671. package/docs/tools/gemini-search.md +114 -0
  672. package/docs/tools/goal.md +217 -0
  673. package/docs/tools/grok-search.md +129 -0
  674. package/docs/tools/image-generation.md +538 -0
  675. package/docs/tools/index.md +176 -0
  676. package/docs/tools/kimi-search.md +105 -0
  677. package/docs/tools/llm-task.md +137 -0
  678. package/docs/tools/lobster.md +365 -0
  679. package/docs/tools/loop-detection.md +154 -0
  680. package/docs/tools/media-overview.md +161 -0
  681. package/docs/tools/minimax-search.md +102 -0
  682. package/docs/tools/multi-agent-sandbox-tools.md +409 -0
  683. package/docs/tools/music-generation.md +372 -0
  684. package/docs/tools/ollama-search.md +153 -0
  685. package/docs/tools/parallel-search.md +154 -0
  686. package/docs/tools/pdf.md +213 -0
  687. package/docs/tools/permission-modes.md +111 -0
  688. package/docs/tools/perplexity-search.md +220 -0
  689. package/docs/tools/plugin.md +378 -0
  690. package/docs/tools/reactions.md +100 -0
  691. package/docs/tools/searxng-search.md +141 -0
  692. package/docs/tools/skill-workshop.md +283 -0
  693. package/docs/tools/skills-config.md +457 -0
  694. package/docs/tools/skills.md +591 -0
  695. package/docs/tools/slash-commands.md +518 -0
  696. package/docs/tools/steer.md +77 -0
  697. package/docs/tools/subagents.md +652 -0
  698. package/docs/tools/tavily.md +162 -0
  699. package/docs/tools/thinking.md +142 -0
  700. package/docs/tools/tokenjuice.md +84 -0
  701. package/docs/tools/tool-search.md +269 -0
  702. package/docs/tools/trajectory.md +229 -0
  703. package/docs/tools/tts.md +1013 -0
  704. package/docs/tools/video-generation.md +555 -0
  705. package/docs/tools/web-fetch.md +210 -0
  706. package/docs/tools/web.md +476 -0
  707. package/docs/tts.md +11 -0
  708. package/docs/vps.md +139 -0
  709. package/docs/web/control-ui.md +530 -0
  710. package/docs/web/dashboard.md +107 -0
  711. package/docs/web/index.md +133 -0
  712. package/docs/web/tui.md +258 -0
  713. package/docs/web/webchat.md +102 -0
  714. package/npm-shrinkwrap.json +3485 -0
  715. package/openclaw.mjs +661 -0
  716. package/package.json +1971 -0
  717. package/patches/.gitkeep +0 -0
  718. package/patches/@agentclientprotocol__claude-agent-acp@0.39.0.patch +40 -0
  719. package/pnpm-workspace.yaml +124 -0
  720. package/scripts/crabbox-wrapper.mjs +2470 -0
  721. package/scripts/lib/official-external-channel-catalog.json +570 -0
  722. package/scripts/lib/official-external-plugin-catalog.json +284 -0
  723. package/scripts/lib/official-external-provider-catalog.json +158 -0
  724. package/scripts/lib/package-dist-imports.mjs +174 -0
  725. package/scripts/npm-runner.mjs +95 -0
  726. package/scripts/postinstall-bundled-plugins.mjs +978 -0
  727. package/scripts/preinstall-package-manager-warning.mjs +74 -0
  728. package/scripts/prepare-git-hooks.mjs +73 -0
  729. package/scripts/windows-cmd-helpers.mjs +29 -0
  730. package/skills/1password/SKILL.md +70 -0
  731. package/skills/1password/references/cli-examples.md +29 -0
  732. package/skills/1password/references/get-started.md +17 -0
  733. package/skills/apple-notes/SKILL.md +77 -0
  734. package/skills/apple-reminders/SKILL.md +118 -0
  735. package/skills/bear-notes/SKILL.md +107 -0
  736. package/skills/blogwatcher/SKILL.md +69 -0
  737. package/skills/blucli/SKILL.md +47 -0
  738. package/skills/camsnap/SKILL.md +45 -0
  739. package/skills/canvas/SKILL.md +78 -0
  740. package/skills/clawhub/SKILL.md +77 -0
  741. package/skills/coding-agent/SKILL.md +143 -0
  742. package/skills/diagram-maker/SKILL.md +53 -0
  743. package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
  744. package/skills/diagram-maker/references/svg-template.md +112 -0
  745. package/skills/discord/SKILL.md +136 -0
  746. package/skills/eightctl/SKILL.md +50 -0
  747. package/skills/gemini/SKILL.md +47 -0
  748. package/skills/gh-issues/SKILL.md +213 -0
  749. package/skills/gifgrep/SKILL.md +85 -0
  750. package/skills/github/SKILL.md +84 -0
  751. package/skills/gog/SKILL.md +116 -0
  752. package/skills/goplaces/SKILL.md +52 -0
  753. package/skills/healthcheck/SKILL.md +105 -0
  754. package/skills/himalaya/SKILL.md +80 -0
  755. package/skills/himalaya/references/configuration.md +184 -0
  756. package/skills/himalaya/references/message-composition.md +199 -0
  757. package/skills/imsg/SKILL.md +122 -0
  758. package/skills/mcporter/SKILL.md +61 -0
  759. package/skills/meme-maker/SKILL.md +42 -0
  760. package/skills/meme-maker/references/templates.json +358 -0
  761. package/skills/meme-maker/scripts/meme.mjs +398 -0
  762. package/skills/model-usage/SKILL.md +71 -0
  763. package/skills/model-usage/references/codexbar-cli.md +33 -0
  764. package/skills/model-usage/scripts/model_usage.py +319 -0
  765. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  766. package/skills/nano-pdf/SKILL.md +38 -0
  767. package/skills/node-connect/SKILL.md +143 -0
  768. package/skills/node-inspect-debugger/SKILL.md +85 -0
  769. package/skills/notion/SKILL.md +150 -0
  770. package/skills/obsidian/SKILL.md +119 -0
  771. package/skills/openai-whisper/SKILL.md +38 -0
  772. package/skills/openai-whisper-api/SKILL.md +71 -0
  773. package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
  774. package/skills/openhue/SKILL.md +112 -0
  775. package/skills/oracle/SKILL.md +126 -0
  776. package/skills/ordercli/SKILL.md +78 -0
  777. package/skills/peekaboo/SKILL.md +198 -0
  778. package/skills/pyproject.toml +10 -0
  779. package/skills/python-debugpy/SKILL.md +73 -0
  780. package/skills/sag/SKILL.md +87 -0
  781. package/skills/session-logs/SKILL.md +151 -0
  782. package/skills/sherpa-onnx-tts/SKILL.md +109 -0
  783. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  784. package/skills/skill-creator/SKILL.md +78 -0
  785. package/skills/skill-creator/license.txt +202 -0
  786. package/skills/skill-creator/scripts/init_skill.py +378 -0
  787. package/skills/skill-creator/scripts/package_skill.py +144 -0
  788. package/skills/skill-creator/scripts/quick_validate.py +169 -0
  789. package/skills/skill-creator/scripts/test_package_skill.py +199 -0
  790. package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
  791. package/skills/slack/SKILL.md +78 -0
  792. package/skills/songsee/SKILL.md +49 -0
  793. package/skills/sonoscli/SKILL.md +65 -0
  794. package/skills/spike/SKILL.md +51 -0
  795. package/skills/spotify-player/SKILL.md +64 -0
  796. package/skills/summarize/SKILL.md +87 -0
  797. package/skills/taskflow/SKILL.md +149 -0
  798. package/skills/taskflow/examples/inbox-triage.lobster +33 -0
  799. package/skills/taskflow/examples/pr-intake.lobster +32 -0
  800. package/skills/taskflow-inbox-triage/SKILL.md +119 -0
  801. package/skills/things-mac/SKILL.md +86 -0
  802. package/skills/tmux/SKILL.md +91 -0
  803. package/skills/tmux/scripts/find-sessions.sh +112 -0
  804. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  805. package/skills/trello/SKILL.md +108 -0
  806. package/skills/video-frames/SKILL.md +46 -0
  807. package/skills/video-frames/scripts/frame.sh +81 -0
  808. package/skills/voice-call/SKILL.md +45 -0
  809. package/skills/wacli/SKILL.md +72 -0
  810. package/skills/weather/SKILL.md +87 -0
  811. package/skills/xurl/SKILL.md +120 -0
  812. package/src/agents/templates/HEARTBEAT.md +5 -0
@@ -0,0 +1,228 @@
1
+ ---
2
+ summary: "OpenClaw macOS companion app (menu bar + gateway broker)"
3
+ read_when:
4
+ - Implementing macOS app features
5
+ - Changing gateway lifecycle or node bridging on macOS
6
+ title: "macOS app"
7
+ ---
8
+
9
+ The macOS app is the **menu-bar companion** for OpenClaw. It owns permissions,
10
+ manages/attaches to the Gateway locally (launchd or manual), and exposes macOS
11
+ capabilities to the agent as a node.
12
+
13
+ ## What it does
14
+
15
+ - Shows native notifications and status in the menu bar.
16
+ - Owns TCC prompts (Notifications, Accessibility, Screen Recording, Microphone,
17
+ Speech Recognition, Automation/AppleScript).
18
+ - Runs or connects to the Gateway (local or remote).
19
+ - Exposes macOS-only tools (Canvas, Camera, Screen Recording, `system.run`).
20
+ - Starts the local node host service in **remote** mode (launchd), and stops it in **local** mode.
21
+ - Optionally hosts **PeekabooBridge** for UI automation.
22
+ - Installs the global CLI (`openclaw`) on request via npm, pnpm, or bun (the app prefers npm, then pnpm, then bun; Node remains the recommended Gateway runtime).
23
+
24
+ ## Local vs remote mode
25
+
26
+ - **Local** (default): the app attaches to a running local Gateway if present;
27
+ otherwise it enables the launchd service via `openclaw gateway install`.
28
+ - **Remote**: the app connects to a Gateway over SSH/Tailscale and never starts
29
+ a local process.
30
+ The app starts the local **node host service** so the remote Gateway can reach this Mac.
31
+ The app does not spawn the Gateway as a child process.
32
+ Gateway discovery now prefers Tailscale MagicDNS names over raw tailnet IPs,
33
+ so the Mac app recovers more reliably when tailnet IPs change.
34
+
35
+ ## Launchd control
36
+
37
+ The app manages a per-user LaunchAgent labeled `ai.openclaw.gateway`
38
+ (or `ai.openclaw.<profile>` when using `--profile`/`OPENCLAW_PROFILE`; legacy `com.openclaw.*` still unloads).
39
+
40
+ ```bash
41
+ launchctl kickstart -k gui/$UID/ai.openclaw.gateway
42
+ launchctl bootout gui/$UID/ai.openclaw.gateway
43
+ ```
44
+
45
+ Replace the label with `ai.openclaw.<profile>` when running a named profile.
46
+
47
+ If the LaunchAgent isn't installed, enable it from the app or run
48
+ `openclaw gateway install`.
49
+
50
+ If the gateway repeatedly disappears for minutes to hours and only resumes when you touch the Control UI or SSH into the host, see the troubleshooting note for macOS Maintenance Sleep / `ENETDOWN` crashes and launchd's respawn-protection gate in [Gateway troubleshooting](/gateway/troubleshooting#macos-gateway-silently-stops-responding-then-resumes-when-you-touch-the-dashboard).
51
+
52
+ ## Node capabilities (mac)
53
+
54
+ The macOS app presents itself as a node. Common commands:
55
+
56
+ - Canvas: `canvas.present`, `canvas.navigate`, `canvas.eval`, `canvas.snapshot`, `canvas.a2ui.*`
57
+ - Camera: `camera.snap`, `camera.clip`
58
+ - Screen: `screen.snapshot`, `screen.record`
59
+ - System: `system.run`, `system.notify`
60
+
61
+ The node reports a `permissions` map so agents can decide what's allowed.
62
+
63
+ Node service + app IPC:
64
+
65
+ - When the headless node host service is running (remote mode), it connects to the Gateway WS as a node.
66
+ - `system.run` executes in the macOS app (UI/TCC context) over a local Unix socket; prompts + output stay in-app.
67
+
68
+ Diagram (SCI):
69
+
70
+ ```
71
+ Gateway -> Node Service (WS)
72
+ | IPC (UDS + token + HMAC + TTL)
73
+ v
74
+ Mac App (UI + TCC + system.run)
75
+ ```
76
+
77
+ ## Exec approvals (system.run)
78
+
79
+ `system.run` is controlled by **Exec approvals** in the macOS app (Settings → Exec approvals).
80
+ Security + ask + allowlist are stored locally on the Mac in:
81
+
82
+ ```
83
+ ~/.openclaw/exec-approvals.json
84
+ ```
85
+
86
+ Example:
87
+
88
+ ```json
89
+ {
90
+ "version": 1,
91
+ "defaults": {
92
+ "security": "deny",
93
+ "ask": "on-miss"
94
+ },
95
+ "agents": {
96
+ "main": {
97
+ "security": "allowlist",
98
+ "ask": "on-miss",
99
+ "allowlist": [{ "pattern": "/opt/homebrew/bin/rg" }]
100
+ }
101
+ }
102
+ }
103
+ ```
104
+
105
+ Notes:
106
+
107
+ - `allowlist` entries are glob patterns for resolved binary paths, or bare command names for PATH-invoked commands.
108
+ - Raw shell command text that contains shell control or expansion syntax (`&&`, `||`, `;`, `|`, `` ` ``, `$`, `<`, `>`, `(`, `)`) is treated as an allowlist miss and requires explicit approval (or allowlisting the shell binary).
109
+ - Choosing "Always Allow" in the prompt adds that command to the allowlist.
110
+ - `system.run` environment overrides are filtered (drops `PATH`, `DYLD_*`, `LD_*`, `BASHOPTS`, `FPATH`, `KSH_ENV`, `NODE_OPTIONS`, `NODE_REDIRECT_WARNINGS`, `NODE_REPL_EXTERNAL_MODULE`, `NODE_REPL_HISTORY`, `NODE_V8_COVERAGE`, `PYTHON*`, `PERL*`, `RUBYOPT`, `SHELLOPTS`, `PS4`, `TCLLIBPATH`) and then merged with the app's environment.
111
+ - For shell wrappers (`bash|sh|zsh ... -c/-lc`), request-scoped environment overrides are reduced to a small explicit allowlist (`TERM`, `LANG`, `LC_*`, `COLORTERM`, `NO_COLOR`, `FORCE_COLOR`).
112
+ - For allow-always decisions in allowlist mode, known dispatch wrappers (`env`, `nice`, `nohup`, `stdbuf`, `timeout`) persist inner executable paths instead of wrapper paths. If unwrapping is not safe, no allowlist entry is persisted automatically.
113
+
114
+ ## Deep links
115
+
116
+ The app registers the `openclaw://` URL scheme for local actions.
117
+
118
+ ### `openclaw://agent`
119
+
120
+ Triggers a Gateway `agent` request.
121
+
122
+ ```bash
123
+ open 'openclaw://agent?message=Hello%20from%20deep%20link'
124
+ ```
125
+
126
+ Query parameters:
127
+
128
+ - `message` (required)
129
+ - `sessionKey` (optional)
130
+ - `thinking` (optional)
131
+ - `deliver` / `to` / `channel` (optional)
132
+ - `timeoutSeconds` (optional)
133
+ - `key` (optional unattended mode key)
134
+
135
+ Safety:
136
+
137
+ - Without `key`, the app prompts for confirmation.
138
+ - Without `key`, the app enforces a short message limit for the confirmation prompt and ignores `deliver` / `to` / `channel`.
139
+ - With a valid `key`, the run is unattended (intended for personal automations).
140
+
141
+ ## Onboarding flow (typical)
142
+
143
+ 1. Install and launch **OpenClaw.app**.
144
+ 2. Complete the permissions checklist (TCC prompts).
145
+ 3. Ensure **Local** mode is active and the Gateway is running.
146
+ 4. Install the CLI if you want terminal access.
147
+
148
+ ## State dir placement (macOS)
149
+
150
+ Avoid putting your OpenClaw state dir in iCloud or other cloud-synced folders.
151
+ Sync-backed paths can add latency and occasionally cause file-lock/sync races for
152
+ sessions and credentials.
153
+
154
+ Prefer a local non-synced state path such as:
155
+
156
+ ```bash
157
+ OPENCLAW_STATE_DIR=~/.openclaw
158
+ ```
159
+
160
+ If `openclaw doctor` detects state under:
161
+
162
+ - `~/Library/Mobile Documents/com~apple~CloudDocs/...`
163
+ - `~/Library/CloudStorage/...`
164
+
165
+ it will warn and recommend moving back to a local path.
166
+
167
+ ## Build and dev workflow (native)
168
+
169
+ - `cd apps/macos && swift build`
170
+ - `swift run OpenClaw` (or Xcode)
171
+ - Package app: `scripts/package-mac-app.sh`
172
+
173
+ ## Debug gateway connectivity (macOS CLI)
174
+
175
+ Use the debug CLI to exercise the same Gateway WebSocket handshake and discovery
176
+ logic that the macOS app uses, without launching the app.
177
+
178
+ ```bash
179
+ cd apps/macos
180
+ swift run openclaw-mac connect --json
181
+ swift run openclaw-mac discover --timeout 3000 --json
182
+ ```
183
+
184
+ Connect options:
185
+
186
+ - `--url <ws://host:port>`: override config
187
+ - `--mode <local|remote>`: resolve from config (default: config or local)
188
+ - `--probe`: force a fresh health probe
189
+ - `--timeout <ms>`: request timeout (default: `15000`)
190
+ - `--json`: structured output for diffing
191
+
192
+ Discovery options:
193
+
194
+ - `--include-local`: include gateways that would be filtered as "local"
195
+ - `--timeout <ms>`: overall discovery window (default: `2000`)
196
+ - `--json`: structured output for diffing
197
+
198
+ <Tip>
199
+ Compare against `openclaw gateway discover --json` to see whether the macOS app's discovery pipeline (`local.` plus the configured wide-area domain, with wide-area and Tailscale Serve fallbacks) differs from the Node CLI's `dns-sd` based discovery.
200
+ </Tip>
201
+
202
+ ## Remote connection plumbing (SSH tunnels)
203
+
204
+ When the macOS app runs in **Remote** mode, it opens an SSH tunnel so local UI
205
+ components can talk to a remote Gateway as if it were on localhost.
206
+
207
+ ### Control tunnel (Gateway WebSocket port)
208
+
209
+ - **Purpose:** health checks, status, Web Chat, config, and other control-plane calls.
210
+ - **Local port:** the Gateway port (default `18789`), always stable.
211
+ - **Remote port:** the same Gateway port on the remote host.
212
+ - **Behavior:** no random local port; the app reuses an existing healthy tunnel
213
+ or restarts it if needed.
214
+ - **SSH shape:** `ssh -N -L <local>:127.0.0.1:<remote>` with BatchMode +
215
+ ExitOnForwardFailure + keepalive options.
216
+ - **IP reporting:** the SSH tunnel uses loopback, so the gateway will see the node
217
+ IP as `127.0.0.1`. Use **Direct (ws/wss)** transport if you want the real client
218
+ IP to appear (see [macOS remote access](/platforms/mac/remote)).
219
+
220
+ For setup steps, see [macOS remote access](/platforms/mac/remote). For protocol
221
+ details, see [Gateway protocol](/gateway/protocol).
222
+
223
+ ## Related docs
224
+
225
+ - [Gateway runbook](/gateway)
226
+ - [Gateway (macOS)](/platforms/mac/bundled-gateway)
227
+ - [macOS permissions](/platforms/mac/permissions)
228
+ - [Canvas](/platforms/mac/canvas)
@@ -0,0 +1,12 @@
1
+ ---
2
+ summary: "Redirect to /install/oracle"
3
+ title: "Oracle Cloud (platform)"
4
+ redirect: /install/oracle
5
+ ---
6
+
7
+ This page has moved to [Oracle Cloud](/install/oracle).
8
+
9
+ ## Related
10
+
11
+ - [Install overview](/install)
12
+ - [VPS hosting](/vps)
@@ -0,0 +1,13 @@
1
+ ---
2
+ summary: "Redirect to /install/raspberry-pi"
3
+ title: "Raspberry Pi (platform)"
4
+ redirect: /install/raspberry-pi
5
+ ---
6
+
7
+ This page has moved to [Raspberry Pi](/install/raspberry-pi).
8
+
9
+ ## Related
10
+
11
+ - [Install overview](/install)
12
+ - [Linux server](/vps)
13
+ - [Platforms](/platforms)
@@ -0,0 +1,304 @@
1
+ ---
2
+ summary: "Windows support: Windows Hub, native CLI and Gateway, WSL2 gateway setup, node mode, and troubleshooting"
3
+ read_when:
4
+ - Installing OpenClaw on Windows
5
+ - Choosing between Windows Hub, native Windows, and WSL2
6
+ - Setting up the Windows companion app or Windows node mode
7
+ title: "Windows"
8
+ ---
9
+
10
+ OpenClaw ships a native **Windows Hub** companion app plus Windows CLI support.
11
+ Use Windows Hub when you want a desktop app with setup, tray status, chat,
12
+ Command Center diagnostics, and Windows node capabilities. Use the PowerShell
13
+ installer when you want the CLI/Gateway directly. Use WSL2 when you want the
14
+ most Linux-compatible Gateway runtime.
15
+
16
+ ## Recommended: Windows Hub
17
+
18
+ Windows Hub is the native WinUI companion app for Windows 10 20H2+ and Windows 11. It installs without administrator privileges and is published with signed
19
+ x64 and ARM64 installers on OpenClaw releases.
20
+
21
+ Download the latest stable installer:
22
+
23
+ - [OpenClawCompanion-Setup-x64.exe](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-Setup-x64.exe)
24
+ - [OpenClawCompanion-Setup-arm64.exe](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-Setup-arm64.exe)
25
+ - [Checksums](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-SHA256SUMS.txt)
26
+
27
+ After install, launch **OpenClaw Companion** from the Start menu or the system
28
+ tray. The installer also adds shortcuts for Gateway Setup, Chat, Settings,
29
+ Check for Updates, and uninstall.
30
+
31
+ ### What Windows Hub includes
32
+
33
+ - system tray status and launch-at-login
34
+ - first-run setup for a local app-owned WSL Gateway
35
+ - connection settings for local, remote, and SSH-tunneled Gateways
36
+ - native chat window plus access to the browser Control UI
37
+ - Command Center diagnostics for sessions, usage, channels, nodes, pairing, and
38
+ repair commands
39
+ - Windows node mode for agent-controlled canvas, screen, camera, notifications,
40
+ device status, text-to-speech, speech-to-text, and controlled `system.run`
41
+ - local MCP server mode for MCP clients such as Claude Desktop, Claude Code, and
42
+ Cursor
43
+
44
+ ### First launch
45
+
46
+ On first launch, Windows Hub opens setup when there is no usable saved Gateway.
47
+ The fastest path is **Set up locally**, which provisions an app-owned
48
+ `OpenClawGateway` WSL distro, installs the Gateway inside it, and pairs the app.
49
+ This does not export or mutate your existing Ubuntu distro.
50
+
51
+ Choose **Advanced setup** or open the Connections tab when you already have a
52
+ Gateway. You can connect to:
53
+
54
+ - a local Gateway on this PC
55
+ - a WSL Gateway on this PC
56
+ - a remote Gateway by URL and token or setup code
57
+ - a Gateway reached through an SSH tunnel
58
+
59
+ When setup finishes, the tray icon turns green. Open **Command Center** from the
60
+ tray to confirm connection, pairing, node status, and channel health.
61
+
62
+ ## Windows node mode
63
+
64
+ Windows Hub can register as a first-class OpenClaw node. The agent can then use
65
+ declared Windows-native capabilities through the Gateway.
66
+
67
+ Common commands include:
68
+
69
+ - `canvas.present`, `canvas.hide`, `canvas.navigate`, `canvas.eval`,
70
+ `canvas.snapshot`
71
+ - `screen.snapshot` and, with explicit opt-in, `screen.record`
72
+ - `camera.list` and, with explicit opt-in, `camera.snap`, `camera.clip`
73
+ - `system.notify`, `system.run`, `system.run.prepare`, `system.which`
74
+ - `location.get`, `device.info`, `device.status`
75
+ - `stt.transcribe`, `tts.speak`
76
+
77
+ Node mode requires Gateway pairing. If the app shows a pairing request, approve
78
+ it from the Gateway host:
79
+
80
+ ```powershell
81
+ openclaw devices list
82
+ openclaw devices approve <request-id>
83
+ openclaw nodes status
84
+ ```
85
+
86
+ The Gateway only forwards commands that the node declares and server policy
87
+ allows. Privacy-sensitive commands such as `screen.record`, `camera.snap`, and
88
+ `camera.clip` require explicit `gateway.nodes.allowCommands` opt-in.
89
+
90
+ ## Local MCP mode
91
+
92
+ Windows Hub can expose the same Windows-native capability registry as a local
93
+ MCP server on loopback. This is useful when you want local MCP clients to drive
94
+ Windows capabilities without a running OpenClaw Gateway.
95
+
96
+ Enable it in Windows Hub Settings under the developer/advanced section. The app
97
+ shows the loopback endpoint and bearer token after the server is enabled.
98
+
99
+ Mode matrix:
100
+
101
+ | Node mode | MCP server | Behavior |
102
+ | --------- | ---------- | ---------------------------------- |
103
+ | off | off | Operator-only desktop app |
104
+ | on | off | Gateway-connected Windows node |
105
+ | off | on | Local MCP server only |
106
+ | on | on | Gateway node plus local MCP server |
107
+
108
+ ## Native Windows CLI and Gateway
109
+
110
+ For terminal-first use, install OpenClaw from PowerShell:
111
+
112
+ ```powershell
113
+ iwr -useb https://openclaw.ai/install.ps1 | iex
114
+ ```
115
+
116
+ Verify:
117
+
118
+ ```powershell
119
+ openclaw --version
120
+ openclaw doctor
121
+ openclaw gateway status --json
122
+ ```
123
+
124
+ Native Windows CLI and Gateway flows are supported and continue to improve.
125
+ Managed startup uses Windows Scheduled Tasks when available and falls back to a
126
+ per-user Startup-folder login item if task creation is denied.
127
+
128
+ To install the Gateway service:
129
+
130
+ ```powershell
131
+ openclaw gateway install
132
+ openclaw gateway status --json
133
+ ```
134
+
135
+ If you only want CLI use without a managed Gateway service:
136
+
137
+ ```powershell
138
+ openclaw onboard --non-interactive --skip-health
139
+ openclaw gateway run
140
+ ```
141
+
142
+ ## WSL2 Gateway
143
+
144
+ WSL2 remains the most Linux-compatible Gateway runtime on Windows. Windows Hub
145
+ can set up an app-owned WSL Gateway for you, or you can install manually inside
146
+ your own distro.
147
+
148
+ Manual setup:
149
+
150
+ ```powershell
151
+ wsl --install
152
+ # Or pick a distro explicitly:
153
+ wsl --list --online
154
+ wsl --install -d Ubuntu-24.04
155
+ ```
156
+
157
+ Enable systemd inside WSL:
158
+
159
+ ```bash
160
+ sudo tee /etc/wsl.conf >/dev/null <<'EOF'
161
+ [boot]
162
+ systemd=true
163
+ EOF
164
+ ```
165
+
166
+ Restart WSL from PowerShell:
167
+
168
+ ```powershell
169
+ wsl --shutdown
170
+ ```
171
+
172
+ Then install OpenClaw inside WSL with the Linux quickstart:
173
+
174
+ ```bash
175
+ curl -fsSL https://openclaw.ai/install.sh | bash
176
+ openclaw gateway status
177
+ ```
178
+
179
+ ## Gateway auto-start before Windows login
180
+
181
+ For headless WSL setups, ensure the full boot chain runs even when no one logs
182
+ into Windows.
183
+
184
+ Inside WSL:
185
+
186
+ ```bash
187
+ sudo loginctl enable-linger "$(whoami)"
188
+ openclaw gateway install
189
+ ```
190
+
191
+ In PowerShell as Administrator:
192
+
193
+ ```powershell
194
+ schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEM
195
+ ```
196
+
197
+ Replace `Ubuntu` with your distro name from:
198
+
199
+ ```powershell
200
+ wsl --list --verbose
201
+ ```
202
+
203
+ After reboot, verify from WSL:
204
+
205
+ ```bash
206
+ systemctl --user is-enabled openclaw-gateway.service
207
+ systemctl --user status openclaw-gateway.service --no-pager
208
+ ```
209
+
210
+ ## Expose WSL services over LAN
211
+
212
+ WSL has its own virtual network. If another machine must reach a service inside
213
+ WSL, forward a Windows port to the current WSL IP. The WSL IP can change after
214
+ restarts, so refresh the forwarding rule when needed.
215
+
216
+ Example in PowerShell as Administrator:
217
+
218
+ ```powershell
219
+ $Distro = "Ubuntu-24.04"
220
+ $ListenPort = 2222
221
+ $TargetPort = 22
222
+
223
+ $WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]
224
+ if (-not $WslIp) { throw "WSL IP not found." }
225
+
226
+ netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort `
227
+ connectaddress=$WslIp connectport=$TargetPort
228
+
229
+ New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound `
230
+ -Protocol TCP -LocalPort $ListenPort -Action Allow
231
+ ```
232
+
233
+ Notes:
234
+
235
+ - SSH from another machine targets the Windows host IP, for example
236
+ `ssh user@windows-host -p 2222`.
237
+ - Remote nodes must point at a reachable Gateway URL, not `127.0.0.1`.
238
+ - Use `listenaddress=0.0.0.0` for LAN access. Use `127.0.0.1` for local-only
239
+ access.
240
+
241
+ ## Troubleshooting
242
+
243
+ ### The tray icon does not appear
244
+
245
+ Check Task Manager for `OpenClaw.Tray.WinUI.exe`. If it is running, open the
246
+ hidden tray-icons area and pin it. If it is not running, launch **OpenClaw
247
+ Companion** from the Start menu.
248
+
249
+ ### Local setup fails
250
+
251
+ Open the setup log from Windows Hub or inspect:
252
+
253
+ ```powershell
254
+ notepad "$env:LOCALAPPDATA\OpenClawTray\Logs\Setup\easy-setup-latest.txt"
255
+ ```
256
+
257
+ Common causes are disabled WSL, blocked virtualization, stale app-owned WSL
258
+ state, or a network failure while installing the Gateway package.
259
+
260
+ ### The app says pairing is required
261
+
262
+ Approve the operator or node request from the Gateway:
263
+
264
+ ```powershell
265
+ openclaw devices list
266
+ openclaw devices approve <request-id>
267
+ ```
268
+
269
+ If the device already had a token, reconnect from the Connections tab after
270
+ approval.
271
+
272
+ ### Web chat cannot reach a remote Gateway
273
+
274
+ Remote web chat needs HTTPS or localhost. For self-signed certificates, trust
275
+ the certificate in Windows, or use an SSH tunnel to a localhost URL.
276
+
277
+ ### `screen.snapshot`, camera, or audio commands fail
278
+
279
+ Confirm Windows permissions for camera, microphone, screen capture, and
280
+ notifications. Packaged installs declare the protected capabilities, but Windows
281
+ may still prompt the first time a command uses them.
282
+
283
+ ### Git or GitHub connectivity fails
284
+
285
+ Some networks block or throttle HTTPS to GitHub. If `git clone` or `gh auth
286
+ login` fails, try another network, a VPN, or an HTTP/HTTPS proxy.
287
+
288
+ For token-based `gh` auth in the current session:
289
+
290
+ ```powershell
291
+ $env:GH_TOKEN="<your-token>"
292
+ gh auth status
293
+ gh auth setup-git
294
+ ```
295
+
296
+ Never commit tokens or paste them into issues or pull requests.
297
+
298
+ ## Related
299
+
300
+ - [Install overview](/install)
301
+ - [Node.js setup](/install/node)
302
+ - [Nodes](/nodes)
303
+ - [Control UI](/web/control-ui)
304
+ - [Gateway configuration](/gateway/configuration)
@@ -0,0 +1,146 @@
1
+ ---
2
+ summary: "Contributor guide for adding a new shared capability to the OpenClaw plugin system"
3
+ read_when:
4
+ - Adding a new core capability and plugin registration surface
5
+ - Deciding whether code belongs in core, a vendor plugin, or a feature plugin
6
+ - Wiring a new runtime helper for channels or tools
7
+ title: "Adding capabilities (contributor guide)"
8
+ sidebarTitle: "Adding capabilities"
9
+ ---
10
+
11
+ <Info>
12
+ This is a **contributor guide** for OpenClaw core developers. If you are
13
+ building an external plugin, see [Building plugins](/plugins/building-plugins)
14
+ instead. For the deep architecture reference (capability model, ownership,
15
+ load pipeline, runtime helpers), see [Plugin internals](/plugins/architecture).
16
+ </Info>
17
+
18
+ Use this when OpenClaw needs a new shared domain such as embeddings, image
19
+ generation, video generation, or some future vendor-backed feature area.
20
+
21
+ The rule:
22
+
23
+ - **plugin** = ownership boundary
24
+ - **capability** = shared core contract
25
+
26
+ Do not start by wiring a vendor directly into a channel or a tool. Start by defining the capability.
27
+
28
+ ## When to create a capability
29
+
30
+ Create a new capability when **all** of these are true:
31
+
32
+ 1. More than one vendor could plausibly implement it.
33
+ 2. Channels, tools, or feature plugins should consume it without caring about the vendor.
34
+ 3. Core needs to own fallback, policy, config, or delivery behavior.
35
+
36
+ If the work is vendor-only and no shared contract exists yet, stop and define the contract first.
37
+
38
+ ## The standard sequence
39
+
40
+ 1. Define the typed core contract.
41
+ 2. Add plugin registration for that contract.
42
+ 3. Add a shared runtime helper.
43
+ 4. Wire one real vendor plugin as proof.
44
+ 5. Move feature/channel consumers onto the runtime helper.
45
+ 6. Add contract tests.
46
+ 7. Document the operator-facing config and ownership model.
47
+
48
+ ## What goes where
49
+
50
+ **Core:**
51
+
52
+ - Request/response types.
53
+ - Provider registry + resolution.
54
+ - Fallback behavior.
55
+ - Config schema with propagated `title` / `description` docs metadata on nested object, wildcard, array-item, and composition nodes.
56
+ - Runtime helper surface.
57
+
58
+ **Vendor plugin:**
59
+
60
+ - Vendor API calls.
61
+ - Vendor auth handling.
62
+ - Vendor-specific request normalization.
63
+ - Registration of the capability implementation.
64
+
65
+ **Feature/channel plugin:**
66
+
67
+ - Calls `api.runtime.*` or the matching `plugin-sdk/*-runtime` helper.
68
+ - Never calls a vendor implementation directly.
69
+
70
+ ## Provider and harness seams
71
+
72
+ Use **provider hooks** when the behavior belongs to the model provider contract rather than the generic agent loop. Examples include provider-specific request params after transport selection, auth-profile preference, prompt overlays, and follow-up fallback routing after model/profile failover.
73
+
74
+ Use **agent harness hooks** when the behavior belongs to the runtime that is executing a turn. Harnesses can classify successful-but-unusable attempt results such as empty, reasoning-only, or planning-only responses so the outer model fallback policy can make the retry decision.
75
+
76
+ Keep both seams narrow:
77
+
78
+ - Core owns the retry/fallback policy.
79
+ - Provider plugins own provider-specific request/auth/routing hints.
80
+ - Harness plugins own runtime-specific attempt classification.
81
+ - Third-party plugins return hints, not direct mutations of core state.
82
+
83
+ ## File checklist
84
+
85
+ For a new capability, expect to touch these areas:
86
+
87
+ - `src/<capability>/types.ts`
88
+ - `src/<capability>/...registry/runtime.ts`
89
+ - `src/plugins/types.ts`
90
+ - `src/plugins/registry.ts`
91
+ - `src/plugins/captured-registration.ts`
92
+ - `src/plugins/contracts/registry.ts`
93
+ - `src/plugins/runtime/types-core.ts`
94
+ - `src/plugins/runtime/index.ts`
95
+ - `src/plugin-sdk/<capability>.ts`
96
+ - `src/plugin-sdk/<capability>-runtime.ts`
97
+ - One or more bundled plugin packages.
98
+ - Config, docs, tests.
99
+
100
+ ## Worked example: image generation
101
+
102
+ Image generation follows the standard shape:
103
+
104
+ 1. Core defines `ImageGenerationProvider`.
105
+ 2. Core exposes `registerImageGenerationProvider(...)`.
106
+ 3. Core exposes `runtime.imageGeneration.generate(...)`.
107
+ 4. The `openai`, `google`, `fal`, and `minimax` plugins register vendor-backed implementations.
108
+ 5. Future vendors register the same contract without changing channels/tools.
109
+
110
+ The config key is intentionally separate from vision-analysis routing:
111
+
112
+ - `agents.defaults.imageModel` analyzes images.
113
+ - `agents.defaults.imageGenerationModel` generates images.
114
+
115
+ Keep those separate so fallback and policy remain explicit.
116
+
117
+ ## Embedding providers
118
+
119
+ Use `embeddingProviders` for reusable vector embedding providers. This contract
120
+ is intentionally broader than memory: tools, search, retrieval, importers, or
121
+ future feature plugins can consume embeddings without depending on the memory
122
+ engine.
123
+
124
+ Memory search can consume generic `embeddingProviders`. The older
125
+ `memoryEmbeddingProviders` contract is deprecated compatibility while existing
126
+ memory-specific providers migrate; new reusable embedding providers should use
127
+ `embeddingProviders`.
128
+
129
+ ## Review checklist
130
+
131
+ Before shipping a new capability, verify:
132
+
133
+ - No channel/tool imports vendor code directly.
134
+ - The runtime helper is the shared path.
135
+ - At least one contract test asserts bundled ownership.
136
+ - Config docs name the new model/config key.
137
+ - Plugin docs explain the ownership boundary.
138
+
139
+ If a PR skips the capability layer and hardcodes vendor behavior into a channel/tool, send it back and define the contract first.
140
+
141
+ ## Related
142
+
143
+ - [Plugin internals](/plugins/architecture) — capability model, ownership, load pipeline, runtime helpers.
144
+ - [Building plugins](/plugins/building-plugins) — first-plugin tutorial.
145
+ - [SDK overview](/plugins/sdk-overview) — import map and registration API reference.
146
+ - [Creating skills](/tools/creating-skills) — companion contributor surface.