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,757 @@
1
+ ---
2
+ summary: "Nodmix code mode: an opt-in exec/wait tool surface backed by QuickJS-WASI and a hidden run-scoped tool catalog"
3
+ title: "Code mode"
4
+ sidebarTitle: "Code mode"
5
+ read_when:
6
+ - You want to enable Nodmix code mode for an agent run
7
+ - You need to explain why code mode is different from Codex Code mode
8
+ - You are reviewing the exec/wait contract, QuickJS-WASI sandbox, TypeScript transform, or hidden tool-catalog bridge
9
+ ---
10
+
11
+ Code mode is an experimental Nodmix agent-runtime feature. It is off by
12
+ default. When you enable it, Nodmix changes what the model sees for one run:
13
+ instead of exposing every enabled tool schema directly, the model sees only
14
+ `exec` and `wait`.
15
+
16
+ This page documents Nodmix code mode. It is not Codex Code mode. Codex Code
17
+ mode is part of the Codex coding harness and has its own project workspace,
18
+ runtime, tools, and execution semantics. Codex Code mode and Codex-native
19
+ dynamic tool search are stable Codex harness surfaces. Nodmix code mode is an
20
+ Nodmix-owned experimental tool-surface adapter for generic Nodmix runs. It
21
+ uses `quickjs-wasi`, a hidden Nodmix tool catalog, and the normal Nodmix
22
+ tool executor.
23
+
24
+ ## What is this?
25
+
26
+ Nodmix code mode lets the model write a small JavaScript or TypeScript program
27
+ instead of choosing directly from a long list of tools.
28
+
29
+ When code mode is active:
30
+
31
+ - The model-visible tool list is exactly `exec` and `wait`.
32
+ - `exec` evaluates model-generated JavaScript or TypeScript in a constrained
33
+ QuickJS-WASI worker.
34
+ - Normal Nodmix tools are hidden from the model prompt and exposed inside the
35
+ guest program through `ALL_TOOLS` and `tools`.
36
+ - Guest code can search the hidden catalog, describe a tool, and call a tool
37
+ through the same Nodmix execution path used by normal agent turns.
38
+ - `wait` resumes a suspended code-mode run when nested tool calls are still
39
+ pending.
40
+
41
+ The important distinction: code mode changes the model-facing orchestration
42
+ surface. It does not replace Nodmix tools, plugin tools, MCP tools, auth,
43
+ approval policy, channel behavior, or model selection.
44
+
45
+ ## Why is this good?
46
+
47
+ Code mode makes large tool catalogs easier for models to use.
48
+
49
+ - Smaller prompt surface: providers receive two control tools instead of dozens
50
+ or hundreds of full tool schemas.
51
+ - Better orchestration: the model can use loops, joins, small transforms,
52
+ conditional logic, and parallel nested tool calls inside one code cell.
53
+ - Provider neutral: it works for Nodmix, plugin, MCP, and client tools without
54
+ depending on provider-native code execution.
55
+ - Existing policy stays in force: nested tool calls still go through Nodmix
56
+ policy, approvals, hooks, session context, and audit paths.
57
+ - Clear failure mode: when code mode is explicitly enabled and the runtime is
58
+ unavailable, Nodmix fails closed instead of falling back to broad direct tool
59
+ exposure.
60
+
61
+ Code mode is especially useful for agents with a large enabled tool catalog or
62
+ for workflows where the model repeatedly needs to search, combine, and call
63
+ tools before producing an answer.
64
+
65
+ ## How to enable it
66
+
67
+ Add `tools.codeMode.enabled: true` to the agent or runtime config:
68
+
69
+ ```json5
70
+ {
71
+ tools: {
72
+ codeMode: {
73
+ enabled: true,
74
+ },
75
+ },
76
+ }
77
+ ```
78
+
79
+ The shorthand is also accepted:
80
+
81
+ ```json5
82
+ {
83
+ tools: {
84
+ codeMode: true,
85
+ },
86
+ }
87
+ ```
88
+
89
+ Code mode remains off when `tools.codeMode` is omitted, `false`, or an object
90
+ without `enabled: true`.
91
+
92
+ Use explicit limits when you want tighter bounds:
93
+
94
+ ```json5
95
+ {
96
+ tools: {
97
+ codeMode: {
98
+ enabled: true,
99
+ timeoutMs: 10000,
100
+ memoryLimitBytes: 67108864,
101
+ maxOutputBytes: 65536,
102
+ maxSnapshotBytes: 10485760,
103
+ maxPendingToolCalls: 16,
104
+ snapshotTtlSeconds: 900,
105
+ searchDefaultLimit: 8,
106
+ maxSearchLimit: 50,
107
+ },
108
+ },
109
+ }
110
+ ```
111
+
112
+ To confirm the model payload shape while debugging, run the Gateway with
113
+ targeted logging:
114
+
115
+ ```bash
116
+ NODMIX_DEBUG_CODE_MODE=1 \
117
+ NODMIX_DEBUG_MODEL_TRANSPORT=1 \
118
+ NODMIX_DEBUG_MODEL_PAYLOAD=tools \
119
+ nodmix gateway
120
+ ```
121
+
122
+ With code mode active, the logged model-facing tool names should be `exec` and
123
+ `wait`. If you need the redacted provider payload, add
124
+ `NODMIX_DEBUG_MODEL_PAYLOAD=full-redacted` for a short debugging session.
125
+
126
+ ## Technical tour
127
+
128
+ The rest of this page describes the runtime contract and implementation details.
129
+ It is intended for maintainers, plugin authors debugging tool exposure, and
130
+ operators validating high-risk deployments.
131
+
132
+ ## Runtime status
133
+
134
+ - Runtime: [`quickjs-wasi`](https://github.com/vercel-labs/quickjs-wasi).
135
+ - Default state: disabled.
136
+ - Stability: experimental Nodmix surface; Codex Code mode is a separate stable
137
+ Codex harness surface.
138
+ - Target surface: generic Nodmix agent runs.
139
+ - Security posture: model code is hostile.
140
+ - User-facing promise: enabling code mode never silently falls back to broad
141
+ direct tool exposure.
142
+
143
+ ## Scope
144
+
145
+ Code mode owns the model-facing orchestration shape for a prepared run. It does
146
+ not own model selection, channel behavior, auth, tool policy, or tool
147
+ implementations.
148
+
149
+ In scope:
150
+
151
+ - model-visible `exec` and `wait` tool definitions
152
+ - hidden tool catalog construction
153
+ - JavaScript and TypeScript guest execution
154
+ - QuickJS-WASI worker runtime
155
+ - host callbacks for catalog search, schema describe, and tool call
156
+ - resumable state for suspended guest programs
157
+ - output, timeout, memory, pending-call, and snapshot limits
158
+ - telemetry and trajectory projection for nested tool calls
159
+
160
+ Out of scope:
161
+
162
+ - provider-native remote code execution
163
+ - shell execution semantics
164
+ - changing existing tool authorization
165
+ - persistent user-authored scripts
166
+ - package manager, file, network, or module access in guest code
167
+ - direct reuse of Codex Code mode internals
168
+
169
+ Provider-owned tools such as remote Python sandboxes remain separate tools. See
170
+ [Code execution](/tools/code-execution).
171
+
172
+ ## Terms
173
+
174
+ **Code mode** is the Nodmix runtime mode that hides normal model tools and
175
+ exposes only `exec` and `wait`.
176
+
177
+ **Guest runtime** is the QuickJS-WASI JavaScript VM that evaluates model code.
178
+
179
+ **Host bridge** is the narrow JSON-compatible callback surface from guest code
180
+ back into Nodmix.
181
+
182
+ **Catalog** is the run-scoped list of effective tools after normal tool policy,
183
+ plugin, MCP, and client-tool resolution.
184
+
185
+ **Nested tool call** is a tool call made from guest code through the host bridge.
186
+
187
+ **Snapshot** is serialized QuickJS-WASI VM state saved so `wait` can continue a
188
+ suspended code-mode run.
189
+
190
+ ## Configuration
191
+
192
+ `tools.codeMode.enabled` is the activation gate. Setting other code-mode fields
193
+ does not enable the feature.
194
+
195
+ Supported fields:
196
+
197
+ - `enabled`: boolean. Default `false`. Enables code mode only when `true`.
198
+ - `runtime`: `"quickjs-wasi"`. Only supported runtime.
199
+ - `mode`: `"only"`. Exposes `exec` and `wait`, hides normal model tools.
200
+ - `languages`: array of `"javascript"` and `"typescript"`. Default includes
201
+ both.
202
+ - `timeoutMs`: wall-clock cap for one `exec` or `wait`. Default `10000`.
203
+ Runtime clamp: `100` to `60000`.
204
+ - `memoryLimitBytes`: QuickJS heap cap. Default `67108864`. Runtime clamp:
205
+ `1048576` to `1073741824`.
206
+ - `maxOutputBytes`: cap for returned text, JSON, and logs. Default `65536`.
207
+ Runtime clamp: `1024` to `10485760`.
208
+ - `maxSnapshotBytes`: cap for serialized VM snapshots. Default `10485760`.
209
+ Runtime clamp: `1024` to `268435456`.
210
+ - `maxPendingToolCalls`: cap for concurrent nested tool calls. Default `16`.
211
+ Runtime clamp: `1` to `128`.
212
+ - `snapshotTtlSeconds`: how long a suspended VM can be resumed. Default `900`.
213
+ Runtime clamp: `1` to `86400`.
214
+ - `searchDefaultLimit`: default hidden-catalog search result count. Default `8`.
215
+ Runtime clamps this to `maxSearchLimit`.
216
+ - `maxSearchLimit`: maximum hidden-catalog search result count. Default `50`.
217
+ Runtime clamp: `1` to `50`.
218
+
219
+ If code mode is enabled but QuickJS-WASI cannot load, Nodmix fails closed for
220
+ that run. It does not silently expose normal tools as a fallback.
221
+
222
+ ## Activation
223
+
224
+ Code mode is evaluated after the effective tool policy is known and before the
225
+ final model request is assembled.
226
+
227
+ Activation order:
228
+
229
+ 1. Resolve the agent, model, provider, sandbox, channel, sender, and run policy.
230
+ 2. Build the effective Nodmix tool list.
231
+ 3. Add eligible plugin, MCP, and client tools.
232
+ 4. Apply allow and deny policy.
233
+ 5. If `tools.codeMode.enabled` is false, continue with normal tool exposure.
234
+ 6. If enabled and tools are active for the run, register the effective tools in
235
+ the code-mode catalog.
236
+ 7. Remove all normal tools from the model-visible tool list.
237
+ 8. Add code-mode `exec` and `wait`.
238
+
239
+ Runs that intentionally have no tools, such as raw model calls, `disableTools`,
240
+ or an empty allowlist, do not activate the code-mode surface even if the config
241
+ contains `tools.codeMode.enabled: true`.
242
+
243
+ The code-mode catalog is run-scoped. It must not leak tools from another agent,
244
+ session, sender, or run.
245
+
246
+ ## Model-visible tools
247
+
248
+ When code mode is active, the model sees exactly these top-level tools:
249
+
250
+ - `exec`
251
+ - `wait`
252
+
253
+ All other enabled tools are hidden from the model-facing tool list and registered
254
+ in the code-mode catalog.
255
+
256
+ The model should use `exec` for tool orchestration, data joining, loops,
257
+ parallel nested calls, and structured transformations. The model should use
258
+ `wait` only when `exec` returns a resumable `waiting` result.
259
+
260
+ ## `exec`
261
+
262
+ `exec` starts a code-mode cell and returns one result. The input code is model
263
+ generated and must be treated as hostile.
264
+
265
+ Input:
266
+
267
+ ```typescript
268
+ type CodeModeExecInput = {
269
+ code: string;
270
+ language?: "javascript" | "typescript";
271
+ };
272
+ ```
273
+
274
+ Input rules:
275
+
276
+ - `code` is required and must be non-empty.
277
+ - `language` defaults to `"javascript"`.
278
+ - If `language` is `"typescript"`, Nodmix transpiles before evaluation.
279
+ - `exec` rejects `import`, `require`, dynamic import, and module-loader patterns
280
+ in v1.
281
+ - `exec` does not expose the normal shell `exec` implementation recursively.
282
+
283
+ Result:
284
+
285
+ ```typescript
286
+ type CodeModeResult = CodeModeCompletedResult | CodeModeWaitingResult | CodeModeFailedResult;
287
+
288
+ type CodeModeCompletedResult = {
289
+ status: "completed";
290
+ value: unknown;
291
+ output?: CodeModeOutput[];
292
+ telemetry: CodeModeTelemetry;
293
+ };
294
+
295
+ type CodeModeWaitingResult = {
296
+ status: "waiting";
297
+ runId: string;
298
+ reason: "pending_tools" | "yield";
299
+ pendingToolCalls?: CodeModePendingToolCall[];
300
+ output?: CodeModeOutput[];
301
+ telemetry: CodeModeTelemetry;
302
+ };
303
+
304
+ type CodeModeFailedResult = {
305
+ status: "failed";
306
+ error: string;
307
+ code?: CodeModeErrorCode;
308
+ output?: CodeModeOutput[];
309
+ telemetry: CodeModeTelemetry;
310
+ };
311
+ ```
312
+
313
+ `exec` returns `waiting` when the QuickJS VM suspends with resumable state. The
314
+ result includes a `runId` for `wait`.
315
+
316
+ `exec` returns `completed` only when the guest VM has no pending work and the
317
+ final value is JSON-compatible after Nodmix's output adapter runs.
318
+
319
+ ## `wait`
320
+
321
+ `wait` continues a suspended code-mode VM.
322
+
323
+ Input:
324
+
325
+ ```typescript
326
+ type CodeModeWaitInput = {
327
+ runId: string;
328
+ };
329
+ ```
330
+
331
+ The output is the same `CodeModeResult` union returned by `exec`.
332
+
333
+ `wait` exists because nested Nodmix tools can be slow, interactive, approval
334
+ gated, or stream partial updates. The model should not need to keep one long
335
+ `exec` call open while the host waits for external work.
336
+
337
+ QuickJS-WASI snapshot and restore is the v1 resume mechanism:
338
+
339
+ 1. `exec` evaluates code until completion, failure, or suspension.
340
+ 2. On suspension, Nodmix snapshots the QuickJS VM and records pending host
341
+ work.
342
+ 3. When pending work settles, `wait` restores the VM snapshot.
343
+ 4. Nodmix re-registers host callbacks by stable names.
344
+ 5. Nodmix delivers nested tool results into the restored VM.
345
+ 6. Nodmix drains QuickJS pending jobs.
346
+ 7. `wait` returns `completed`, `failed`, or another `waiting` result.
347
+
348
+ Snapshots are runtime state, not user artifacts. They are size-limited, expired,
349
+ and scoped to the run and session that created them.
350
+
351
+ `wait` fails when:
352
+
353
+ - `runId` is unknown.
354
+ - the snapshot expired.
355
+ - the parent run or session was aborted.
356
+ - the caller is not in the same run/session scope.
357
+ - QuickJS-WASI restore fails.
358
+ - restoring would exceed configured limits.
359
+
360
+ ## Guest runtime API
361
+
362
+ The guest runtime exposes a small global API:
363
+
364
+ ```typescript
365
+ declare const ALL_TOOLS: ToolCatalogEntry[];
366
+ declare const tools: ToolCatalog;
367
+
368
+ declare function text(value: unknown): void;
369
+ declare function json(value: unknown): void;
370
+ declare function yield_control(reason?: string): Promise<void>;
371
+ ```
372
+
373
+ `ALL_TOOLS` is compact metadata for the run-scoped catalog. It does not contain
374
+ full schemas by default.
375
+
376
+ ```typescript
377
+ type ToolCatalogEntry = {
378
+ id: string;
379
+ name: string;
380
+ label?: string;
381
+ description: string;
382
+ source: "nodmix" | "plugin" | "mcp" | "client";
383
+ sourceName?: string;
384
+ };
385
+ ```
386
+
387
+ Full schema is loaded only on demand:
388
+
389
+ ```typescript
390
+ type ToolCatalogEntryWithSchema = ToolCatalogEntry & {
391
+ parameters: unknown;
392
+ };
393
+ ```
394
+
395
+ Catalog helpers:
396
+
397
+ ```typescript
398
+ type ToolCatalog = {
399
+ search(query: string, options?: { limit?: number }): Promise<ToolCatalogEntry[]>;
400
+ describe(id: string): Promise<ToolCatalogEntryWithSchema>;
401
+ call(id: string, input?: unknown): Promise<unknown>;
402
+ [safeToolName: string]: unknown;
403
+ };
404
+ ```
405
+
406
+ Convenience tool functions are installed only for unambiguous safe names:
407
+
408
+ ```typescript
409
+ const files = await tools.search("read local file");
410
+ const fileRead = await tools.describe(files[0].id);
411
+ const content = await tools.call(fileRead.id, { path: "README.md" });
412
+
413
+ // If the hidden catalog has an unambiguous `web_search` entry:
414
+ const hits = await tools.web_search({ query: "Nodmix code mode" });
415
+ ```
416
+
417
+ The guest runtime must not expose host objects directly. Inputs and outputs cross
418
+ the bridge as JSON-compatible values with explicit size caps.
419
+
420
+ ## Output API
421
+
422
+ `text(value)` appends human-readable output to the `output` array.
423
+
424
+ `json(value)` appends a structured output item after JSON-compatible
425
+ serialization.
426
+
427
+ The guest code's final returned value becomes `value` in a `completed` result.
428
+
429
+ Output item:
430
+
431
+ ```typescript
432
+ type CodeModeOutput = { type: "text"; text: string } | { type: "json"; value: unknown };
433
+ ```
434
+
435
+ Output rules:
436
+
437
+ - output order matches guest calls
438
+ - output is capped by `maxOutputBytes`
439
+ - non-serializable values are converted to plain strings or errors
440
+ - binary values are not supported in v1
441
+ - images and files travel through ordinary Nodmix tools, not through the
442
+ code-mode bridge
443
+
444
+ ## Tool catalog
445
+
446
+ The hidden catalog includes tools after effective policy filtering:
447
+
448
+ 1. Nodmix core tools.
449
+ 2. Bundled plugin tools.
450
+ 3. External plugin tools.
451
+ 4. MCP tools.
452
+ 5. Client-provided tools for the current run.
453
+
454
+ Catalog ids are stable within one run and deterministic across equivalent tool
455
+ sets when possible.
456
+
457
+ Recommended id shape:
458
+
459
+ ```text
460
+ <source>:<owner>:<tool-name>
461
+ ```
462
+
463
+ Examples:
464
+
465
+ ```text
466
+ nodmix:core:message
467
+ plugin:browser:browser_request
468
+ mcp:github:create_issue
469
+ client:app:select_file
470
+ ```
471
+
472
+ The catalog omits code-mode control tools:
473
+
474
+ - `exec`
475
+ - `wait`
476
+ - `tool_search_code`
477
+ - `tool_search`
478
+ - `tool_describe`
479
+ - `tool_call`
480
+
481
+ This prevents recursion and keeps the model-facing contract narrow.
482
+
483
+ ## Tool Search interaction
484
+
485
+ Code mode supersedes the PI Tool Search model surface for runs where it is
486
+ active.
487
+
488
+ When `tools.codeMode.enabled` is true and code mode activates:
489
+
490
+ - Nodmix does not expose `tool_search_code`, `tool_search`, `tool_describe`,
491
+ or `tool_call` as model-visible tools.
492
+ - The same cataloging idea moves inside the guest runtime.
493
+ - The guest runtime receives compact `ALL_TOOLS` metadata and search, describe,
494
+ and call helpers.
495
+ - Nested calls dispatch through the same Nodmix executor path that Tool Search
496
+ uses.
497
+
498
+ The existing [Tool Search](/tools/tool-search) page describes the PI compact
499
+ catalog bridge. Code mode is the generic Nodmix alternative for runs that can
500
+ use `exec` and `wait`.
501
+
502
+ ## Tool names and collisions
503
+
504
+ The model-visible `exec` tool is the code-mode tool. If the normal Nodmix
505
+ shell `exec` tool is enabled, it is hidden from the model and cataloged like any
506
+ other tool.
507
+
508
+ Inside the guest runtime:
509
+
510
+ - `tools.call("nodmix:core:exec", input)` can call the shell exec tool if
511
+ policy allows it.
512
+ - `tools.exec(...)` is installed only if the shell exec catalog entry has an
513
+ unambiguous safe name.
514
+ - the code-mode `exec` tool is never recursively available through `tools`.
515
+
516
+ If two tools normalize to the same safe convenience name, Nodmix omits the
517
+ convenience function and requires `tools.call(id, input)`.
518
+
519
+ ## Nested tool execution
520
+
521
+ Every nested tool call crosses the host bridge and re-enters Nodmix.
522
+
523
+ Nested execution preserves:
524
+
525
+ - active agent id
526
+ - session id and session key
527
+ - sender and channel context
528
+ - sandbox policy
529
+ - approval policy
530
+ - plugin `before_tool_call` hooks
531
+ - abort signal
532
+ - streaming updates where available
533
+ - trajectory and audit events
534
+
535
+ Nested calls project into the transcript as real tool calls so support bundles
536
+ can show what happened. The projection identifies the parent code-mode tool call
537
+ and the nested tool id.
538
+
539
+ Parallel nested calls are allowed up to `maxPendingToolCalls`.
540
+
541
+ ## Runtime state
542
+
543
+ Each code-mode run has a state machine:
544
+
545
+ - `running`: VM is executing or nested calls are in flight.
546
+ - `waiting`: VM snapshot exists and can be resumed with `wait`.
547
+ - `completed`: final value returned; snapshot deleted.
548
+ - `failed`: error returned; snapshot deleted.
549
+ - `expired`: snapshot or pending state exceeded retention; cannot resume.
550
+ - `aborted`: parent run/session cancelled; snapshot deleted.
551
+
552
+ State is scoped by agent run, session, and tool call id. A `wait` call from a
553
+ different run or session fails.
554
+
555
+ Snapshot storage is bounded:
556
+
557
+ - maximum snapshot bytes per run
558
+ - maximum live snapshots per process
559
+ - snapshot TTL
560
+ - cleanup on run end
561
+ - cleanup on Gateway shutdown where persistence is not supported
562
+
563
+ ## QuickJS-WASI runtime
564
+
565
+ Nodmix loads `quickjs-wasi` as a direct dependency in the owning package. The
566
+ runtime does not rely on a transitive copy installed for proxy, PAC, or other
567
+ unrelated dependencies.
568
+
569
+ Runtime responsibilities:
570
+
571
+ - compile or load the QuickJS-WASI WebAssembly module
572
+ - create one isolated VM per code-mode run or resume
573
+ - register host callbacks by stable names
574
+ - set memory and interrupt limits
575
+ - evaluate JavaScript
576
+ - drain pending jobs
577
+ - snapshot suspended VM state
578
+ - restore snapshots for `wait`
579
+ - dispose VM handles and snapshots after terminal states
580
+
581
+ The runtime executes outside Nodmix's main event loop in a worker. A guest
582
+ infinite loop must not block the Gateway process indefinitely.
583
+
584
+ ## TypeScript
585
+
586
+ TypeScript support is a source transform only:
587
+
588
+ - accepted input: one TypeScript code string
589
+ - output: JavaScript string evaluated by QuickJS-WASI
590
+ - no typechecking
591
+ - no module resolution
592
+ - no `import` or `require` in v1
593
+ - diagnostics are returned as `failed` results
594
+
595
+ The TypeScript compiler is loaded lazily only for TypeScript cells. Plain
596
+ JavaScript cells and disabled code mode do not load the compiler.
597
+
598
+ The transform should preserve useful line numbers where feasible.
599
+
600
+ ## Security boundary
601
+
602
+ Model code is hostile. The runtime uses defense in depth:
603
+
604
+ - run QuickJS-WASI outside the main event loop
605
+ - load `quickjs-wasi` as a direct dependency, not through Codex or a transitive
606
+ package
607
+ - no filesystem, network, subprocess, module import, environment variables, or
608
+ host global objects in the guest
609
+ - use QuickJS memory and interrupt limits
610
+ - enforce parent-process wall-clock timeout
611
+ - enforce output, snapshot, log, and pending-call caps
612
+ - serialize host bridge values through a narrow JSON adapter
613
+ - convert host errors into plain guest errors, never host realm objects
614
+ - drop snapshots on timeout, abort, session end, or expiry
615
+ - reject recursive access to `exec`, `wait`, and Tool Search control tools
616
+ - prevent convenience-name collisions from shadowing catalog helpers
617
+
618
+ The sandbox is one security layer. Operators can still need OS-level hardening
619
+ for high-risk deployments.
620
+
621
+ ## Error codes
622
+
623
+ ```typescript
624
+ type CodeModeErrorCode =
625
+ | "runtime_unavailable"
626
+ | "invalid_config"
627
+ | "invalid_input"
628
+ | "unsupported_language"
629
+ | "typescript_transform_failed"
630
+ | "module_access_denied"
631
+ | "timeout"
632
+ | "memory_limit_exceeded"
633
+ | "output_limit_exceeded"
634
+ | "snapshot_limit_exceeded"
635
+ | "snapshot_expired"
636
+ | "snapshot_restore_failed"
637
+ | "too_many_pending_tool_calls"
638
+ | "nested_tool_failed"
639
+ | "aborted"
640
+ | "internal_error";
641
+ ```
642
+
643
+ Errors returned to the guest are plain data. Host `Error` instances, stack
644
+ objects, prototypes, and host functions do not cross into QuickJS.
645
+
646
+ ## Telemetry
647
+
648
+ Code mode reports:
649
+
650
+ - visible tool names sent to the model
651
+ - hidden catalog size and source breakdown
652
+ - `exec` and `wait` counts
653
+ - nested search, describe, and call counts
654
+ - nested tool ids called
655
+ - timeout, memory, snapshot, and output cap failures
656
+ - snapshot lifecycle events
657
+
658
+ Telemetry must not include secrets, raw environment values, or unredacted tool
659
+ inputs beyond existing Nodmix trajectory policy.
660
+
661
+ ## Debugging
662
+
663
+ Use targeted model transport logging when code mode behaves differently from a
664
+ normal tool run:
665
+
666
+ ```bash
667
+ NODMIX_DEBUG_CODE_MODE=1 \
668
+ NODMIX_DEBUG_MODEL_TRANSPORT=1 \
669
+ NODMIX_DEBUG_MODEL_PAYLOAD=tools \
670
+ NODMIX_DEBUG_SSE=events \
671
+ nodmix gateway
672
+ ```
673
+
674
+ For payload-shape debugging, use `NODMIX_DEBUG_MODEL_PAYLOAD=full-redacted`.
675
+ This logs a capped, redacted JSON snapshot of the model request; it should only
676
+ be used while debugging because prompts and message text can still appear.
677
+
678
+ For stream debugging, use `NODMIX_DEBUG_SSE=peek` to log the first five
679
+ redacted SSE events. Code mode also fails closed if the final provider payload
680
+ does not contain exactly `exec` and `wait` after the code-mode surface has
681
+ activated.
682
+
683
+ ## Implementation layout
684
+
685
+ Implementation units:
686
+
687
+ - config contract: `tools.codeMode`
688
+ - catalog builder: effective tools to compact entries and id map
689
+ - model-surface adapter: replace visible tools with `exec` and `wait`
690
+ - QuickJS-WASI runtime adapter: load, eval, snapshot, restore, dispose
691
+ - worker supervisor: timeout, abort, crash isolation
692
+ - bridge adapter: JSON-safe host callbacks and result delivery
693
+ - TypeScript transform adapter
694
+ - snapshot store: TTL, size caps, run/session scoping
695
+ - trajectory projection for nested tool calls
696
+ - telemetry counters and diagnostics
697
+
698
+ The implementation reuses catalog and executor concepts from Tool Search, but
699
+ does not use the `node:vm` child as the sandbox.
700
+
701
+ ## Validation checklist
702
+
703
+ Code mode coverage should prove:
704
+
705
+ - disabled config leaves existing tool exposure unchanged
706
+ - object config without `enabled: true` leaves code mode disabled
707
+ - enabled config exposes only `exec` and `wait` to the model when tools are
708
+ active for the run
709
+ - raw no-tool runs, `disableTools`, and empty allowlists do not trigger code-mode
710
+ payload enforcement
711
+ - all effective tools appear in `ALL_TOOLS`
712
+ - denied tools do not appear in `ALL_TOOLS`
713
+ - `tools.search`, `tools.describe`, and `tools.call` work for Nodmix tools
714
+ - Tool Search control tools are hidden from both the model surface and the hidden
715
+ catalog
716
+ - nested calls preserve approval and hook behavior
717
+ - shell `exec` is hidden from the model but callable by catalog id when allowed
718
+ - recursive code-mode `exec` and `wait` are not callable from guest code
719
+ - TypeScript input is transformed and evaluated without loading TypeScript on
720
+ disabled or JavaScript-only paths
721
+ - `import`, `require`, filesystem, network, and environment access fail
722
+ - infinite loops time out and cannot block the Gateway
723
+ - memory cap failures terminate the guest VM
724
+ - output and snapshot caps are enforced for completed and suspended calls
725
+ - `wait` resumes a suspended snapshot and returns the final value
726
+ - expired, aborted, wrong-session, and unknown `runId` values fail
727
+ - transcript replay and persistence preserve code-mode control calls
728
+ - transcript and telemetry show nested tool calls clearly
729
+
730
+ ## E2E test plan
731
+
732
+ Run these as integration or end-to-end tests when changing the runtime:
733
+
734
+ 1. Start a Gateway with `tools.codeMode.enabled: false`.
735
+ 2. Send an agent turn with a small direct tool set.
736
+ 3. Assert the model-visible tools are unchanged.
737
+ 4. Restart with `tools.codeMode.enabled: true`.
738
+ 5. Send an agent turn with Nodmix, plugin, MCP, and client test tools.
739
+ 6. Assert the model-visible tool list is exactly `exec`, `wait`.
740
+ 7. In `exec`, read `ALL_TOOLS` and assert the effective test tools are present.
741
+ 8. In `exec`, call `tools.search`, `tools.describe`, and `tools.call`.
742
+ 9. Assert denied tools are absent and cannot be called by guessed id.
743
+ 10. Start a nested tool call that resolves after `exec` returns `waiting`.
744
+ 11. Call `wait` and assert the restored VM receives the tool result.
745
+ 12. Assert the final answer contains output produced after restore.
746
+ 13. Assert timeout, abort, and snapshot expiry clean up runtime state.
747
+ 14. Export trajectory and assert nested calls are visible under the parent
748
+ code-mode call.
749
+
750
+ Docs-only changes to this page should still run `pnpm check:docs`.
751
+
752
+ ## Related
753
+
754
+ - [Tool Search](/tools/tool-search)
755
+ - [Agent runtimes](/concepts/agent-runtimes)
756
+ - [Exec tool](/tools/exec)
757
+ - [Code execution](/tools/code-execution)