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,525 @@
1
+ ---
2
+ summary: "Plugin hooks: intercept agent, tool, message, session, and Gateway lifecycle events"
3
+ title: "Plugin hooks"
4
+ read_when:
5
+ - You are building a plugin that needs before_tool_call, before_agent_reply, message hooks, or lifecycle hooks
6
+ - You need to block, rewrite, or require approval for tool calls from a plugin
7
+ - You are deciding between internal hooks and plugin hooks
8
+ ---
9
+
10
+ Plugin hooks are in-process extension points for OpenClaw plugins. Use them
11
+ when a plugin needs to inspect or change agent runs, tool calls, message flow,
12
+ session lifecycle, subagent routing, installs, or Gateway startup.
13
+
14
+ Use [internal hooks](/automation/hooks) instead when you want a small
15
+ operator-installed `HOOK.md` script for command and Gateway events such as
16
+ `/new`, `/reset`, `/stop`, `agent:bootstrap`, or `gateway:startup`.
17
+
18
+ ## Quick start
19
+
20
+ Register typed plugin hooks with `api.on(...)` from your plugin entry:
21
+
22
+ ```typescript
23
+ import { definePluginEntry } from "openclaw/plugin-sdk/plugin-entry";
24
+
25
+ export default definePluginEntry({
26
+ id: "tool-preflight",
27
+ name: "Tool Preflight",
28
+ register(api) {
29
+ api.on(
30
+ "before_tool_call",
31
+ async (event) => {
32
+ if (event.toolName !== "web_search") {
33
+ return;
34
+ }
35
+
36
+ return {
37
+ requireApproval: {
38
+ title: "Run web search",
39
+ description: `Allow search query: ${String(event.params.query ?? "")}`,
40
+ severity: "info",
41
+ timeoutMs: 60_000,
42
+ timeoutBehavior: "deny",
43
+ },
44
+ };
45
+ },
46
+ { priority: 50 },
47
+ );
48
+ },
49
+ });
50
+ ```
51
+
52
+ Hook handlers run sequentially in descending `priority`. Same-priority hooks
53
+ keep registration order.
54
+
55
+ `api.on(name, handler, opts?)` accepts:
56
+
57
+ - `priority` - handler ordering (higher runs first).
58
+ - `timeoutMs` - optional per-hook budget. When set, the hook runner aborts that
59
+ handler after the budget elapses and continues with the next one, instead of
60
+ letting slow setup or recall work consume the caller's configured model
61
+ timeout. Omit it to use the default observation/decision timeout that the
62
+ hook runner applies generically.
63
+
64
+ Operators can also set hook budgets without patching plugin code:
65
+
66
+ ```json
67
+ {
68
+ "plugins": {
69
+ "entries": {
70
+ "my-plugin": {
71
+ "hooks": {
72
+ "timeoutMs": 30000,
73
+ "timeouts": {
74
+ "before_prompt_build": 90000,
75
+ "agent_end": 60000
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ `hooks.timeouts.<hookName>` overrides `hooks.timeoutMs`, which overrides the
85
+ plugin-authored `api.on(..., { timeoutMs })` value. Each configured value must
86
+ be a positive integer no greater than 600000 milliseconds. Prefer per-hook
87
+ overrides for known slow hooks so one plugin does not get a longer budget
88
+ everywhere.
89
+
90
+ Each hook receives `event.context.pluginConfig`, the resolved config for the
91
+ plugin that registered that handler. Use it for hook decisions that need
92
+ current plugin options; OpenClaw injects it per handler without mutating the
93
+ shared event object seen by other plugins.
94
+
95
+ ## Hook catalog
96
+
97
+ Hooks are grouped by the surface they extend. Names in **bold** accept a
98
+ decision result (block, cancel, override, or require approval); all others are
99
+ observation-only.
100
+
101
+ **Agent turn**
102
+
103
+ - `before_model_resolve` - override provider or model before session messages load
104
+ - `agent_turn_prepare` - consume queued plugin turn injections and add same-turn context before prompt hooks
105
+ - `before_prompt_build` - add dynamic context or system-prompt text before the model call
106
+ - `before_agent_start` - compatibility-only combined phase; prefer the two hooks above
107
+ - **`before_agent_run`** - inspect the final prompt and session messages before model submission and optionally block the run
108
+ - **`before_agent_reply`** - short-circuit the model turn with a synthetic reply or silence
109
+ - **`before_agent_finalize`** - inspect the natural final answer and request one more model pass
110
+ - `agent_end` - observe final messages, success state, and run duration
111
+ - `heartbeat_prompt_contribution` - add heartbeat-only context for background monitor and lifecycle plugins
112
+
113
+ **Conversation observation**
114
+
115
+ - `model_call_started` / `model_call_ended` - observe sanitized provider/model call metadata, timing, outcome, and bounded request-id hashes without prompt or response content
116
+ - `llm_input` - observe provider input (system prompt, prompt, history)
117
+ - `llm_output` - observe provider output, usage, and the resolved `contextTokenBudget` when available
118
+
119
+ **Tools**
120
+
121
+ - **`before_tool_call`** - rewrite tool params, block execution, or require approval
122
+ - `after_tool_call` - observe tool results, errors, and duration
123
+ - `resolve_exec_env` - contribute plugin-owned environment variables to `exec`
124
+ - **`tool_result_persist`** - rewrite the assistant message produced from a tool result
125
+ - **`before_message_write`** - inspect or block an in-progress message write (rare)
126
+
127
+ **Messages and delivery**
128
+
129
+ - **`inbound_claim`** - claim an inbound message before agent routing (synthetic replies)
130
+ - `message_received` — observe inbound content, sender, thread, and metadata
131
+ - **`message_sending`** — rewrite outbound content or cancel delivery
132
+ - **`reply_payload_sending`** — mutate or cancel normalized reply payloads before delivery
133
+ - `message_sent` — observe outbound delivery success or failure
134
+ - **`before_dispatch`** - inspect or rewrite an outbound dispatch before channel handoff
135
+ - **`reply_dispatch`** - participate in the final reply-dispatch pipeline
136
+
137
+ **Sessions and compaction**
138
+
139
+ - `session_start` / `session_end` - track session lifecycle boundaries. The event's `reason` is one of `new`, `reset`, `idle`, `daily`, `compaction`, `deleted`, `shutdown`, `restart`, or `unknown`. The `shutdown` and `restart` values fire from the gateway shutdown finalizer when the process is stopped or restarted while sessions are still active, so downstream plugins (such as memory or transcript stores) can finalize ghost rows that would otherwise be left in an open state across restarts. The finalizer is bounded so a slow plugin cannot block SIGTERM/SIGINT.
140
+ - `before_compaction` / `after_compaction` - observe or annotate compaction cycles
141
+ - `before_reset` - observe session-reset events (`/reset`, programmatic resets)
142
+
143
+ **Subagents**
144
+
145
+ - `subagent_spawned` / `subagent_ended` - observe subagent launch and completion.
146
+ - `subagent_delivery_target` - compatibility hook for completion delivery when no core session binding can project a route.
147
+ - `subagent_spawning` - deprecated compatibility hook. Core now prepares `thread: true` subagent bindings through channel session-binding adapters before `subagent_spawned` fires.
148
+ - `subagent_spawned` includes `resolvedModel` and `resolvedProvider` when OpenClaw has resolved the child session's native model before launch.
149
+
150
+ **Lifecycle**
151
+
152
+ - `gateway_start` / `gateway_stop` - start or stop plugin-owned services with the Gateway
153
+ - `deactivate` - deprecated compatibility alias for `gateway_stop`; use `gateway_stop` in new plugins
154
+ - `cron_changed` - observe gateway-owned cron lifecycle changes (added, updated, removed, started, finished, scheduled)
155
+ - **`before_install`** - inspect skill or plugin install context and optionally block
156
+
157
+ ## Debug runtime hooks
158
+
159
+ Use `before_model_resolve` when a plugin needs to switch the provider or model
160
+ for an agent turn. It runs before model resolution; `llm_output` only runs after
161
+ a model attempt produces assistant output.
162
+
163
+ For proof of the effective session model, inspect runtime registrations, then
164
+ use `openclaw sessions` or the Gateway session/status surfaces. When debugging
165
+ provider payloads, start the Gateway with `--raw-stream` and
166
+ `--raw-stream-path <path>`; those flags write raw model stream events to a jsonl
167
+ file.
168
+
169
+ ## Tool call policy
170
+
171
+ `before_tool_call` receives:
172
+
173
+ - `event.toolName`
174
+ - `event.params`
175
+ - optional `event.toolKind` and `event.toolInputKind`, host-authoritative
176
+ discriminators for tools that intentionally share names; for example, outer
177
+ code-mode `exec` calls use `toolKind: "code_mode_exec"` and
178
+ include `toolInputKind: "javascript" | "typescript"` when the input language
179
+ is known
180
+ - optional `event.derivedPaths`, containing best-effort host-derived target path
181
+ hints for well-known tool envelopes such as `apply_patch`; when present,
182
+ these paths may be incomplete or may over-approximate what the tool will
183
+ actually touch (for example, with malformed or partial inputs)
184
+ - optional `event.runId`
185
+ - optional `event.toolCallId`
186
+ - context fields such as `ctx.agentId`, `ctx.sessionKey`, `ctx.sessionId`,
187
+ `ctx.runId`, `ctx.jobId` (set on cron-driven runs), `ctx.toolKind`,
188
+ `ctx.toolInputKind`, and diagnostic `ctx.trace`
189
+
190
+ It can return:
191
+
192
+ ```typescript
193
+ type BeforeToolCallResult = {
194
+ params?: Record<string, unknown>;
195
+ block?: boolean;
196
+ blockReason?: string;
197
+ requireApproval?: {
198
+ title: string;
199
+ description: string;
200
+ severity?: "info" | "warning" | "critical";
201
+ timeoutMs?: number;
202
+ timeoutBehavior?: "allow" | "deny";
203
+ allowedDecisions?: Array<"allow-once" | "allow-always" | "deny">;
204
+ pluginId?: string;
205
+ onResolution?: (
206
+ decision: "allow-once" | "allow-always" | "deny" | "timeout" | "cancelled",
207
+ ) => Promise<void> | void;
208
+ };
209
+ };
210
+ ```
211
+
212
+ Hook guard behavior for typed lifecycle hooks:
213
+
214
+ - `block: true` is terminal and skips lower-priority handlers.
215
+ - `block: false` is treated as no decision.
216
+ - `params` rewrites the tool parameters for execution.
217
+ - `requireApproval` pauses the agent run and asks the user through plugin
218
+ approvals. The `/approve` command can approve both exec and plugin approvals.
219
+ In Codex app-server report-mode native `PreToolUse` relays, this is deferred
220
+ to the matching app-server approval request; see [Codex harness runtime](/plugins/codex-harness-runtime#hook-boundaries).
221
+ - A lower-priority `block: true` can still block after a higher-priority hook
222
+ requested approval.
223
+ - `onResolution` receives the resolved approval decision - `allow-once`,
224
+ `allow-always`, `deny`, `timeout`, or `cancelled`.
225
+
226
+ See [Plugin permission requests](/plugins/plugin-permission-requests) for
227
+ approval routing, decision behavior, and when to use `requireApproval` instead
228
+ of optional tools or exec approvals.
229
+
230
+ Plugins that need host-level policy can register trusted tool policies with
231
+ `api.registerTrustedToolPolicy(...)`. These run before ordinary
232
+ `before_tool_call` hooks and before normal hook decisions. Bundled trusted
233
+ policies run first; installed-plugin trusted policies run next in plugin-load
234
+ order; ordinary `before_tool_call` hooks run after them. Bundled plugins keep
235
+ the existing trusted-policy path. Installed plugins must be explicitly enabled
236
+ and declare every policy id in `contracts.trustedToolPolicies`; undeclared ids
237
+ are rejected before registration. Policy ids are scoped to the registering
238
+ plugin, so different plugins may reuse the same local id. Use this tier only
239
+ for host-trusted gates such as workspace policy, budget enforcement, or
240
+ reserved workflow safety.
241
+
242
+ ### Exec environment hook
243
+
244
+ `resolve_exec_env` lets plugins contribute environment variables to `exec`
245
+ tool invocations after the base exec environment is built and before the
246
+ command runs. It receives:
247
+
248
+ - `event.sessionKey`
249
+ - `event.toolName`, currently always `"exec"`
250
+ - `event.host`, one of `"gateway"`, `"sandbox"`, or `"node"`
251
+ - context fields such as `ctx.agentId`, `ctx.sessionKey`,
252
+ `ctx.messageProvider`, and `ctx.channelId`
253
+
254
+ Return a `Record<string, string>` to merge into the exec environment. Handlers
255
+ run in priority order, and later hook results override earlier hook results for
256
+ the same key.
257
+
258
+ Hook output is filtered through the host exec environment key policy before it
259
+ is merged. Invalid keys, `PATH`, and dangerous host override keys such as
260
+ `LD_*`, `DYLD_*`, `NODE_OPTIONS`, proxy variables, and TLS override variables
261
+ are dropped. The filtered plugin env is included in gateway approval/audit
262
+ metadata and forwarded to node-host execution requests.
263
+
264
+ ### Tool result persistence
265
+
266
+ Tool results can include structured `details` for UI rendering, diagnostics,
267
+ media routing, or plugin-owned metadata. Treat `details` as runtime metadata,
268
+ not prompt content:
269
+
270
+ - OpenClaw strips `toolResult.details` before provider replay and compaction
271
+ input so metadata does not become model context.
272
+ - Persisted session entries keep only bounded `details`. Oversized details are
273
+ replaced with a compact summary and `persistedDetailsTruncated: true`.
274
+ - `tool_result_persist` and `before_message_write` run before the final
275
+ persistence cap. Hooks should still keep returned `details` small and avoid
276
+ placing prompt-relevant text only in `details`; put model-visible tool output
277
+ in `content`.
278
+
279
+ ## Prompt and model hooks
280
+
281
+ Use the phase-specific hooks for new plugins:
282
+
283
+ - `before_model_resolve`: receives only the current prompt and attachment
284
+ metadata. Return `providerOverride` or `modelOverride`.
285
+ - `agent_turn_prepare`: receives the current prompt, prepared session messages,
286
+ and any exactly-once queued injections drained for this session. Return
287
+ `prependContext` or `appendContext`.
288
+ - `before_prompt_build`: receives the current prompt and session messages.
289
+ Return `prependContext`, `appendContext`, `systemPrompt`,
290
+ `prependSystemContext`, or `appendSystemContext`.
291
+ - `heartbeat_prompt_contribution`: runs only for heartbeat turns and returns
292
+ `prependContext` or `appendContext`. It is intended for background monitors
293
+ that need to summarize current state without changing user-initiated turns.
294
+
295
+ `before_agent_start` remains for compatibility. Prefer the explicit hooks above
296
+ so your plugin does not depend on a legacy combined phase.
297
+
298
+ `before_agent_run` runs after prompt construction and before any model input,
299
+ including prompt-local image loading and `llm_input` observation. It receives
300
+ the current user input as `prompt`, plus loaded session history in `messages`
301
+ and the active system prompt. Return `{ outcome: "block", reason, message? }`
302
+ to stop the run before the model can read the prompt. `reason` is internal;
303
+ `message` is the user-facing replacement. The only supported outcomes are
304
+ `pass` and `block`; unsupported decision shapes fail closed.
305
+
306
+ When a run is blocked, OpenClaw stores only the replacement text in
307
+ `message.content` plus non-sensitive block metadata such as the blocking plugin
308
+ id and timestamp. The original user text is not retained in transcript or future
309
+ context. Internal block reasons are treated as sensitive and excluded from
310
+ transcript, history, broadcast, log, and diagnostics payloads. Observability
311
+ should use sanitized fields such as blocker id, outcome, timestamp, or a safe
312
+ category.
313
+
314
+ `before_agent_start` and `agent_end` include `event.runId` when OpenClaw can
315
+ identify the active run. The same value is also available on `ctx.runId`.
316
+ Cron-driven runs also expose `ctx.jobId` (the originating cron job id) so
317
+ plugin hooks can scope metrics, side effects, or state to a specific scheduled
318
+ job.
319
+
320
+ For channel-originated runs, `ctx.messageProvider` is the provider surface such
321
+ as `discord` or `telegram`, while `ctx.channelId` is the conversation target
322
+ identifier when OpenClaw can derive one from the session key or delivery
323
+ metadata.
324
+
325
+ `agent_end` is an observation hook. Gateway and persistent harness paths run it
326
+ fire-and-forget after the turn, while short-lived one-shot CLI paths wait for the
327
+ hook promise before process cleanup so trusted plugins can flush terminal
328
+ observability or capture state. The hook runner applies a 30 second timeout so a
329
+ wedged plugin or embedding endpoint cannot leave the hook promise pending
330
+ forever. A timeout is logged and OpenClaw continues; it does not cancel
331
+ plugin-owned network work unless the plugin also uses its own abort signal.
332
+
333
+ Use `model_call_started` and `model_call_ended` for provider-call telemetry
334
+ that should not receive raw prompts, history, responses, headers, request
335
+ bodies, or provider request IDs. These hooks include stable metadata such as
336
+ `runId`, `callId`, `provider`, `model`, optional `api`/`transport`, terminal
337
+ `durationMs`/`outcome`, and `upstreamRequestIdHash` when OpenClaw can derive a
338
+ bounded provider request-id hash. When the runtime has resolved context-window
339
+ metadata, the hook event and context also include `contextTokenBudget`, the
340
+ effective token budget after model/config/agent caps, plus
341
+ `contextWindowSource` and `contextWindowReferenceTokens` when a lower cap was
342
+ applied.
343
+
344
+ `before_agent_finalize` runs only when a harness is about to accept a natural
345
+ final assistant answer. It is not the `/stop` cancellation path and does not
346
+ run when the user aborts a turn. Return `{ action: "revise", reason }` to ask
347
+ the harness for one more model pass before finalization, `{ action:
348
+ "finalize", reason? }` to force finalization, or omit a result to continue.
349
+ Codex native `Stop` hooks are relayed into this hook as OpenClaw
350
+ `before_agent_finalize` decisions.
351
+
352
+ When returning `action: "revise"`, plugins can include `retry` metadata to make
353
+ the extra model pass bounded and replay-safe:
354
+
355
+ ```typescript
356
+ type BeforeAgentFinalizeRetry = {
357
+ instruction: string;
358
+ idempotencyKey?: string;
359
+ maxAttempts?: number;
360
+ };
361
+ ```
362
+
363
+ `instruction` is appended to the revision reason sent to the harness.
364
+ `idempotencyKey` lets the host count retries for the same plugin request across
365
+ equivalent finalize decisions, and `maxAttempts` caps how many extra passes the
366
+ host will allow before continuing with the natural final answer.
367
+
368
+ Non-bundled plugins that need raw conversation hooks (`before_model_resolve`,
369
+ `before_agent_reply`, `llm_input`, `llm_output`, `before_agent_finalize`,
370
+ `agent_end`, or `before_agent_run`) must set:
371
+
372
+ ```json
373
+ {
374
+ "plugins": {
375
+ "entries": {
376
+ "my-plugin": {
377
+ "hooks": {
378
+ "allowConversationAccess": true
379
+ }
380
+ }
381
+ }
382
+ }
383
+ }
384
+ ```
385
+
386
+ Prompt-mutating hooks and durable next-turn injections can be disabled per plugin
387
+ with `plugins.entries.<id>.hooks.allowPromptInjection=false`.
388
+
389
+ ### Session extensions and next-turn injections
390
+
391
+ Workflow plugins can persist small JSON-compatible session state with
392
+ `api.registerSessionExtension(...)` and update it through the Gateway
393
+ `sessions.pluginPatch` method. Session rows project registered extension state
394
+ through `pluginExtensions`, letting Control UI and other clients render
395
+ plugin-owned status without learning plugin internals.
396
+
397
+ Use `api.enqueueNextTurnInjection(...)` when a plugin needs durable context to
398
+ reach the next model turn exactly once. OpenClaw drains queued injections before
399
+ prompt hooks, drops expired injections, and deduplicates by `idempotencyKey`
400
+ per plugin. This is the right seam for approval resumes, policy summaries,
401
+ background monitor deltas, and command continuations that should be visible to
402
+ the model on the next turn but should not become permanent system prompt text.
403
+
404
+ Cleanup semantics are part of the contract. Session extension cleanup and
405
+ runtime lifecycle cleanup callbacks receive `reset`, `delete`, `disable`, or
406
+ `restart`. The host removes the owning plugin's persistent session extension
407
+ state and pending next-turn injections for reset/delete/disable; restart keeps
408
+ durable session state while cleanup callbacks let plugins release scheduler
409
+ jobs, run context, and other out-of-band resources for the old runtime
410
+ generation.
411
+
412
+ ## Message hooks
413
+
414
+ Use message hooks for channel-level routing and delivery policy:
415
+
416
+ - `message_received`: observe inbound content, sender, `threadId`, `messageId`,
417
+ `senderId`, optional run/session correlation, and metadata.
418
+ - `message_sending`: rewrite `content` or return `{ cancel: true }`.
419
+ - `reply_payload_sending`: rewrite normalized `ReplyPayload` objects (including
420
+ `presentation`, `delivery`, media refs, and text) or return `{ cancel: true }`.
421
+ - `message_sent`: observe final success or failure.
422
+
423
+ For audio-only TTS replies, `content` may contain the hidden spoken transcript
424
+ even when the channel payload has no visible text/caption. Rewriting that
425
+ `content` updates the hook-visible transcript only; it is not rendered as a
426
+ media caption.
427
+
428
+ Message hook contexts expose stable correlation fields when available:
429
+ `ctx.sessionKey`, `ctx.runId`, `ctx.messageId`, `ctx.senderId`, `ctx.trace`,
430
+ `ctx.traceId`, `ctx.spanId`, `ctx.parentSpanId`, and `ctx.callDepth`. Inbound
431
+ and `before_dispatch` contexts also expose reply metadata when the channel has
432
+ visibility-filtered quoted message data: `replyToId`, `replyToIdFull`,
433
+ `replyToBody`, `replyToSender`, and `replyToIsQuote`. Prefer these first-class
434
+ fields before reading legacy metadata.
435
+
436
+ Prefer typed `threadId` and `replyToId` fields before using channel-specific
437
+ metadata.
438
+
439
+ Decision rules:
440
+
441
+ - `message_sending` with `cancel: true` is terminal.
442
+ - `message_sending` with `cancel: false` is treated as no decision.
443
+ - Rewritten `content` continues to lower-priority hooks unless a later hook
444
+ cancels delivery.
445
+ - `reply_payload_sending` runs after payload normalization and before channel
446
+ delivery, including replies routed back to the originating channel. Handlers
447
+ run sequentially and each handler sees the latest payload produced by
448
+ higher-priority handlers.
449
+ - `reply_payload_sending` payloads do not expose runtime trust markers such as
450
+ `trustedLocalMedia`; plugins can edit payload shape but cannot grant local
451
+ media trust.
452
+ - `message_sending` can return `cancelReason` and bounded `metadata` with a
453
+ cancellation. New message lifecycle APIs expose this as a suppressed delivery
454
+ outcome with reason `cancelled_by_message_sending_hook`; legacy direct
455
+ delivery keeps returning an empty result array for compatibility.
456
+ - `message_sent` is observation-only. Handler failures are logged and do not
457
+ change the delivery result.
458
+
459
+ ## Install hooks
460
+
461
+ `before_install` runs after the operator-owned `security.installPolicy` check
462
+ when one is configured. The `builtinScan` field remains in the event payload for
463
+ compatibility, but OpenClaw no longer runs built-in install-time dangerous-code
464
+ blocking, so it is an empty `ok` result. Return additional findings or
465
+ `{ block: true, blockReason }` to stop the install.
466
+
467
+ `block: true` is terminal. `block: false` is treated as no decision.
468
+ Handler failures block the install fail-closed.
469
+
470
+ ## Gateway lifecycle
471
+
472
+ Use `gateway_start` for plugin services that need Gateway-owned state. The
473
+ context exposes `ctx.config`, `ctx.workspaceDir`, and `ctx.getCron?.()` for
474
+ cron inspection and updates. Use `gateway_stop` to clean up long-running
475
+ resources.
476
+
477
+ Do not rely on the internal `gateway:startup` hook for plugin-owned runtime
478
+ services.
479
+
480
+ `cron_changed` fires for gateway-owned cron lifecycle events with a typed
481
+ event payload covering `added`, `updated`, `removed`, `started`, `finished`,
482
+ and `scheduled` reasons. The event carries a `PluginHookGatewayCronJob`
483
+ snapshot (including `state.nextRunAtMs`, `state.lastRunStatus`, and
484
+ `state.lastError` when present) plus a `PluginHookGatewayCronDeliveryStatus`
485
+ of `not-requested` | `delivered` | `not-delivered` | `unknown`. Removed
486
+ events still carry the deleted job snapshot so external schedulers can
487
+ reconcile state. Use `ctx.getCron?.()` and `ctx.config` from the runtime
488
+ context when syncing external wake schedulers, and keep OpenClaw as the
489
+ source of truth for due checks and execution.
490
+
491
+ ## Upcoming deprecations
492
+
493
+ A few hook-adjacent surfaces are deprecated but still supported. Migrate
494
+ before the next major release:
495
+
496
+ - **Plaintext channel envelopes** in `inbound_claim` and `message_received`
497
+ handlers. Read `BodyForAgent` and the structured user-context blocks
498
+ instead of parsing flat envelope text. See
499
+ [Plaintext channel envelopes → BodyForAgent](/plugins/sdk-migration#active-deprecations).
500
+ - **`before_agent_start`** remains for compatibility. New plugins should use
501
+ `before_model_resolve` and `before_prompt_build` instead of the combined
502
+ phase.
503
+ - **`subagent_spawning`** remains for compatibility with older plugins, but
504
+ new plugins should not return thread routing from it. Core prepares
505
+ `thread: true` subagent bindings through channel session-binding adapters
506
+ before `subagent_spawned` fires.
507
+ - **`deactivate`** remains as a deprecated cleanup compatibility alias until
508
+ after 2026-08-16. New plugins should use `gateway_stop`.
509
+ - **`onResolution` in `before_tool_call`** now uses the typed
510
+ `PluginApprovalResolution` union (`allow-once` / `allow-always` / `deny` /
511
+ `timeout` / `cancelled`) instead of a free-form `string`.
512
+
513
+ For the full list - memory capability registration, provider thinking
514
+ profile, external auth providers, provider discovery types, task runtime
515
+ accessors, and the `command-auth` → `command-status` rename - see
516
+ [Plugin SDK migration → Active deprecations](/plugins/sdk-migration#active-deprecations).
517
+
518
+ ## Related
519
+
520
+ - [Plugin SDK migration](/plugins/sdk-migration) - active deprecations and removal timeline
521
+ - [Building plugins](/plugins/building-plugins)
522
+ - [Plugin SDK overview](/plugins/sdk-overview)
523
+ - [Plugin entry points](/plugins/sdk-entrypoints)
524
+ - [Internal hooks](/automation/hooks)
525
+ - [Plugin architecture internals](/plugins/architecture-internals)
@@ -0,0 +1,80 @@
1
+ ---
2
+ summary: "Test packaged plugin overrides with setup-time install flows"
3
+ read_when:
4
+ - Testing onboarding or setup flows against a locally packed plugin
5
+ - Verifying a plugin package before publishing it
6
+ - Replacing an automatic plugin install with a test artifact
7
+ title: "Plugin install overrides"
8
+ sidebarTitle: "Install overrides"
9
+ ---
10
+
11
+ Plugin install overrides let maintainers test setup-time plugin installs against
12
+ a specific npm package or local npm-pack tarball. They are for E2E and package
13
+ validation only. Normal users should install plugins with
14
+ [`openclaw plugins install`](/cli/plugins).
15
+
16
+ <Warning>
17
+ Overrides execute plugin code from the source you provide. Use them only in an
18
+ isolated state directory or disposable test machine.
19
+ </Warning>
20
+
21
+ ## Environment
22
+
23
+ Overrides are disabled unless both variables are set:
24
+
25
+ ```bash
26
+ export OPENCLAW_ALLOW_PLUGIN_INSTALL_OVERRIDES=1
27
+ export OPENCLAW_PLUGIN_INSTALL_OVERRIDES='{
28
+ "codex": "npm-pack:/tmp/openclaw-codex-2026.5.8.tgz",
29
+ "openclaw-web-search": "npm:@openclaw/web-search@2026.5.8"
30
+ }'
31
+ ```
32
+
33
+ The override map is JSON keyed by plugin id. Values support:
34
+
35
+ - `npm:<registry-spec>` for registry packages and exact versions or tags
36
+ - `npm-pack:<path.tgz>` for local tarballs produced by `npm pack`
37
+
38
+ Relative `npm-pack:` paths resolve from the current working directory.
39
+
40
+ ## Behavior
41
+
42
+ When a setup-time flow asks to install a plugin whose id appears in the map,
43
+ OpenClaw uses the override source instead of the catalog, bundled, or default
44
+ npm source. This applies to onboarding and other flows that use the shared
45
+ setup-time plugin installer.
46
+
47
+ Overrides still enforce the expected plugin id. A tarball mapped to `codex`
48
+ must install a plugin whose manifest id is `codex`.
49
+
50
+ Overrides do not inherit official trusted-source status. Even when the catalog
51
+ entry normally represents an OpenClaw-owned package, an override is treated as
52
+ operator-supplied test input.
53
+
54
+ Workspace `.env` files cannot enable install overrides. Set these variables in
55
+ the trusted shell, CI job, or remote test command that launches OpenClaw.
56
+
57
+ ## Package E2E
58
+
59
+ Use an isolated state directory so package installs and install records do not
60
+ touch your normal OpenClaw state:
61
+
62
+ ```bash
63
+ npm pack extensions/codex --pack-destination /tmp
64
+
65
+ OPENCLAW_STATE_DIR="$(mktemp -d)" \
66
+ OPENCLAW_ALLOW_PLUGIN_INSTALL_OVERRIDES=1 \
67
+ OPENCLAW_PLUGIN_INSTALL_OVERRIDES='{"codex":"npm-pack:/tmp/openclaw-codex-2026.5.8.tgz"}' \
68
+ pnpm openclaw onboard --mode local
69
+ ```
70
+
71
+ Verify the installed package under the state directory:
72
+
73
+ ```bash
74
+ find "$OPENCLAW_STATE_DIR/npm/projects" -path '*/node_modules/@openclaw/codex/package.json' -print
75
+ grep -R '"@openclaw/codex"' "$OPENCLAW_STATE_DIR/npm/projects"/*/package-lock.json
76
+ ```
77
+
78
+ For live provider E2E, source the real API key from a trusted shell or CI secret
79
+ before launching the test command. Do not print keys; report only the source and
80
+ whether the key was present.
@@ -0,0 +1,58 @@
1
+ ---
2
+ summary: "Install the official llama.cpp provider for local GGUF memory embeddings"
3
+ read_when:
4
+ - You want memory search embeddings from a local GGUF model
5
+ - You are configuring memorySearch.provider = "local"
6
+ - You need the OpenClaw plugin that owns the node-llama-cpp runtime
7
+ title: "llama.cpp Provider"
8
+ sidebarTitle: "llama.cpp Provider"
9
+ ---
10
+
11
+ `llama-cpp` is the official external provider plugin for local GGUF embeddings.
12
+ It owns the `node-llama-cpp` runtime dependency used by
13
+ `memorySearch.provider: "local"`.
14
+
15
+ Install it before using local memory embeddings:
16
+
17
+ ```bash
18
+ openclaw plugins install @openclaw/llama-cpp-provider
19
+ ```
20
+
21
+ The main `openclaw` npm package does not include `node-llama-cpp`. Keeping the
22
+ native dependency in this plugin prevents normal OpenClaw npm updates from
23
+ deleting a manually installed runtime inside the OpenClaw package directory.
24
+
25
+ ## Configuration
26
+
27
+ Set the memory search provider to `local`:
28
+
29
+ ```json5
30
+ {
31
+ agents: {
32
+ defaults: {
33
+ memorySearch: {
34
+ provider: "local",
35
+ local: {
36
+ modelPath: "hf:ggml-org/embeddinggemma-300m-qat-q8_0-GGUF/embeddinggemma-300m-qat-Q8_0.gguf",
37
+ },
38
+ },
39
+ },
40
+ },
41
+ }
42
+ ```
43
+
44
+ The default model is `embeddinggemma-300m-qat-Q8_0.gguf`. You can also point
45
+ `local.modelPath` at a local `.gguf` file.
46
+
47
+ ## Native Runtime
48
+
49
+ Use Node 24 for the smoothest native install path. Source checkouts using pnpm
50
+ may need to approve and rebuild the native dependency:
51
+
52
+ ```bash
53
+ pnpm approve-builds
54
+ pnpm rebuild node-llama-cpp
55
+ ```
56
+
57
+ For lower-friction local embeddings, use a local service provider such as
58
+ Ollama or LM Studio instead.