nodmix 2026.5.25

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 (827) hide show
  1. package/CHANGELOG.md +11573 -0
  2. package/LICENSE +21 -0
  3. package/README.md +486 -0
  4. package/docs/.i18n/README.md +81 -0
  5. package/docs/.i18n/ar-navigation.json +18 -0
  6. package/docs/.i18n/de-navigation.json +18 -0
  7. package/docs/.i18n/es-navigation.json +18 -0
  8. package/docs/.i18n/fr-navigation.json +18 -0
  9. package/docs/.i18n/glossary.ar.json +78 -0
  10. package/docs/.i18n/glossary.de.json +78 -0
  11. package/docs/.i18n/glossary.es.json +78 -0
  12. package/docs/.i18n/glossary.fa.json +78 -0
  13. package/docs/.i18n/glossary.fr.json +78 -0
  14. package/docs/.i18n/glossary.id.json +78 -0
  15. package/docs/.i18n/glossary.it.json +78 -0
  16. package/docs/.i18n/glossary.ja-JP.json +98 -0
  17. package/docs/.i18n/glossary.ko.json +78 -0
  18. package/docs/.i18n/glossary.nl.json +78 -0
  19. package/docs/.i18n/glossary.pl.json +78 -0
  20. package/docs/.i18n/glossary.pt-BR.json +78 -0
  21. package/docs/.i18n/glossary.th.json +78 -0
  22. package/docs/.i18n/glossary.tr.json +78 -0
  23. package/docs/.i18n/glossary.uk.json +78 -0
  24. package/docs/.i18n/glossary.vi.json +78 -0
  25. package/docs/.i18n/glossary.zh-CN.json +1002 -0
  26. package/docs/.i18n/glossary.zh-TW.json +78 -0
  27. package/docs/.i18n/id-navigation.json +18 -0
  28. package/docs/.i18n/it-navigation.json +18 -0
  29. package/docs/.i18n/ja-navigation.json +18 -0
  30. package/docs/.i18n/ko-navigation.json +18 -0
  31. package/docs/.i18n/pl-navigation.json +18 -0
  32. package/docs/.i18n/pt-BR-navigation.json +18 -0
  33. package/docs/.i18n/tr-navigation.json +18 -0
  34. package/docs/.i18n/translation-workflow.md +111 -0
  35. package/docs/.i18n/zh-Hans-navigation.json +542 -0
  36. package/docs/AGENTS.md +36 -0
  37. package/docs/announcements/bluebubbles-imessage.md +79 -0
  38. package/docs/assets/install-script.svg +1 -0
  39. package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
  40. package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
  41. package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
  42. package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
  43. package/docs/assets/macos-onboarding/05-permissions.png +0 -0
  44. package/docs/assets/openclaw-logo-text-dark.png +0 -0
  45. package/docs/assets/openclaw-logo-text-dark.svg +418 -0
  46. package/docs/assets/openclaw-logo-text.png +0 -0
  47. package/docs/assets/openclaw-logo-text.svg +418 -0
  48. package/docs/assets/pixel-lobster.svg +60 -0
  49. package/docs/assets/pr/quick-settings-browser-tools.png +0 -0
  50. package/docs/assets/showcase/agents-ui.jpg +0 -0
  51. package/docs/assets/showcase/bambu-cli.png +0 -0
  52. package/docs/assets/showcase/codexmonitor.png +0 -0
  53. package/docs/assets/showcase/gohome-grafana.png +0 -0
  54. package/docs/assets/showcase/ios-testflight.jpg +0 -0
  55. package/docs/assets/showcase/oura-health.png +0 -0
  56. package/docs/assets/showcase/padel-cli.svg +11 -0
  57. package/docs/assets/showcase/padel-screenshot.jpg +0 -0
  58. package/docs/assets/showcase/papla-tts.jpg +0 -0
  59. package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
  60. package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
  61. package/docs/assets/showcase/roborock-status.svg +13 -0
  62. package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
  63. package/docs/assets/showcase/snag.png +0 -0
  64. package/docs/assets/showcase/tesco-shop.jpg +0 -0
  65. package/docs/assets/showcase/wienerlinien.png +0 -0
  66. package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
  67. package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
  68. package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
  69. package/docs/assets/sponsors/blacksmith-light.svg +14 -0
  70. package/docs/assets/sponsors/blacksmith.svg +14 -0
  71. package/docs/assets/sponsors/convex-light.svg +16 -0
  72. package/docs/assets/sponsors/convex.svg +16 -0
  73. package/docs/assets/sponsors/github-light.svg +3 -0
  74. package/docs/assets/sponsors/github.svg +3 -0
  75. package/docs/assets/sponsors/nvidia-dark.svg +9 -0
  76. package/docs/assets/sponsors/nvidia.svg +9 -0
  77. package/docs/assets/sponsors/openai-light.svg +3 -0
  78. package/docs/assets/sponsors/openai.svg +3 -0
  79. package/docs/assets/sponsors/vercel-light.svg +5 -0
  80. package/docs/assets/sponsors/vercel.svg +5 -0
  81. package/docs/auth-credential-semantics.md +124 -0
  82. package/docs/automation/auth-monitoring.md +11 -0
  83. package/docs/automation/clawflow.md +12 -0
  84. package/docs/automation/cron-jobs.md +500 -0
  85. package/docs/automation/cron-vs-heartbeat.md +11 -0
  86. package/docs/automation/gmail-pubsub.md +11 -0
  87. package/docs/automation/hooks.md +365 -0
  88. package/docs/automation/index.md +135 -0
  89. package/docs/automation/poll.md +12 -0
  90. package/docs/automation/standing-orders.md +250 -0
  91. package/docs/automation/taskflow.md +155 -0
  92. package/docs/automation/tasks.md +374 -0
  93. package/docs/automation/troubleshooting.md +12 -0
  94. package/docs/automation/webhook.md +12 -0
  95. package/docs/brave-search.md +11 -0
  96. package/docs/channels/access-groups.md +201 -0
  97. package/docs/channels/ambient-room-events.md +214 -0
  98. package/docs/channels/bot-loop-protection.md +131 -0
  99. package/docs/channels/broadcast-groups.md +472 -0
  100. package/docs/channels/channel-routing.md +162 -0
  101. package/docs/channels/clickclack.md +138 -0
  102. package/docs/channels/discord.md +1762 -0
  103. package/docs/channels/feishu.md +502 -0
  104. package/docs/channels/googlechat.md +284 -0
  105. package/docs/channels/group-messages.md +95 -0
  106. package/docs/channels/groups.md +519 -0
  107. package/docs/channels/imessage-from-bluebubbles.md +259 -0
  108. package/docs/channels/imessage.md +813 -0
  109. package/docs/channels/index.md +64 -0
  110. package/docs/channels/irc.md +253 -0
  111. package/docs/channels/line.md +243 -0
  112. package/docs/channels/location.md +71 -0
  113. package/docs/channels/matrix-migration.md +370 -0
  114. package/docs/channels/matrix-presentation.md +77 -0
  115. package/docs/channels/matrix-push-rules.md +150 -0
  116. package/docs/channels/matrix.md +921 -0
  117. package/docs/channels/mattermost.md +542 -0
  118. package/docs/channels/msteams.md +1042 -0
  119. package/docs/channels/nextcloud-talk.md +176 -0
  120. package/docs/channels/nostr.md +253 -0
  121. package/docs/channels/pairing.md +214 -0
  122. package/docs/channels/qqbot.md +309 -0
  123. package/docs/channels/signal.md +400 -0
  124. package/docs/channels/slack.md +1564 -0
  125. package/docs/channels/synology-chat.md +187 -0
  126. package/docs/channels/telegram.md +1107 -0
  127. package/docs/channels/tlon.md +296 -0
  128. package/docs/channels/troubleshooting.md +161 -0
  129. package/docs/channels/twitch.md +431 -0
  130. package/docs/channels/wechat.md +171 -0
  131. package/docs/channels/whatsapp.md +739 -0
  132. package/docs/channels/yuanbao.md +416 -0
  133. package/docs/channels/zalo.md +253 -0
  134. package/docs/channels/zalouser.md +199 -0
  135. package/docs/ci.md +612 -0
  136. package/docs/clawhub/publishing.md +96 -0
  137. package/docs/cli/acp.md +370 -0
  138. package/docs/cli/agent.md +103 -0
  139. package/docs/cli/agents.md +232 -0
  140. package/docs/cli/approvals.md +190 -0
  141. package/docs/cli/backup.md +97 -0
  142. package/docs/cli/browser.md +307 -0
  143. package/docs/cli/channels.md +154 -0
  144. package/docs/cli/clawbot.md +25 -0
  145. package/docs/cli/commitments.md +90 -0
  146. package/docs/cli/completion.md +39 -0
  147. package/docs/cli/config.md +504 -0
  148. package/docs/cli/configure.md +77 -0
  149. package/docs/cli/crestodian.md +332 -0
  150. package/docs/cli/cron.md +281 -0
  151. package/docs/cli/daemon.md +67 -0
  152. package/docs/cli/dashboard.md +33 -0
  153. package/docs/cli/devices.md +204 -0
  154. package/docs/cli/directory.md +68 -0
  155. package/docs/cli/dns.md +53 -0
  156. package/docs/cli/docs.md +73 -0
  157. package/docs/cli/doctor.md +237 -0
  158. package/docs/cli/flows.md +52 -0
  159. package/docs/cli/gateway.md +567 -0
  160. package/docs/cli/health.md +43 -0
  161. package/docs/cli/hooks.md +345 -0
  162. package/docs/cli/index.md +396 -0
  163. package/docs/cli/infer.md +364 -0
  164. package/docs/cli/logs.md +65 -0
  165. package/docs/cli/mcp.md +529 -0
  166. package/docs/cli/memory.md +183 -0
  167. package/docs/cli/message.md +317 -0
  168. package/docs/cli/migrate.md +290 -0
  169. package/docs/cli/models.md +224 -0
  170. package/docs/cli/node.md +177 -0
  171. package/docs/cli/nodes.md +76 -0
  172. package/docs/cli/onboard.md +245 -0
  173. package/docs/cli/pairing.md +77 -0
  174. package/docs/cli/path.md +502 -0
  175. package/docs/cli/plugins.md +454 -0
  176. package/docs/cli/policy.md +418 -0
  177. package/docs/cli/proxy.md +89 -0
  178. package/docs/cli/qr.md +56 -0
  179. package/docs/cli/reset.md +39 -0
  180. package/docs/cli/sandbox.md +208 -0
  181. package/docs/cli/secrets.md +202 -0
  182. package/docs/cli/security.md +124 -0
  183. package/docs/cli/sessions.md +164 -0
  184. package/docs/cli/setup.md +59 -0
  185. package/docs/cli/skills.md +102 -0
  186. package/docs/cli/status.md +45 -0
  187. package/docs/cli/system.md +89 -0
  188. package/docs/cli/tasks.md +111 -0
  189. package/docs/cli/tui.md +89 -0
  190. package/docs/cli/uninstall.md +44 -0
  191. package/docs/cli/update.md +242 -0
  192. package/docs/cli/voicecall.md +204 -0
  193. package/docs/cli/webhooks.md +117 -0
  194. package/docs/cli/wiki.md +256 -0
  195. package/docs/concepts/active-memory.md +856 -0
  196. package/docs/concepts/agent-loop.md +185 -0
  197. package/docs/concepts/agent-runtimes.md +243 -0
  198. package/docs/concepts/agent-workspace.md +230 -0
  199. package/docs/concepts/agent.md +136 -0
  200. package/docs/concepts/architecture.md +154 -0
  201. package/docs/concepts/channel-docking.md +145 -0
  202. package/docs/concepts/commitments.md +150 -0
  203. package/docs/concepts/compaction.md +203 -0
  204. package/docs/concepts/context-engine.md +306 -0
  205. package/docs/concepts/context.md +199 -0
  206. package/docs/concepts/delegate-architecture.md +319 -0
  207. package/docs/concepts/dreaming.md +261 -0
  208. package/docs/concepts/experimental-features.md +108 -0
  209. package/docs/concepts/features.md +91 -0
  210. package/docs/concepts/mantis-slack-desktop-runbook.md +202 -0
  211. package/docs/concepts/mantis.md +740 -0
  212. package/docs/concepts/markdown-formatting.md +139 -0
  213. package/docs/concepts/memory-builtin.md +146 -0
  214. package/docs/concepts/memory-honcho.md +144 -0
  215. package/docs/concepts/memory-qmd.md +271 -0
  216. package/docs/concepts/memory-search.md +166 -0
  217. package/docs/concepts/memory.md +258 -0
  218. package/docs/concepts/message-lifecycle-refactor.md +1128 -0
  219. package/docs/concepts/messages.md +214 -0
  220. package/docs/concepts/model-failover.md +385 -0
  221. package/docs/concepts/model-providers.md +715 -0
  222. package/docs/concepts/models.md +370 -0
  223. package/docs/concepts/multi-agent.md +619 -0
  224. package/docs/concepts/oauth.md +198 -0
  225. package/docs/concepts/openclaw-sdk.md +323 -0
  226. package/docs/concepts/parallel-specialist-lanes.md +127 -0
  227. package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
  228. package/docs/concepts/presence.md +117 -0
  229. package/docs/concepts/progress-drafts.md +362 -0
  230. package/docs/concepts/qa-e2e-automation.md +820 -0
  231. package/docs/concepts/qa-matrix.md +139 -0
  232. package/docs/concepts/queue-steering.md +90 -0
  233. package/docs/concepts/queue.md +122 -0
  234. package/docs/concepts/retry.md +86 -0
  235. package/docs/concepts/session-pruning.md +104 -0
  236. package/docs/concepts/session-tool.md +190 -0
  237. package/docs/concepts/session.md +164 -0
  238. package/docs/concepts/soul.md +116 -0
  239. package/docs/concepts/streaming.md +251 -0
  240. package/docs/concepts/system-prompt.md +310 -0
  241. package/docs/concepts/timezone.md +47 -0
  242. package/docs/concepts/typebox.md +309 -0
  243. package/docs/concepts/typing-indicators.md +88 -0
  244. package/docs/concepts/usage-tracking.md +66 -0
  245. package/docs/date-time.md +126 -0
  246. package/docs/debug/node-issue.md +90 -0
  247. package/docs/diagnostics/flags.md +138 -0
  248. package/docs/docs.json +1832 -0
  249. package/docs/gateway/authentication.md +239 -0
  250. package/docs/gateway/background-process.md +147 -0
  251. package/docs/gateway/bonjour.md +303 -0
  252. package/docs/gateway/bridge-protocol.md +94 -0
  253. package/docs/gateway/cli-backends.md +420 -0
  254. package/docs/gateway/config-agents.md +1514 -0
  255. package/docs/gateway/config-channels.md +945 -0
  256. package/docs/gateway/config-tools.md +769 -0
  257. package/docs/gateway/configuration-examples.md +705 -0
  258. package/docs/gateway/configuration-reference.md +1393 -0
  259. package/docs/gateway/configuration.md +737 -0
  260. package/docs/gateway/diagnostics.md +213 -0
  261. package/docs/gateway/discovery.md +154 -0
  262. package/docs/gateway/doctor.md +574 -0
  263. package/docs/gateway/gateway-lock.md +37 -0
  264. package/docs/gateway/health.md +73 -0
  265. package/docs/gateway/heartbeat.md +493 -0
  266. package/docs/gateway/index.md +383 -0
  267. package/docs/gateway/local-model-services.md +205 -0
  268. package/docs/gateway/local-models.md +355 -0
  269. package/docs/gateway/logging.md +149 -0
  270. package/docs/gateway/multiple-gateways.md +178 -0
  271. package/docs/gateway/network-model.md +15 -0
  272. package/docs/gateway/openai-http-api.md +350 -0
  273. package/docs/gateway/openresponses-http-api.md +347 -0
  274. package/docs/gateway/openshell.md +316 -0
  275. package/docs/gateway/opentelemetry.md +404 -0
  276. package/docs/gateway/operator-scopes.md +111 -0
  277. package/docs/gateway/pairing.md +207 -0
  278. package/docs/gateway/prometheus.md +230 -0
  279. package/docs/gateway/protocol.md +803 -0
  280. package/docs/gateway/remote-gateway-readme.md +169 -0
  281. package/docs/gateway/remote.md +280 -0
  282. package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +146 -0
  283. package/docs/gateway/sandboxing.md +545 -0
  284. package/docs/gateway/secrets-plan-contract.md +114 -0
  285. package/docs/gateway/secrets.md +609 -0
  286. package/docs/gateway/security/audit-checks.md +127 -0
  287. package/docs/gateway/security/index.md +1326 -0
  288. package/docs/gateway/security/secure-file-operations.md +76 -0
  289. package/docs/gateway/tailscale.md +156 -0
  290. package/docs/gateway/tools-invoke-http-api.md +169 -0
  291. package/docs/gateway/troubleshooting.md +772 -0
  292. package/docs/gateway/trusted-proxy-auth.md +451 -0
  293. package/docs/help/debugging.md +344 -0
  294. package/docs/help/environment.md +214 -0
  295. package/docs/help/faq-first-run.md +867 -0
  296. package/docs/help/faq-models.md +553 -0
  297. package/docs/help/faq.md +1975 -0
  298. package/docs/help/gpt55-codex-agentic-parity-maintainers.md +196 -0
  299. package/docs/help/gpt55-codex-agentic-parity.md +230 -0
  300. package/docs/help/index.md +39 -0
  301. package/docs/help/scripts.md +56 -0
  302. package/docs/help/testing-live.md +580 -0
  303. package/docs/help/testing-updates-plugins.md +291 -0
  304. package/docs/help/testing.md +928 -0
  305. package/docs/help/troubleshooting.md +424 -0
  306. package/docs/images/configure-model-picker-unsearchable.png +0 -0
  307. package/docs/images/feishu-get-group-id.png +0 -0
  308. package/docs/images/groups-flow.svg +52 -0
  309. package/docs/images/mobile-ui-screenshot.png +0 -0
  310. package/docs/index.md +196 -0
  311. package/docs/install/ansible.md +233 -0
  312. package/docs/install/azure.md +315 -0
  313. package/docs/install/bun.md +59 -0
  314. package/docs/install/clawdock.md +112 -0
  315. package/docs/install/development-channels.md +135 -0
  316. package/docs/install/digitalocean.md +174 -0
  317. package/docs/install/docker-vm-runtime.md +154 -0
  318. package/docs/install/docker.md +562 -0
  319. package/docs/install/exe-dev.md +201 -0
  320. package/docs/install/fly.md +524 -0
  321. package/docs/install/gcp.md +418 -0
  322. package/docs/install/hetzner.md +285 -0
  323. package/docs/install/hostinger.md +98 -0
  324. package/docs/install/index.md +221 -0
  325. package/docs/install/installer.md +455 -0
  326. package/docs/install/kubernetes.md +196 -0
  327. package/docs/install/macos-vm.md +281 -0
  328. package/docs/install/migrating-claude.md +165 -0
  329. package/docs/install/migrating-hermes.md +177 -0
  330. package/docs/install/migrating.md +137 -0
  331. package/docs/install/nix.md +112 -0
  332. package/docs/install/node.md +142 -0
  333. package/docs/install/northflank.mdx +44 -0
  334. package/docs/install/oracle.md +218 -0
  335. package/docs/install/podman.md +210 -0
  336. package/docs/install/railway.mdx +92 -0
  337. package/docs/install/raspberry-pi.md +234 -0
  338. package/docs/install/render.mdx +167 -0
  339. package/docs/install/uninstall.md +131 -0
  340. package/docs/install/updating.md +280 -0
  341. package/docs/logging.md +318 -0
  342. package/docs/nav-tabs-underline.js +100 -0
  343. package/docs/network.md +72 -0
  344. package/docs/nodes/audio.md +215 -0
  345. package/docs/nodes/camera.md +166 -0
  346. package/docs/nodes/images.md +77 -0
  347. package/docs/nodes/index.md +439 -0
  348. package/docs/nodes/location-command.md +102 -0
  349. package/docs/nodes/media-understanding.md +469 -0
  350. package/docs/nodes/talk.md +154 -0
  351. package/docs/nodes/troubleshooting.md +123 -0
  352. package/docs/nodes/voicewake.md +93 -0
  353. package/docs/perplexity.md +11 -0
  354. package/docs/pi-dev.md +82 -0
  355. package/docs/pi.md +573 -0
  356. package/docs/plan/codex-context-engine-harness.md +624 -0
  357. package/docs/plan/ui-channels.md +284 -0
  358. package/docs/platforms/android.md +285 -0
  359. package/docs/platforms/digitalocean.md +12 -0
  360. package/docs/platforms/index.md +60 -0
  361. package/docs/platforms/ios.md +283 -0
  362. package/docs/platforms/linux.md +141 -0
  363. package/docs/platforms/mac/bundled-gateway.md +79 -0
  364. package/docs/platforms/mac/canvas.md +128 -0
  365. package/docs/platforms/mac/child-process.md +72 -0
  366. package/docs/platforms/mac/dev-setup.md +112 -0
  367. package/docs/platforms/mac/health.md +39 -0
  368. package/docs/platforms/mac/icon.md +36 -0
  369. package/docs/platforms/mac/logging.md +62 -0
  370. package/docs/platforms/mac/menu-bar.md +93 -0
  371. package/docs/platforms/mac/peekaboo.md +92 -0
  372. package/docs/platforms/mac/permissions.md +53 -0
  373. package/docs/platforms/mac/remote.md +123 -0
  374. package/docs/platforms/mac/signing.md +52 -0
  375. package/docs/platforms/mac/skills.md +43 -0
  376. package/docs/platforms/mac/voice-overlay.md +66 -0
  377. package/docs/platforms/mac/voicewake.md +73 -0
  378. package/docs/platforms/mac/webchat.md +54 -0
  379. package/docs/platforms/mac/xpc.md +66 -0
  380. package/docs/platforms/macos.md +226 -0
  381. package/docs/platforms/oracle.md +12 -0
  382. package/docs/platforms/raspberry-pi.md +13 -0
  383. package/docs/platforms/windows.md +286 -0
  384. package/docs/plugins/adding-capabilities.md +133 -0
  385. package/docs/plugins/admin-http-rpc.md +216 -0
  386. package/docs/plugins/agent-tools.md +13 -0
  387. package/docs/plugins/architecture-internals.md +1195 -0
  388. package/docs/plugins/architecture.md +481 -0
  389. package/docs/plugins/building-extensions.md +13 -0
  390. package/docs/plugins/building-plugins.md +330 -0
  391. package/docs/plugins/bundles.md +310 -0
  392. package/docs/plugins/cli-backend-plugins.md +310 -0
  393. package/docs/plugins/codex-computer-use.md +293 -0
  394. package/docs/plugins/codex-harness-reference.md +409 -0
  395. package/docs/plugins/codex-harness-runtime.md +247 -0
  396. package/docs/plugins/codex-harness.md +746 -0
  397. package/docs/plugins/codex-native-plugins.md +276 -0
  398. package/docs/plugins/community.md +77 -0
  399. package/docs/plugins/compatibility.md +164 -0
  400. package/docs/plugins/dependency-resolution.md +143 -0
  401. package/docs/plugins/google-meet.md +1737 -0
  402. package/docs/plugins/hooks.md +459 -0
  403. package/docs/plugins/install-overrides.md +80 -0
  404. package/docs/plugins/manage-plugins.md +210 -0
  405. package/docs/plugins/manifest.md +1359 -0
  406. package/docs/plugins/memory-lancedb.md +385 -0
  407. package/docs/plugins/memory-wiki.md +529 -0
  408. package/docs/plugins/message-presentation.md +473 -0
  409. package/docs/plugins/oc-path.md +166 -0
  410. package/docs/plugins/plugin-inventory.md +182 -0
  411. package/docs/plugins/reference/acpx.md +23 -0
  412. package/docs/plugins/reference/admin-http-rpc.md +23 -0
  413. package/docs/plugins/reference/alibaba.md +23 -0
  414. package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
  415. package/docs/plugins/reference/amazon-bedrock.md +23 -0
  416. package/docs/plugins/reference/anthropic-vertex.md +19 -0
  417. package/docs/plugins/reference/anthropic.md +23 -0
  418. package/docs/plugins/reference/arcee.md +23 -0
  419. package/docs/plugins/reference/azure-speech.md +23 -0
  420. package/docs/plugins/reference/bonjour.md +19 -0
  421. package/docs/plugins/reference/brave.md +23 -0
  422. package/docs/plugins/reference/browser.md +23 -0
  423. package/docs/plugins/reference/byteplus.md +19 -0
  424. package/docs/plugins/reference/canvas.md +19 -0
  425. package/docs/plugins/reference/cerebras.md +23 -0
  426. package/docs/plugins/reference/chutes.md +23 -0
  427. package/docs/plugins/reference/clickclack.md +23 -0
  428. package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
  429. package/docs/plugins/reference/codex.md +23 -0
  430. package/docs/plugins/reference/comfy.md +23 -0
  431. package/docs/plugins/reference/copilot-proxy.md +19 -0
  432. package/docs/plugins/reference/deepgram.md +23 -0
  433. package/docs/plugins/reference/deepinfra.md +23 -0
  434. package/docs/plugins/reference/deepseek.md +23 -0
  435. package/docs/plugins/reference/diagnostics-otel.md +19 -0
  436. package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
  437. package/docs/plugins/reference/diffs.md +19 -0
  438. package/docs/plugins/reference/discord.md +23 -0
  439. package/docs/plugins/reference/document-extract.md +23 -0
  440. package/docs/plugins/reference/duckduckgo.md +23 -0
  441. package/docs/plugins/reference/elevenlabs.md +23 -0
  442. package/docs/plugins/reference/exa.md +23 -0
  443. package/docs/plugins/reference/fal.md +23 -0
  444. package/docs/plugins/reference/feishu.md +23 -0
  445. package/docs/plugins/reference/file-transfer.md +19 -0
  446. package/docs/plugins/reference/firecrawl.md +23 -0
  447. package/docs/plugins/reference/fireworks.md +23 -0
  448. package/docs/plugins/reference/github-copilot.md +23 -0
  449. package/docs/plugins/reference/google-meet.md +23 -0
  450. package/docs/plugins/reference/google.md +23 -0
  451. package/docs/plugins/reference/googlechat.md +23 -0
  452. package/docs/plugins/reference/gradium.md +23 -0
  453. package/docs/plugins/reference/groq.md +23 -0
  454. package/docs/plugins/reference/huggingface.md +23 -0
  455. package/docs/plugins/reference/imessage.md +23 -0
  456. package/docs/plugins/reference/inworld.md +23 -0
  457. package/docs/plugins/reference/irc.md +23 -0
  458. package/docs/plugins/reference/kilocode.md +23 -0
  459. package/docs/plugins/reference/kimi.md +23 -0
  460. package/docs/plugins/reference/line.md +23 -0
  461. package/docs/plugins/reference/litellm.md +23 -0
  462. package/docs/plugins/reference/llm-task.md +19 -0
  463. package/docs/plugins/reference/lmstudio.md +23 -0
  464. package/docs/plugins/reference/lobster.md +19 -0
  465. package/docs/plugins/reference/matrix.md +23 -0
  466. package/docs/plugins/reference/mattermost.md +23 -0
  467. package/docs/plugins/reference/memory-core.md +19 -0
  468. package/docs/plugins/reference/memory-lancedb.md +23 -0
  469. package/docs/plugins/reference/memory-wiki.md +23 -0
  470. package/docs/plugins/reference/microsoft-foundry.md +19 -0
  471. package/docs/plugins/reference/microsoft.md +19 -0
  472. package/docs/plugins/reference/migrate-claude.md +19 -0
  473. package/docs/plugins/reference/migrate-hermes.md +19 -0
  474. package/docs/plugins/reference/minimax.md +23 -0
  475. package/docs/plugins/reference/mistral.md +23 -0
  476. package/docs/plugins/reference/moonshot.md +23 -0
  477. package/docs/plugins/reference/msteams.md +23 -0
  478. package/docs/plugins/reference/nextcloud-talk.md +23 -0
  479. package/docs/plugins/reference/nostr.md +23 -0
  480. package/docs/plugins/reference/nvidia.md +23 -0
  481. package/docs/plugins/reference/oc-path.md +23 -0
  482. package/docs/plugins/reference/ollama.md +23 -0
  483. package/docs/plugins/reference/open-prose.md +19 -0
  484. package/docs/plugins/reference/openai.md +23 -0
  485. package/docs/plugins/reference/opencode-go.md +23 -0
  486. package/docs/plugins/reference/opencode.md +23 -0
  487. package/docs/plugins/reference/openrouter.md +23 -0
  488. package/docs/plugins/reference/openshell.md +19 -0
  489. package/docs/plugins/reference/perplexity.md +23 -0
  490. package/docs/plugins/reference/policy.md +23 -0
  491. package/docs/plugins/reference/qa-channel.md +23 -0
  492. package/docs/plugins/reference/qa-lab.md +19 -0
  493. package/docs/plugins/reference/qa-matrix.md +19 -0
  494. package/docs/plugins/reference/qianfan.md +23 -0
  495. package/docs/plugins/reference/qqbot.md +23 -0
  496. package/docs/plugins/reference/qwen.md +23 -0
  497. package/docs/plugins/reference/runway.md +23 -0
  498. package/docs/plugins/reference/searxng.md +19 -0
  499. package/docs/plugins/reference/senseaudio.md +23 -0
  500. package/docs/plugins/reference/sglang.md +23 -0
  501. package/docs/plugins/reference/signal.md +23 -0
  502. package/docs/plugins/reference/skill-workshop.md +23 -0
  503. package/docs/plugins/reference/slack.md +23 -0
  504. package/docs/plugins/reference/stepfun.md +23 -0
  505. package/docs/plugins/reference/synology-chat.md +23 -0
  506. package/docs/plugins/reference/synthetic.md +23 -0
  507. package/docs/plugins/reference/tavily.md +23 -0
  508. package/docs/plugins/reference/telegram.md +23 -0
  509. package/docs/plugins/reference/tencent.md +23 -0
  510. package/docs/plugins/reference/tlon.md +23 -0
  511. package/docs/plugins/reference/together.md +23 -0
  512. package/docs/plugins/reference/tokenjuice.md +23 -0
  513. package/docs/plugins/reference/tts-local-cli.md +19 -0
  514. package/docs/plugins/reference/twitch.md +23 -0
  515. package/docs/plugins/reference/venice.md +23 -0
  516. package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
  517. package/docs/plugins/reference/vllm.md +23 -0
  518. package/docs/plugins/reference/voice-call.md +23 -0
  519. package/docs/plugins/reference/volcengine.md +23 -0
  520. package/docs/plugins/reference/voyage.md +19 -0
  521. package/docs/plugins/reference/vydra.md +23 -0
  522. package/docs/plugins/reference/web-readability.md +19 -0
  523. package/docs/plugins/reference/webhooks.md +23 -0
  524. package/docs/plugins/reference/whatsapp.md +23 -0
  525. package/docs/plugins/reference/xai.md +23 -0
  526. package/docs/plugins/reference/xiaomi.md +23 -0
  527. package/docs/plugins/reference/zai.md +23 -0
  528. package/docs/plugins/reference/zalo.md +23 -0
  529. package/docs/plugins/reference/zalouser.md +24 -0
  530. package/docs/plugins/reference.md +138 -0
  531. package/docs/plugins/sdk-agent-harness.md +339 -0
  532. package/docs/plugins/sdk-channel-ingress.md +137 -0
  533. package/docs/plugins/sdk-channel-message.md +458 -0
  534. package/docs/plugins/sdk-channel-plugins.md +762 -0
  535. package/docs/plugins/sdk-channel-turn.md +580 -0
  536. package/docs/plugins/sdk-entrypoints.md +333 -0
  537. package/docs/plugins/sdk-migration.md +949 -0
  538. package/docs/plugins/sdk-overview.md +501 -0
  539. package/docs/plugins/sdk-provider-plugins.md +807 -0
  540. package/docs/plugins/sdk-runtime.md +676 -0
  541. package/docs/plugins/sdk-setup.md +550 -0
  542. package/docs/plugins/sdk-subpaths.md +396 -0
  543. package/docs/plugins/sdk-testing.md +401 -0
  544. package/docs/plugins/skill-workshop.md +713 -0
  545. package/docs/plugins/tool-plugins.md +411 -0
  546. package/docs/plugins/voice-call.md +943 -0
  547. package/docs/plugins/webhooks.md +192 -0
  548. package/docs/plugins/zalouser.md +86 -0
  549. package/docs/prose.md +137 -0
  550. package/docs/providers/alibaba.md +158 -0
  551. package/docs/providers/anthropic.md +344 -0
  552. package/docs/providers/arcee.md +144 -0
  553. package/docs/providers/azure-speech.md +119 -0
  554. package/docs/providers/bedrock-mantle.md +211 -0
  555. package/docs/providers/bedrock.md +414 -0
  556. package/docs/providers/cerebras.md +130 -0
  557. package/docs/providers/chutes.md +153 -0
  558. package/docs/providers/claude-max-api-proxy.md +188 -0
  559. package/docs/providers/cloudflare-ai-gateway.md +119 -0
  560. package/docs/providers/comfy.md +362 -0
  561. package/docs/providers/deepgram.md +184 -0
  562. package/docs/providers/deepinfra.md +87 -0
  563. package/docs/providers/deepseek.md +146 -0
  564. package/docs/providers/ds4.md +309 -0
  565. package/docs/providers/elevenlabs.md +130 -0
  566. package/docs/providers/fal.md +204 -0
  567. package/docs/providers/fireworks.md +144 -0
  568. package/docs/providers/github-copilot.md +225 -0
  569. package/docs/providers/glm.md +137 -0
  570. package/docs/providers/google.md +472 -0
  571. package/docs/providers/gradium.md +123 -0
  572. package/docs/providers/groq.md +180 -0
  573. package/docs/providers/huggingface.md +235 -0
  574. package/docs/providers/index.md +102 -0
  575. package/docs/providers/inferrs.md +272 -0
  576. package/docs/providers/inworld.md +120 -0
  577. package/docs/providers/kilocode.md +135 -0
  578. package/docs/providers/litellm.md +234 -0
  579. package/docs/providers/lmstudio.md +224 -0
  580. package/docs/providers/minimax.md +505 -0
  581. package/docs/providers/mistral.md +235 -0
  582. package/docs/providers/models.md +65 -0
  583. package/docs/providers/moonshot.md +413 -0
  584. package/docs/providers/nvidia.md +140 -0
  585. package/docs/providers/ollama.md +1180 -0
  586. package/docs/providers/openai.md +1057 -0
  587. package/docs/providers/opencode-go.md +123 -0
  588. package/docs/providers/opencode.md +149 -0
  589. package/docs/providers/openrouter.md +349 -0
  590. package/docs/providers/perplexity-provider.md +123 -0
  591. package/docs/providers/qianfan.md +132 -0
  592. package/docs/providers/qwen.md +332 -0
  593. package/docs/providers/runway.md +103 -0
  594. package/docs/providers/senseaudio.md +68 -0
  595. package/docs/providers/sglang.md +161 -0
  596. package/docs/providers/stepfun.md +229 -0
  597. package/docs/providers/synthetic.md +154 -0
  598. package/docs/providers/tencent.md +130 -0
  599. package/docs/providers/together.md +141 -0
  600. package/docs/providers/venice.md +315 -0
  601. package/docs/providers/vercel-ai-gateway.md +128 -0
  602. package/docs/providers/vllm.md +383 -0
  603. package/docs/providers/volcengine.md +199 -0
  604. package/docs/providers/vydra.md +180 -0
  605. package/docs/providers/xai.md +560 -0
  606. package/docs/providers/xiaomi.md +188 -0
  607. package/docs/providers/zai.md +203 -0
  608. package/docs/refactor/access.md +9 -0
  609. package/docs/refactor/acp.md +298 -0
  610. package/docs/refactor/canvas.md +131 -0
  611. package/docs/refactor/ingress-core.md +341 -0
  612. package/docs/reference/AGENTS.default.md +129 -0
  613. package/docs/reference/RELEASING.md +767 -0
  614. package/docs/reference/api-usage-costs.md +202 -0
  615. package/docs/reference/application-modernization-plan.md +208 -0
  616. package/docs/reference/code-mode.md +757 -0
  617. package/docs/reference/credits.md +33 -0
  618. package/docs/reference/device-models.md +50 -0
  619. package/docs/reference/full-release-validation.md +202 -0
  620. package/docs/reference/memory-config.md +630 -0
  621. package/docs/reference/openclaw-sdk-api-design.md +390 -0
  622. package/docs/reference/prompt-caching.md +358 -0
  623. package/docs/reference/rich-output-protocol.md +79 -0
  624. package/docs/reference/rpc.md +43 -0
  625. package/docs/reference/secretref-credential-surface.md +159 -0
  626. package/docs/reference/secretref-user-supplied-credentials-matrix.json +663 -0
  627. package/docs/reference/session-management-compaction.md +461 -0
  628. package/docs/reference/templates/AGENTS.dev.md +89 -0
  629. package/docs/reference/templates/AGENTS.md +225 -0
  630. package/docs/reference/templates/BOOT.md +16 -0
  631. package/docs/reference/templates/BOOTSTRAP.md +66 -0
  632. package/docs/reference/templates/HEARTBEAT.md +16 -0
  633. package/docs/reference/templates/IDENTITY.dev.md +52 -0
  634. package/docs/reference/templates/IDENTITY.md +34 -0
  635. package/docs/reference/templates/SOUL.dev.md +82 -0
  636. package/docs/reference/templates/SOUL.md +49 -0
  637. package/docs/reference/templates/TOOLS.dev.md +29 -0
  638. package/docs/reference/templates/TOOLS.md +51 -0
  639. package/docs/reference/templates/USER.dev.md +23 -0
  640. package/docs/reference/templates/USER.md +28 -0
  641. package/docs/reference/test.md +239 -0
  642. package/docs/reference/token-use.md +233 -0
  643. package/docs/reference/transcript-hygiene.md +214 -0
  644. package/docs/reference/wizard.md +252 -0
  645. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
  646. package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
  647. package/docs/security/formal-verification.md +170 -0
  648. package/docs/security/incident-response.md +59 -0
  649. package/docs/security/network-proxy.md +268 -0
  650. package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
  651. package/docs/snippets/plugin-publish/minimal-package.json +16 -0
  652. package/docs/start/bootstrapping.md +49 -0
  653. package/docs/start/docs-directory.md +69 -0
  654. package/docs/start/getting-started.md +152 -0
  655. package/docs/start/hubs.md +201 -0
  656. package/docs/start/lore.md +223 -0
  657. package/docs/start/onboarding-overview.md +72 -0
  658. package/docs/start/onboarding.md +95 -0
  659. package/docs/start/openclaw.md +244 -0
  660. package/docs/start/quickstart.md +25 -0
  661. package/docs/start/setup.md +178 -0
  662. package/docs/start/showcase.md +383 -0
  663. package/docs/start/wizard-cli-automation.md +232 -0
  664. package/docs/start/wizard-cli-reference.md +331 -0
  665. package/docs/start/wizard.md +141 -0
  666. package/docs/style.css +184 -0
  667. package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +316 -0
  668. package/docs/tools/acp-agents-setup.md +352 -0
  669. package/docs/tools/acp-agents.md +847 -0
  670. package/docs/tools/agent-send.md +112 -0
  671. package/docs/tools/apply-patch.md +64 -0
  672. package/docs/tools/brave-search.md +139 -0
  673. package/docs/tools/browser-control.md +391 -0
  674. package/docs/tools/browser-linux-troubleshooting.md +173 -0
  675. package/docs/tools/browser-login.md +77 -0
  676. package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
  677. package/docs/tools/browser.md +769 -0
  678. package/docs/tools/btw.md +159 -0
  679. package/docs/tools/capability-cookbook.md +12 -0
  680. package/docs/tools/clawhub.md +5 -0
  681. package/docs/tools/code-execution.md +173 -0
  682. package/docs/tools/creating-skills.md +120 -0
  683. package/docs/tools/diffs.md +506 -0
  684. package/docs/tools/duckduckgo-search.md +109 -0
  685. package/docs/tools/elevated.md +128 -0
  686. package/docs/tools/exa-search.md +152 -0
  687. package/docs/tools/exec-approvals-advanced.md +360 -0
  688. package/docs/tools/exec-approvals.md +474 -0
  689. package/docs/tools/exec.md +282 -0
  690. package/docs/tools/firecrawl.md +155 -0
  691. package/docs/tools/gemini-search.md +114 -0
  692. package/docs/tools/grok-search.md +113 -0
  693. package/docs/tools/image-generation.md +433 -0
  694. package/docs/tools/index.md +178 -0
  695. package/docs/tools/kimi-search.md +105 -0
  696. package/docs/tools/llm-task.md +137 -0
  697. package/docs/tools/lobster.md +365 -0
  698. package/docs/tools/loop-detection.md +154 -0
  699. package/docs/tools/media-overview.md +157 -0
  700. package/docs/tools/minimax-search.md +102 -0
  701. package/docs/tools/multi-agent-sandbox-tools.md +409 -0
  702. package/docs/tools/music-generation.md +371 -0
  703. package/docs/tools/ollama-search.md +153 -0
  704. package/docs/tools/pdf.md +195 -0
  705. package/docs/tools/perplexity-search.md +220 -0
  706. package/docs/tools/plugin.md +327 -0
  707. package/docs/tools/reactions.md +100 -0
  708. package/docs/tools/searxng-search.md +141 -0
  709. package/docs/tools/skills-config.md +195 -0
  710. package/docs/tools/skills.md +535 -0
  711. package/docs/tools/slash-commands.md +488 -0
  712. package/docs/tools/steer.md +84 -0
  713. package/docs/tools/subagents.md +650 -0
  714. package/docs/tools/tavily.md +162 -0
  715. package/docs/tools/thinking.md +140 -0
  716. package/docs/tools/tokenjuice.md +81 -0
  717. package/docs/tools/tool-search.md +269 -0
  718. package/docs/tools/trajectory.md +229 -0
  719. package/docs/tools/tts.md +1004 -0
  720. package/docs/tools/video-generation.md +552 -0
  721. package/docs/tools/web-fetch.md +195 -0
  722. package/docs/tools/web.md +459 -0
  723. package/docs/tts.md +11 -0
  724. package/docs/vps.md +139 -0
  725. package/docs/web/control-ui.md +503 -0
  726. package/docs/web/dashboard.md +107 -0
  727. package/docs/web/index.md +133 -0
  728. package/docs/web/tui.md +246 -0
  729. package/docs/web/webchat.md +99 -0
  730. package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
  731. package/docs/whatsapp-openclaw.jpg +0 -0
  732. package/nodmix.mjs +487 -0
  733. package/package.json +1852 -0
  734. package/patches/.gitkeep +0 -0
  735. package/patches/@agentclientprotocol__claude-agent-acp@0.36.1.patch +41 -0
  736. package/pnpm-workspace.yaml +63 -0
  737. package/scripts/crabbox-wrapper.mjs +353 -0
  738. package/scripts/lib/official-external-channel-catalog.json +559 -0
  739. package/scripts/lib/official-external-plugin-catalog.json +192 -0
  740. package/scripts/lib/official-external-provider-catalog.json +117 -0
  741. package/scripts/lib/package-dist-imports.mjs +171 -0
  742. package/scripts/npm-runner.mjs +91 -0
  743. package/scripts/postinstall-bundled-plugins.mjs +978 -0
  744. package/scripts/preinstall-package-manager-warning.mjs +64 -0
  745. package/scripts/windows-cmd-helpers.mjs +20 -0
  746. package/skills/1password/SKILL.md +70 -0
  747. package/skills/1password/references/cli-examples.md +29 -0
  748. package/skills/1password/references/get-started.md +17 -0
  749. package/skills/apple-notes/SKILL.md +77 -0
  750. package/skills/apple-reminders/SKILL.md +118 -0
  751. package/skills/bear-notes/SKILL.md +107 -0
  752. package/skills/blogwatcher/SKILL.md +69 -0
  753. package/skills/blucli/SKILL.md +47 -0
  754. package/skills/camsnap/SKILL.md +45 -0
  755. package/skills/canvas/SKILL.md +78 -0
  756. package/skills/clawhub/SKILL.md +77 -0
  757. package/skills/coding-agent/SKILL.md +149 -0
  758. package/skills/diagram-maker/SKILL.md +53 -0
  759. package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
  760. package/skills/diagram-maker/references/svg-template.md +112 -0
  761. package/skills/discord/SKILL.md +136 -0
  762. package/skills/eightctl/SKILL.md +50 -0
  763. package/skills/gemini/SKILL.md +47 -0
  764. package/skills/gh-issues/SKILL.md +213 -0
  765. package/skills/gifgrep/SKILL.md +85 -0
  766. package/skills/github/SKILL.md +84 -0
  767. package/skills/gog/SKILL.md +116 -0
  768. package/skills/goplaces/SKILL.md +52 -0
  769. package/skills/healthcheck/SKILL.md +105 -0
  770. package/skills/himalaya/SKILL.md +80 -0
  771. package/skills/himalaya/references/configuration.md +184 -0
  772. package/skills/himalaya/references/message-composition.md +199 -0
  773. package/skills/imsg/SKILL.md +122 -0
  774. package/skills/mcporter/SKILL.md +61 -0
  775. package/skills/meme-maker/SKILL.md +42 -0
  776. package/skills/meme-maker/references/templates.json +358 -0
  777. package/skills/meme-maker/scripts/meme.mjs +398 -0
  778. package/skills/model-usage/SKILL.md +69 -0
  779. package/skills/model-usage/references/codexbar-cli.md +33 -0
  780. package/skills/model-usage/scripts/model_usage.py +319 -0
  781. package/skills/model-usage/scripts/test_model_usage.py +40 -0
  782. package/skills/nano-pdf/SKILL.md +38 -0
  783. package/skills/node-connect/SKILL.md +142 -0
  784. package/skills/node-inspect-debugger/SKILL.md +85 -0
  785. package/skills/notion/SKILL.md +150 -0
  786. package/skills/obsidian/SKILL.md +119 -0
  787. package/skills/openai-whisper/SKILL.md +38 -0
  788. package/skills/openai-whisper-api/SKILL.md +71 -0
  789. package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
  790. package/skills/openhue/SKILL.md +112 -0
  791. package/skills/oracle/SKILL.md +126 -0
  792. package/skills/ordercli/SKILL.md +78 -0
  793. package/skills/peekaboo/SKILL.md +190 -0
  794. package/skills/pyproject.toml +10 -0
  795. package/skills/python-debugpy/SKILL.md +73 -0
  796. package/skills/sag/SKILL.md +87 -0
  797. package/skills/session-logs/SKILL.md +151 -0
  798. package/skills/sherpa-onnx-tts/SKILL.md +109 -0
  799. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  800. package/skills/skill-creator/SKILL.md +78 -0
  801. package/skills/skill-creator/license.txt +202 -0
  802. package/skills/skill-creator/scripts/init_skill.py +378 -0
  803. package/skills/skill-creator/scripts/package_skill.py +139 -0
  804. package/skills/skill-creator/scripts/quick_validate.py +169 -0
  805. package/skills/skill-creator/scripts/test_package_skill.py +161 -0
  806. package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
  807. package/skills/slack/SKILL.md +78 -0
  808. package/skills/songsee/SKILL.md +49 -0
  809. package/skills/sonoscli/SKILL.md +65 -0
  810. package/skills/spike/SKILL.md +51 -0
  811. package/skills/spotify-player/SKILL.md +64 -0
  812. package/skills/summarize/SKILL.md +87 -0
  813. package/skills/taskflow/SKILL.md +149 -0
  814. package/skills/taskflow/examples/inbox-triage.lobster +33 -0
  815. package/skills/taskflow/examples/pr-intake.lobster +32 -0
  816. package/skills/taskflow-inbox-triage/SKILL.md +119 -0
  817. package/skills/things-mac/SKILL.md +86 -0
  818. package/skills/tmux/SKILL.md +91 -0
  819. package/skills/tmux/scripts/find-sessions.sh +112 -0
  820. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  821. package/skills/trello/SKILL.md +108 -0
  822. package/skills/video-frames/SKILL.md +46 -0
  823. package/skills/video-frames/scripts/frame.sh +81 -0
  824. package/skills/voice-call/SKILL.md +45 -0
  825. package/skills/wacli/SKILL.md +72 -0
  826. package/skills/weather/SKILL.md +64 -0
  827. package/skills/xurl/SKILL.md +120 -0
@@ -0,0 +1,459 @@
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 Nodmix 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 "nodmix/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; Nodmix 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
+ - **`tool_result_persist`** - rewrite the assistant message produced from a tool result
124
+ - **`before_message_write`** - inspect or block an in-progress message write (rare)
125
+
126
+ **Messages and delivery**
127
+
128
+ - **`inbound_claim`** - claim an inbound message before agent routing (synthetic replies)
129
+ - `message_received` - observe inbound content, sender, thread, and metadata
130
+ - **`message_sending`** - rewrite outbound content or cancel delivery
131
+ - `message_sent` - observe outbound delivery success or failure
132
+ - **`before_dispatch`** - inspect or rewrite an outbound dispatch before channel handoff
133
+ - **`reply_dispatch`** - participate in the final reply-dispatch pipeline
134
+
135
+ **Sessions and compaction**
136
+
137
+ - `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.
138
+ - `before_compaction` / `after_compaction` - observe or annotate compaction cycles
139
+ - `before_reset` - observe session-reset events (`/reset`, programmatic resets)
140
+
141
+ **Subagents**
142
+
143
+ - `subagent_spawning` / `subagent_delivery_target` / `subagent_spawned` / `subagent_ended` - coordinate subagent routing and completion delivery
144
+
145
+ **Lifecycle**
146
+
147
+ - `gateway_start` / `gateway_stop` - start or stop plugin-owned services with the Gateway
148
+ - `deactivate` - deprecated compatibility alias for `gateway_stop`; use `gateway_stop` in new plugins
149
+ - `cron_changed` - observe gateway-owned cron lifecycle changes (added, updated, removed, started, finished, scheduled)
150
+ - **`before_install`** - inspect skill or plugin install scans and optionally block
151
+
152
+ ## Debug runtime hooks
153
+
154
+ Use `before_model_resolve` when a plugin needs to switch the provider or model
155
+ for an agent turn. It runs before model resolution; `llm_output` only runs after
156
+ a model attempt produces assistant output.
157
+
158
+ For proof of the effective session model, inspect runtime registrations, then
159
+ use `nodmix sessions` or the Gateway session/status surfaces. When debugging
160
+ provider payloads, start the Gateway with `--raw-stream` and
161
+ `--raw-stream-path <path>`; those flags write raw model stream events to a jsonl
162
+ file.
163
+
164
+ ## Tool call policy
165
+
166
+ `before_tool_call` receives:
167
+
168
+ - `event.toolName`
169
+ - `event.params`
170
+ - optional `event.derivedPaths`, containing best-effort host-derived target path
171
+ hints for well-known tool envelopes such as `apply_patch`; when present,
172
+ these paths may be incomplete or may over-approximate what the tool will
173
+ actually touch (for example, with malformed or partial inputs)
174
+ - optional `event.runId`
175
+ - optional `event.toolCallId`
176
+ - context fields such as `ctx.agentId`, `ctx.sessionKey`, `ctx.sessionId`,
177
+ `ctx.runId`, `ctx.jobId` (set on cron-driven runs), and diagnostic `ctx.trace`
178
+
179
+ It can return:
180
+
181
+ ```typescript
182
+ type BeforeToolCallResult = {
183
+ params?: Record<string, unknown>;
184
+ block?: boolean;
185
+ blockReason?: string;
186
+ requireApproval?: {
187
+ title: string;
188
+ description: string;
189
+ severity?: "info" | "warning" | "critical";
190
+ timeoutMs?: number;
191
+ timeoutBehavior?: "allow" | "deny";
192
+ pluginId?: string;
193
+ onResolution?: (
194
+ decision: "allow-once" | "allow-always" | "deny" | "timeout" | "cancelled",
195
+ ) => Promise<void> | void;
196
+ };
197
+ };
198
+ ```
199
+
200
+ Hook guard behavior for typed lifecycle hooks:
201
+
202
+ - `block: true` is terminal and skips lower-priority handlers.
203
+ - `block: false` is treated as no decision.
204
+ - `params` rewrites the tool parameters for execution.
205
+ - `requireApproval` pauses the agent run and asks the user through plugin
206
+ approvals. The `/approve` command can approve both exec and plugin approvals.
207
+ - A lower-priority `block: true` can still block after a higher-priority hook
208
+ requested approval.
209
+ - `onResolution` receives the resolved approval decision - `allow-once`,
210
+ `allow-always`, `deny`, `timeout`, or `cancelled`.
211
+
212
+ Bundled plugins that need host-level policy can register trusted tool policies
213
+ with `api.registerTrustedToolPolicy(...)`. These run before ordinary
214
+ `before_tool_call` hooks and before external plugin decisions. Use them only
215
+ for host-trusted gates such as workspace policy, budget enforcement, or
216
+ reserved workflow safety. External plugins should use normal `before_tool_call`
217
+ hooks.
218
+
219
+ ### Tool result persistence
220
+
221
+ Tool results can include structured `details` for UI rendering, diagnostics,
222
+ media routing, or plugin-owned metadata. Treat `details` as runtime metadata,
223
+ not prompt content:
224
+
225
+ - Nodmix strips `toolResult.details` before provider replay and compaction
226
+ input so metadata does not become model context.
227
+ - Persisted session entries keep only bounded `details`. Oversized details are
228
+ replaced with a compact summary and `persistedDetailsTruncated: true`.
229
+ - `tool_result_persist` and `before_message_write` run before the final
230
+ persistence cap. Hooks should still keep returned `details` small and avoid
231
+ placing prompt-relevant text only in `details`; put model-visible tool output
232
+ in `content`.
233
+
234
+ ## Prompt and model hooks
235
+
236
+ Use the phase-specific hooks for new plugins:
237
+
238
+ - `before_model_resolve`: receives only the current prompt and attachment
239
+ metadata. Return `providerOverride` or `modelOverride`.
240
+ - `agent_turn_prepare`: receives the current prompt, prepared session messages,
241
+ and any exactly-once queued injections drained for this session. Return
242
+ `prependContext` or `appendContext`.
243
+ - `before_prompt_build`: receives the current prompt and session messages.
244
+ Return `prependContext`, `appendContext`, `systemPrompt`,
245
+ `prependSystemContext`, or `appendSystemContext`.
246
+ - `heartbeat_prompt_contribution`: runs only for heartbeat turns and returns
247
+ `prependContext` or `appendContext`. It is intended for background monitors
248
+ that need to summarize current state without changing user-initiated turns.
249
+
250
+ `before_agent_start` remains for compatibility. Prefer the explicit hooks above
251
+ so your plugin does not depend on a legacy combined phase.
252
+
253
+ `before_agent_run` runs after prompt construction and before any model input,
254
+ including prompt-local image loading and `llm_input` observation. It receives
255
+ the current user input as `prompt`, plus loaded session history in `messages`
256
+ and the active system prompt. Return `{ outcome: "block", reason, message? }`
257
+ to stop the run before the model can read the prompt. `reason` is internal;
258
+ `message` is the user-facing replacement. The only supported outcomes are
259
+ `pass` and `block`; unsupported decision shapes fail closed.
260
+
261
+ When a run is blocked, Nodmix stores only the replacement text in
262
+ `message.content` plus non-sensitive block metadata such as the blocking plugin
263
+ id and timestamp. The original user text is not retained in transcript or future
264
+ context. Internal block reasons are treated as sensitive and excluded from
265
+ transcript, history, broadcast, log, and diagnostics payloads. Observability
266
+ should use sanitized fields such as blocker id, outcome, timestamp, or a safe
267
+ category.
268
+
269
+ `before_agent_start` and `agent_end` include `event.runId` when Nodmix can
270
+ identify the active run. The same value is also available on `ctx.runId`.
271
+ Cron-driven runs also expose `ctx.jobId` (the originating cron job id) so
272
+ plugin hooks can scope metrics, side effects, or state to a specific scheduled
273
+ job.
274
+
275
+ For channel-originated runs, `ctx.messageProvider` is the provider surface such
276
+ as `discord` or `telegram`, while `ctx.channelId` is the conversation target
277
+ identifier when Nodmix can derive one from the session key or delivery
278
+ metadata.
279
+
280
+ `agent_end` is an observation hook and runs fire-and-forget after the turn. The
281
+ hook runner applies a 30 second timeout so a wedged plugin or embedding
282
+ endpoint cannot leave the hook promise pending forever. A timeout is logged and
283
+ Nodmix continues; it does not cancel plugin-owned network work unless the
284
+ plugin also uses its own abort signal.
285
+
286
+ Use `model_call_started` and `model_call_ended` for provider-call telemetry
287
+ that should not receive raw prompts, history, responses, headers, request
288
+ bodies, or provider request IDs. These hooks include stable metadata such as
289
+ `runId`, `callId`, `provider`, `model`, optional `api`/`transport`, terminal
290
+ `durationMs`/`outcome`, and `upstreamRequestIdHash` when Nodmix can derive a
291
+ bounded provider request-id hash. When the runtime has resolved context-window
292
+ metadata, the hook event and context also include `contextTokenBudget`, the
293
+ effective token budget after model/config/agent caps, plus
294
+ `contextWindowSource` and `contextWindowReferenceTokens` when a lower cap was
295
+ applied.
296
+
297
+ `before_agent_finalize` runs only when a harness is about to accept a natural
298
+ final assistant answer. It is not the `/stop` cancellation path and does not
299
+ run when the user aborts a turn. Return `{ action: "revise", reason }` to ask
300
+ the harness for one more model pass before finalization, `{ action:
301
+ "finalize", reason? }` to force finalization, or omit a result to continue.
302
+ Codex native `Stop` hooks are relayed into this hook as Nodmix
303
+ `before_agent_finalize` decisions.
304
+
305
+ When returning `action: "revise"`, plugins can include `retry` metadata to make
306
+ the extra model pass bounded and replay-safe:
307
+
308
+ ```typescript
309
+ type BeforeAgentFinalizeRetry = {
310
+ instruction: string;
311
+ idempotencyKey?: string;
312
+ maxAttempts?: number;
313
+ };
314
+ ```
315
+
316
+ `instruction` is appended to the revision reason sent to the harness.
317
+ `idempotencyKey` lets the host count retries for the same plugin request across
318
+ equivalent finalize decisions, and `maxAttempts` caps how many extra passes the
319
+ host will allow before continuing with the natural final answer.
320
+
321
+ Non-bundled plugins that need raw conversation hooks (`before_model_resolve`,
322
+ `before_agent_reply`, `llm_input`, `llm_output`, `before_agent_finalize`,
323
+ `agent_end`, or `before_agent_run`) must set:
324
+
325
+ ```json
326
+ {
327
+ "plugins": {
328
+ "entries": {
329
+ "my-plugin": {
330
+ "hooks": {
331
+ "allowConversationAccess": true
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
337
+ ```
338
+
339
+ Prompt-mutating hooks and durable next-turn injections can be disabled per plugin
340
+ with `plugins.entries.<id>.hooks.allowPromptInjection=false`.
341
+
342
+ ### Session extensions and next-turn injections
343
+
344
+ Workflow plugins can persist small JSON-compatible session state with
345
+ `api.registerSessionExtension(...)` and update it through the Gateway
346
+ `sessions.pluginPatch` method. Session rows project registered extension state
347
+ through `pluginExtensions`, letting Control UI and other clients render
348
+ plugin-owned status without learning plugin internals.
349
+
350
+ Use `api.enqueueNextTurnInjection(...)` when a plugin needs durable context to
351
+ reach the next model turn exactly once. Nodmix drains queued injections before
352
+ prompt hooks, drops expired injections, and deduplicates by `idempotencyKey`
353
+ per plugin. This is the right seam for approval resumes, policy summaries,
354
+ background monitor deltas, and command continuations that should be visible to
355
+ the model on the next turn but should not become permanent system prompt text.
356
+
357
+ Cleanup semantics are part of the contract. Session extension cleanup and
358
+ runtime lifecycle cleanup callbacks receive `reset`, `delete`, `disable`, or
359
+ `restart`. The host removes the owning plugin's persistent session extension
360
+ state and pending next-turn injections for reset/delete/disable; restart keeps
361
+ durable session state while cleanup callbacks let plugins release scheduler
362
+ jobs, run context, and other out-of-band resources for the old runtime
363
+ generation.
364
+
365
+ ## Message hooks
366
+
367
+ Use message hooks for channel-level routing and delivery policy:
368
+
369
+ - `message_received`: observe inbound content, sender, `threadId`, `messageId`,
370
+ `senderId`, optional run/session correlation, and metadata.
371
+ - `message_sending`: rewrite `content` or return `{ cancel: true }`.
372
+ - `message_sent`: observe final success or failure.
373
+
374
+ For audio-only TTS replies, `content` may contain the hidden spoken transcript
375
+ even when the channel payload has no visible text/caption. Rewriting that
376
+ `content` updates the hook-visible transcript only; it is not rendered as a
377
+ media caption.
378
+
379
+ Message hook contexts expose stable correlation fields when available:
380
+ `ctx.sessionKey`, `ctx.runId`, `ctx.messageId`, `ctx.senderId`, `ctx.trace`,
381
+ `ctx.traceId`, `ctx.spanId`, `ctx.parentSpanId`, and `ctx.callDepth`. Prefer
382
+ these first-class fields before reading legacy metadata.
383
+
384
+ Prefer typed `threadId` and `replyToId` fields before using channel-specific
385
+ metadata.
386
+
387
+ Decision rules:
388
+
389
+ - `message_sending` with `cancel: true` is terminal.
390
+ - `message_sending` with `cancel: false` is treated as no decision.
391
+ - Rewritten `content` continues to lower-priority hooks unless a later hook
392
+ cancels delivery.
393
+ - `message_sending` can return `cancelReason` and bounded `metadata` with a
394
+ cancellation. New message lifecycle APIs expose this as a suppressed delivery
395
+ outcome with reason `cancelled_by_message_sending_hook`; legacy direct
396
+ delivery keeps returning an empty result array for compatibility.
397
+ - `message_sent` is observation-only. Handler failures are logged and do not
398
+ change the delivery result.
399
+
400
+ ## Install hooks
401
+
402
+ `before_install` runs after the built-in scan for skill and plugin installs.
403
+ Return additional findings or `{ block: true, blockReason }` to stop the
404
+ install.
405
+
406
+ `block: true` is terminal. `block: false` is treated as no decision.
407
+
408
+ ## Gateway lifecycle
409
+
410
+ Use `gateway_start` for plugin services that need Gateway-owned state. The
411
+ context exposes `ctx.config`, `ctx.workspaceDir`, and `ctx.getCron?.()` for
412
+ cron inspection and updates. Use `gateway_stop` to clean up long-running
413
+ resources.
414
+
415
+ Do not rely on the internal `gateway:startup` hook for plugin-owned runtime
416
+ services.
417
+
418
+ `cron_changed` fires for gateway-owned cron lifecycle events with a typed
419
+ event payload covering `added`, `updated`, `removed`, `started`, `finished`,
420
+ and `scheduled` reasons. The event carries a `PluginHookGatewayCronJob`
421
+ snapshot (including `state.nextRunAtMs`, `state.lastRunStatus`, and
422
+ `state.lastError` when present) plus a `PluginHookGatewayCronDeliveryStatus`
423
+ of `not-requested` | `delivered` | `not-delivered` | `unknown`. Removed
424
+ events still carry the deleted job snapshot so external schedulers can
425
+ reconcile state. Use `ctx.getCron?.()` and `ctx.config` from the runtime
426
+ context when syncing external wake schedulers, and keep Nodmix as the
427
+ source of truth for due checks and execution.
428
+
429
+ ## Upcoming deprecations
430
+
431
+ A few hook-adjacent surfaces are deprecated but still supported. Migrate
432
+ before the next major release:
433
+
434
+ - **Plaintext channel envelopes** in `inbound_claim` and `message_received`
435
+ handlers. Read `BodyForAgent` and the structured user-context blocks
436
+ instead of parsing flat envelope text. See
437
+ [Plaintext channel envelopes → BodyForAgent](/plugins/sdk-migration#active-deprecations).
438
+ - **`before_agent_start`** remains for compatibility. New plugins should use
439
+ `before_model_resolve` and `before_prompt_build` instead of the combined
440
+ phase.
441
+ - **`deactivate`** remains as a deprecated cleanup compatibility alias until
442
+ after 2026-08-16. New plugins should use `gateway_stop`.
443
+ - **`onResolution` in `before_tool_call`** now uses the typed
444
+ `PluginApprovalResolution` union (`allow-once` / `allow-always` / `deny` /
445
+ `timeout` / `cancelled`) instead of a free-form `string`.
446
+
447
+ For the full list - memory capability registration, provider thinking
448
+ profile, external auth providers, provider discovery types, task runtime
449
+ accessors, and the `command-auth` → `command-status` rename - see
450
+ [Plugin SDK migration → Active deprecations](/plugins/sdk-migration#active-deprecations).
451
+
452
+ ## Related
453
+
454
+ - [Plugin SDK migration](/plugins/sdk-migration) - active deprecations and removal timeline
455
+ - [Building plugins](/plugins/building-plugins)
456
+ - [Plugin SDK overview](/plugins/sdk-overview)
457
+ - [Plugin entry points](/plugins/sdk-entrypoints)
458
+ - [Internal hooks](/automation/hooks)
459
+ - [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
+ [`nodmix 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 NODMIX_ALLOW_PLUGIN_INSTALL_OVERRIDES=1
27
+ export NODMIX_PLUGIN_INSTALL_OVERRIDES='{
28
+ "codex": "npm-pack:/tmp/nodmix-codex-2026.5.8.tgz",
29
+ "nodmix-web-search": "npm:@nodmix/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
+ Nodmix 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 Nodmix-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 Nodmix.
56
+
57
+ ## Package E2E
58
+
59
+ Use an isolated state directory so package installs and install records do not
60
+ touch your normal Nodmix state:
61
+
62
+ ```bash
63
+ npm pack extensions/codex --pack-destination /tmp
64
+
65
+ NODMIX_STATE_DIR="$(mktemp -d)" \
66
+ NODMIX_ALLOW_PLUGIN_INSTALL_OVERRIDES=1 \
67
+ NODMIX_PLUGIN_INSTALL_OVERRIDES='{"codex":"npm-pack:/tmp/nodmix-codex-2026.5.8.tgz"}' \
68
+ pnpm nodmix onboard --mode local
69
+ ```
70
+
71
+ Verify the installed package under the state directory:
72
+
73
+ ```bash
74
+ find "$NODMIX_STATE_DIR/npm/node_modules" -maxdepth 3 -name package.json -print
75
+ grep -R '"@nodmix/codex"' "$NODMIX_STATE_DIR/npm/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.