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,128 @@
1
+ ---
2
+ summary: "Elevated exec mode: run commands outside the sandbox from a sandboxed agent"
3
+ read_when:
4
+ - Adjusting elevated mode defaults, allowlists, or slash command behavior
5
+ - Understanding how sandboxed agents can access the host
6
+ title: "Elevated mode"
7
+ ---
8
+
9
+ When an agent runs inside a sandbox, its `exec` commands are confined to the
10
+ sandbox environment. **Elevated mode** lets the agent break out and run commands
11
+ outside the sandbox instead, with configurable approval gates.
12
+
13
+ <Info>
14
+ Elevated mode only changes behavior when the agent is **sandboxed**. For
15
+ unsandboxed agents, exec already runs on the host.
16
+ </Info>
17
+
18
+ ## Directives
19
+
20
+ Control elevated mode per-session with slash commands:
21
+
22
+ | Directive | What it does |
23
+ | ---------------- | ---------------------------------------------------------------------- |
24
+ | `/elevated on` | Run outside the sandbox on the configured host path, keep approvals |
25
+ | `/elevated ask` | Same as `on` (alias) |
26
+ | `/elevated full` | Run outside the sandbox on the configured host path and skip approvals |
27
+ | `/elevated off` | Return to sandbox-confined execution |
28
+
29
+ Also available as `/elev on|off|ask|full`.
30
+
31
+ Send `/elevated` with no argument to see the current level.
32
+
33
+ ## How it works
34
+
35
+ <Steps>
36
+ <Step title="Check availability">
37
+ Elevated must be enabled in config and the sender must be on the allowlist:
38
+
39
+ ```json5
40
+ {
41
+ tools: {
42
+ elevated: {
43
+ enabled: true,
44
+ allowFrom: {
45
+ discord: ["user-id-123"],
46
+ whatsapp: ["+15555550123"],
47
+ },
48
+ },
49
+ },
50
+ }
51
+ ```
52
+
53
+ </Step>
54
+
55
+ <Step title="Set the level">
56
+ Send a directive-only message to set the session default:
57
+
58
+ ```
59
+ /elevated full
60
+ ```
61
+
62
+ Or use it inline (applies to that message only):
63
+
64
+ ```
65
+ /elevated on run the deployment script
66
+ ```
67
+
68
+ </Step>
69
+
70
+ <Step title="Commands run outside the sandbox">
71
+ With elevated active, `exec` calls leave the sandbox. The effective host is
72
+ `gateway` by default, or `node` when the configured/session exec target is
73
+ `node`. In `full` mode, exec approvals are skipped. In `on`/`ask` mode,
74
+ configured approval rules still apply.
75
+ </Step>
76
+ </Steps>
77
+
78
+ ## Resolution order
79
+
80
+ 1. **Inline directive** on the message (applies only to that message)
81
+ 2. **Session override** (set by sending a directive-only message)
82
+ 3. **Global default** (`agents.defaults.elevatedDefault` in config)
83
+
84
+ ## Availability and allowlists
85
+
86
+ - **Global gate**: `tools.elevated.enabled` (must be `true`)
87
+ - **Sender allowlist**: `tools.elevated.allowFrom` with per-channel lists
88
+ - **Per-agent gate**: `agents.list[].tools.elevated.enabled` (can only further restrict)
89
+ - **Per-agent allowlist**: `agents.list[].tools.elevated.allowFrom` (sender must match both global + per-agent)
90
+ - **Discord fallback**: if `tools.elevated.allowFrom.discord` is omitted, `channels.discord.allowFrom` is used as fallback
91
+ - **All gates must pass**; otherwise elevated is treated as unavailable
92
+
93
+ Allowlist entry formats:
94
+
95
+ | Prefix | Matches |
96
+ | ----------------------- | ------------------------------- |
97
+ | (none) | Sender ID, E.164, or From field |
98
+ | `name:` | Sender display name |
99
+ | `username:` | Sender username |
100
+ | `tag:` | Sender tag |
101
+ | `id:`, `from:`, `e164:` | Explicit identity targeting |
102
+
103
+ ## What elevated does not control
104
+
105
+ - **Tool policy**: if `exec` is denied by tool policy, elevated cannot override it.
106
+ - **Host selection policy**: elevated does not turn `auto` into a free cross-host override. It uses the configured/session exec target rules, choosing `node` only when the target is already `node`.
107
+ - **Separate from `/exec`**: the `/exec` directive adjusts per-session exec defaults for authorized senders and does not require elevated mode.
108
+
109
+ <Note>
110
+ The bash chat command (`!` prefix; `/bash` alias) is a separate gate that requires `tools.elevated` to be enabled in addition to its own `tools.bash.enabled` flag. Disabling elevated locks `!` shell commands out as well.
111
+ </Note>
112
+
113
+ ## Related
114
+
115
+ <CardGroup cols={2}>
116
+ <Card title="Exec tool" href="/tools/exec" icon="terminal">
117
+ Shell command execution from the agent.
118
+ </Card>
119
+ <Card title="Exec approvals" href="/tools/exec-approvals" icon="shield">
120
+ Approval and allowlist system for `exec`.
121
+ </Card>
122
+ <Card title="Sandboxing" href="/gateway/sandboxing" icon="box">
123
+ Gateway-level sandbox configuration.
124
+ </Card>
125
+ <Card title="Sandbox vs Tool Policy vs Elevated" href="/gateway/sandbox-vs-tool-policy-vs-elevated" icon="scale-balanced">
126
+ How the three gates compose during a tool call.
127
+ </Card>
128
+ </CardGroup>
@@ -0,0 +1,152 @@
1
+ ---
2
+ summary: "Exa AI search -- neural and keyword search with content extraction"
3
+ read_when:
4
+ - You want to use Exa for web_search
5
+ - You need an EXA_API_KEY
6
+ - You want neural search or content extraction
7
+ title: "Exa search"
8
+ ---
9
+
10
+ Nodmix supports [Exa AI](https://exa.ai/) as a `web_search` provider. Exa
11
+ offers neural, keyword, and hybrid search modes with built-in content
12
+ extraction (highlights, text, summaries).
13
+
14
+ ## Get an API key
15
+
16
+ <Steps>
17
+ <Step title="Create an account">
18
+ Sign up at [exa.ai](https://exa.ai/) and generate an API key from your
19
+ dashboard.
20
+ </Step>
21
+ <Step title="Store the key">
22
+ Set `EXA_API_KEY` in the Gateway environment, or configure via:
23
+
24
+ ```bash
25
+ nodmix configure --section web
26
+ ```
27
+
28
+ </Step>
29
+ </Steps>
30
+
31
+ ## Config
32
+
33
+ ```json5
34
+ {
35
+ plugins: {
36
+ entries: {
37
+ exa: {
38
+ config: {
39
+ webSearch: {
40
+ apiKey: "exa-...", // optional if EXA_API_KEY is set
41
+ baseUrl: "https://api.exa.ai", // optional; Nodmix appends /search
42
+ },
43
+ },
44
+ },
45
+ },
46
+ },
47
+ tools: {
48
+ web: {
49
+ search: {
50
+ provider: "exa",
51
+ },
52
+ },
53
+ },
54
+ }
55
+ ```
56
+
57
+ **Environment alternative:** set `EXA_API_KEY` in the Gateway environment.
58
+ For a gateway install, put it in `~/.nodmix/.env`.
59
+
60
+ ## Base URL override
61
+
62
+ Set `plugins.entries.exa.config.webSearch.baseUrl` when Exa search requests
63
+ should go through a compatible proxy or alternate Exa endpoint. Nodmix
64
+ normalizes bare hosts by prepending `https://` and appends `/search` unless the
65
+ path already ends there. The resolved endpoint is included in the search cache
66
+ key, so results from different Exa endpoints are not shared.
67
+
68
+ ## Tool parameters
69
+
70
+ <ParamField path="query" type="string" required>
71
+ Search query.
72
+ </ParamField>
73
+
74
+ <ParamField path="count" type="number">
75
+ Results to return (1–100).
76
+ </ParamField>
77
+
78
+ <ParamField path="type" type="'auto' | 'neural' | 'fast' | 'deep' | 'deep-reasoning' | 'instant'">
79
+ Search mode.
80
+ </ParamField>
81
+
82
+ <ParamField path="freshness" type="'day' | 'week' | 'month' | 'year'">
83
+ Time filter.
84
+ </ParamField>
85
+
86
+ <ParamField path="date_after" type="string">
87
+ Results after this date (`YYYY-MM-DD`).
88
+ </ParamField>
89
+
90
+ <ParamField path="date_before" type="string">
91
+ Results before this date (`YYYY-MM-DD`).
92
+ </ParamField>
93
+
94
+ <ParamField path="contents" type="object">
95
+ Content extraction options (see below).
96
+ </ParamField>
97
+
98
+ ### Content extraction
99
+
100
+ Exa can return extracted content alongside search results. Pass a `contents`
101
+ object to enable:
102
+
103
+ ```javascript
104
+ await web_search({
105
+ query: "transformer architecture explained",
106
+ type: "neural",
107
+ contents: {
108
+ text: true, // full page text
109
+ highlights: { numSentences: 3 }, // key sentences
110
+ summary: true, // AI summary
111
+ },
112
+ });
113
+ ```
114
+
115
+ | Contents option | Type | Description |
116
+ | --------------- | --------------------------------------------------------------------- | ---------------------- |
117
+ | `text` | `boolean \| { maxCharacters }` | Extract full page text |
118
+ | `highlights` | `boolean \| { maxCharacters, query, numSentences, highlightsPerUrl }` | Extract key sentences |
119
+ | `summary` | `boolean \| { query }` | AI-generated summary |
120
+
121
+ ### Search modes
122
+
123
+ | Mode | Description |
124
+ | ---------------- | --------------------------------- |
125
+ | `auto` | Exa picks the best mode (default) |
126
+ | `neural` | Semantic/meaning-based search |
127
+ | `fast` | Quick keyword search |
128
+ | `deep` | Thorough deep search |
129
+ | `deep-reasoning` | Deep search with reasoning |
130
+ | `instant` | Fastest results |
131
+
132
+ ## Notes
133
+
134
+ - If no `contents` option is provided, Exa defaults to `{ highlights: true }`
135
+ so results include key sentence excerpts
136
+ - Results preserve `highlightScores` and `summary` fields from the Exa API
137
+ response when available
138
+ - Result descriptions are resolved from highlights first, then summary, then
139
+ full text — whichever is available
140
+ - `freshness` and `date_after`/`date_before` cannot be combined — use one
141
+ time-filter mode
142
+ - Up to 100 results can be returned per query (subject to Exa search-type
143
+ limits)
144
+ - Results are cached for 15 minutes by default (configurable via
145
+ `cacheTtlMinutes`)
146
+ - Exa is an official API integration with structured JSON responses
147
+
148
+ ## Related
149
+
150
+ - [Web Search overview](/tools/web) -- all providers and auto-detection
151
+ - [Brave Search](/tools/brave-search) -- structured results with country/language filters
152
+ - [Perplexity Search](/tools/perplexity-search) -- structured results with domain filtering
@@ -0,0 +1,360 @@
1
+ ---
2
+ summary: "Advanced exec approvals: safe bins, interpreter binding, approval forwarding, native delivery"
3
+ read_when:
4
+ - Configuring safe bins or custom safe-bin profiles
5
+ - Forwarding approvals to Slack/Discord/Telegram or other chat channels
6
+ - Implementing a native approval client for a channel
7
+ title: "Exec approvals — advanced"
8
+ ---
9
+
10
+ Advanced exec-approval topics: the `safeBins` fast-path, interpreter/runtime
11
+ binding, and approval-forwarding to chat channels (including native delivery).
12
+ For the core policy and approval flow, see [Exec approvals](/tools/exec-approvals).
13
+
14
+ ## Safe bins (stdin-only)
15
+
16
+ `tools.exec.safeBins` defines a small list of **stdin-only** binaries (for
17
+ example `cut`) that can run in allowlist mode **without** explicit allowlist
18
+ entries. Safe bins reject positional file args and path-like tokens, so they
19
+ can only operate on the incoming stream. Treat this as a narrow fast-path for
20
+ stream filters, not a general trust list.
21
+
22
+ <Warning>
23
+ Do **not** add interpreter or runtime binaries (for example `python3`, `node`,
24
+ `ruby`, `bash`, `sh`, `zsh`) to `safeBins`. If a command can evaluate code,
25
+ execute subcommands, or read files by design, prefer explicit allowlist entries
26
+ and keep approval prompts enabled. Custom safe bins must define an explicit
27
+ profile in `tools.exec.safeBinProfiles.<bin>`.
28
+ </Warning>
29
+
30
+ Default safe bins:
31
+
32
+ [//]: # "SAFE_BIN_DEFAULTS:START"
33
+
34
+ `cut`, `uniq`, `head`, `tail`, `tr`, `wc`
35
+
36
+ [//]: # "SAFE_BIN_DEFAULTS:END"
37
+
38
+ `grep` and `sort` are not in the default list. If you opt in, keep explicit
39
+ allowlist entries for their non-stdin workflows. For `grep` in safe-bin mode,
40
+ provide the pattern with `-e`/`--regexp`; positional pattern form is rejected
41
+ so file operands cannot be smuggled as ambiguous positionals.
42
+
43
+ ### Argv validation and denied flags
44
+
45
+ Validation is deterministic from argv shape only (no host filesystem existence
46
+ checks), which prevents file-existence oracle behavior from allow/deny
47
+ differences. File-oriented options are denied for default safe bins; long
48
+ options are validated fail-closed (unknown flags and ambiguous abbreviations are
49
+ rejected).
50
+
51
+ Denied flags by safe-bin profile:
52
+
53
+ [//]: # "SAFE_BIN_DENIED_FLAGS:START"
54
+
55
+ - `grep`: `--dereference-recursive`, `--directories`, `--exclude-from`, `--file`, `--recursive`, `-R`, `-d`, `-f`, `-r`
56
+ - `jq`: `--argfile`, `--from-file`, `--library-path`, `--rawfile`, `--slurpfile`, `-L`, `-f`
57
+ - `sort`: `--compress-program`, `--files0-from`, `--output`, `--random-source`, `--temporary-directory`, `-T`, `-o`
58
+ - `wc`: `--files0-from`
59
+
60
+ [//]: # "SAFE_BIN_DENIED_FLAGS:END"
61
+
62
+ Safe bins also force argv tokens to be treated as **literal text** at execution
63
+ time (no globbing and no `$VARS` expansion) for stdin-only segments, so patterns
64
+ like `*` or `$HOME/...` cannot be used to smuggle file reads.
65
+
66
+ ### Trusted binary directories
67
+
68
+ Safe bins must resolve from trusted binary directories (system defaults plus
69
+ optional `tools.exec.safeBinTrustedDirs`). `PATH` entries are never auto-trusted.
70
+ Default trusted directories are intentionally minimal: `/bin`, `/usr/bin`. If
71
+ your safe-bin executable lives in package-manager/user paths (for example
72
+ `/opt/homebrew/bin`, `/usr/local/bin`, `/opt/local/bin`, `/snap/bin`), add them
73
+ explicitly to `tools.exec.safeBinTrustedDirs`.
74
+
75
+ ### Shell chaining, wrappers, and multiplexers
76
+
77
+ Shell chaining (`&&`, `||`, `;`) is allowed when every top-level segment
78
+ satisfies the allowlist (including safe bins or skill auto-allow). Redirections
79
+ remain unsupported in allowlist mode. Command substitution (`$()` / backticks) is
80
+ rejected during allowlist parsing, including inside double quotes; use single
81
+ quotes if you need literal `$()` text.
82
+
83
+ On macOS companion-app approvals, raw shell text containing shell control or
84
+ expansion syntax (`&&`, `||`, `;`, `|`, `` ` ``, `$`, `<`, `>`, `(`, `)`) is
85
+ treated as an allowlist miss unless the shell binary itself is allowlisted.
86
+
87
+ For shell wrappers (`bash|sh|zsh ... -c/-lc`), request-scoped env overrides are
88
+ reduced to a small explicit allowlist (`TERM`, `LANG`, `LC_*`, `COLORTERM`,
89
+ `NO_COLOR`, `FORCE_COLOR`).
90
+
91
+ For `allow-always` decisions in allowlist mode, known dispatch wrappers (`env`,
92
+ `nice`, `nohup`, `stdbuf`, `timeout`) persist the inner executable path instead
93
+ of the wrapper path. Shell multiplexers (`busybox`, `toybox`) are unwrapped for
94
+ shell applets (`sh`, `ash`, etc.) the same way. If a wrapper or multiplexer
95
+ cannot be safely unwrapped, no allowlist entry is persisted automatically.
96
+
97
+ If you allowlist interpreters like `python3` or `node`, prefer
98
+ `tools.exec.strictInlineEval=true` so inline eval still requires an explicit
99
+ approval. In strict mode, `allow-always` can still persist benign
100
+ interpreter/script invocations, but inline-eval carriers are not persisted
101
+ automatically.
102
+
103
+ ### Safe bins versus allowlist
104
+
105
+ | Topic | `tools.exec.safeBins` | Allowlist (`exec-approvals.json`) |
106
+ | ---------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------- |
107
+ | Goal | Auto-allow narrow stdin filters | Explicitly trust specific executables |
108
+ | Match type | Executable name + safe-bin argv policy | Resolved executable path glob, or bare command-name glob for PATH-invoked commands |
109
+ | Argument scope | Restricted by safe-bin profile and literal-token rules | Path match by default; optional `argPattern` can restrict parsed argv |
110
+ | Typical examples | `head`, `tail`, `tr`, `wc` | `jq`, `python3`, `node`, `ffmpeg`, custom CLIs |
111
+ | Best use | Low-risk text transforms in pipelines | Any tool with broader behavior or side effects |
112
+
113
+ Configuration location:
114
+
115
+ - `safeBins` comes from config (`tools.exec.safeBins` or per-agent `agents.list[].tools.exec.safeBins`).
116
+ - `safeBinTrustedDirs` comes from config (`tools.exec.safeBinTrustedDirs` or per-agent `agents.list[].tools.exec.safeBinTrustedDirs`).
117
+ - `safeBinProfiles` comes from config (`tools.exec.safeBinProfiles` or per-agent `agents.list[].tools.exec.safeBinProfiles`). Per-agent profile keys override global keys.
118
+ - allowlist entries live in host-local `~/.nodmix/exec-approvals.json` under `agents.<id>.allowlist` (or via Control UI / `nodmix approvals allowlist ...`).
119
+ - `nodmix security audit` warns with `tools.exec.safe_bins_interpreter_unprofiled` when interpreter/runtime bins appear in `safeBins` without explicit profiles.
120
+ - `nodmix doctor --fix` can scaffold missing custom `safeBinProfiles.<bin>` entries as `{}` (review and tighten afterward). Interpreter/runtime bins are not auto-scaffolded.
121
+
122
+ Custom profile example:
123
+
124
+ ```json5
125
+ {
126
+ tools: {
127
+ exec: {
128
+ safeBins: ["jq", "myfilter"],
129
+ safeBinProfiles: {
130
+ myfilter: {
131
+ minPositional: 0,
132
+ maxPositional: 0,
133
+ allowedValueFlags: ["-n", "--limit"],
134
+ deniedFlags: ["-f", "--file", "-c", "--command"],
135
+ },
136
+ },
137
+ },
138
+ },
139
+ }
140
+ ```
141
+
142
+ If you explicitly opt `jq` into `safeBins`, Nodmix still rejects the `env` builtin in safe-bin
143
+ mode so `jq -n env` cannot dump the host process environment without an explicit allowlist path
144
+ or approval prompt.
145
+
146
+ ## Interpreter/runtime commands
147
+
148
+ Approval-backed interpreter/runtime runs are intentionally conservative:
149
+
150
+ - Exact argv/cwd/env context is always bound.
151
+ - Direct shell script and direct runtime file forms are best-effort bound to one concrete local
152
+ file snapshot.
153
+ - Common package-manager wrapper forms that still resolve to one direct local file (for example
154
+ `pnpm exec`, `pnpm node`, `npm exec`, `npx`) are unwrapped before binding.
155
+ - If Nodmix cannot identify exactly one concrete local file for an interpreter/runtime command
156
+ (for example package scripts, eval forms, runtime-specific loader chains, or ambiguous multi-file
157
+ forms), approval-backed execution is denied instead of claiming semantic coverage it does not
158
+ have.
159
+ - For those workflows, prefer sandboxing, a separate host boundary, or an explicit trusted
160
+ allowlist/full workflow where the operator accepts the broader runtime semantics.
161
+
162
+ When approvals are required, the exec tool returns immediately with an approval id. Use that id to
163
+ correlate later system events (`Exec finished` / `Exec denied`). If no decision arrives before the
164
+ timeout, the request is treated as an approval timeout and surfaced as a denial reason.
165
+
166
+ ### Followup delivery behavior
167
+
168
+ After an approved async exec finishes, Nodmix sends a followup `agent` turn to the same session.
169
+
170
+ - If a valid external delivery target exists (deliverable channel plus target `to`), followup delivery uses that channel.
171
+ - In webchat-only or internal-session flows with no external target, followup delivery stays session-only (`deliver: false`).
172
+ - If a caller explicitly requests strict external delivery with no resolvable external channel, the request fails with `INVALID_REQUEST`.
173
+ - If `bestEffortDeliver` is enabled and no external channel can be resolved, delivery is downgraded to session-only instead of failing.
174
+
175
+ ## Approval forwarding to chat channels
176
+
177
+ You can forward exec approval prompts to any chat channel (including plugin channels) and approve
178
+ them with `/approve`. This uses the normal outbound delivery pipeline.
179
+
180
+ Config:
181
+
182
+ ```json5
183
+ {
184
+ approvals: {
185
+ exec: {
186
+ enabled: true,
187
+ mode: "session", // "session" | "targets" | "both"
188
+ agentFilter: ["main"],
189
+ sessionFilter: ["discord"], // substring or regex
190
+ targets: [
191
+ { channel: "slack", to: "U12345678" },
192
+ { channel: "telegram", to: "123456789" },
193
+ ],
194
+ },
195
+ },
196
+ }
197
+ ```
198
+
199
+ Reply in chat:
200
+
201
+ ```
202
+ /approve <id> allow-once
203
+ /approve <id> allow-always
204
+ /approve <id> deny
205
+ ```
206
+
207
+ The `/approve` command handles both exec approvals and plugin approvals. If the ID does not match a pending exec approval, it automatically checks plugin approvals instead.
208
+
209
+ ### Plugin approval forwarding
210
+
211
+ Plugin approval forwarding uses the same delivery pipeline as exec approvals but has its own
212
+ independent config under `approvals.plugin`. Enabling or disabling one does not affect the other.
213
+
214
+ ```json5
215
+ {
216
+ approvals: {
217
+ plugin: {
218
+ enabled: true,
219
+ mode: "targets",
220
+ agentFilter: ["main"],
221
+ targets: [
222
+ { channel: "slack", to: "U12345678" },
223
+ { channel: "telegram", to: "123456789" },
224
+ ],
225
+ },
226
+ },
227
+ }
228
+ ```
229
+
230
+ The config shape is identical to `approvals.exec`: `enabled`, `mode`, `agentFilter`,
231
+ `sessionFilter`, and `targets` work the same way.
232
+
233
+ Channels that support shared interactive replies render the same approval buttons for both exec and
234
+ plugin approvals. Channels without shared interactive UI fall back to plain text with `/approve`
235
+ instructions.
236
+ Plugin approval requests may restrict the available decisions. Approval surfaces use the request's
237
+ declared decision set, and the Gateway rejects attempts to submit a decision that was not offered.
238
+
239
+ ### Same-chat approvals on any channel
240
+
241
+ When an exec or plugin approval request originates from a deliverable chat surface, the same chat
242
+ can now approve it with `/approve` by default. This applies to channels such as Slack, Matrix, and
243
+ Microsoft Teams in addition to the existing Web UI and terminal UI flows.
244
+
245
+ This shared text-command path uses the normal channel auth model for that conversation. If the
246
+ originating chat can already send commands and receive replies, approval requests no longer need a
247
+ separate native delivery adapter just to stay pending.
248
+
249
+ Discord and Telegram also support same-chat `/approve`, but those channels still use their
250
+ resolved approver list for authorization even when native approval delivery is disabled.
251
+
252
+ For Telegram and other native approval clients that call the Gateway directly,
253
+ this fallback is intentionally bounded to "approval not found" failures. A real
254
+ exec approval denial/error does not silently retry as a plugin approval.
255
+
256
+ ### Native approval delivery
257
+
258
+ Some channels can also act as native approval clients. Native clients add approver DMs, origin-chat
259
+ fanout, and channel-specific interactive approval UX on top of the shared same-chat `/approve`
260
+ flow.
261
+
262
+ When native approval cards/buttons are available, that native UI is the primary
263
+ agent-facing path. The agent should not also echo a duplicate plain chat
264
+ `/approve` command unless the tool result says chat approvals are unavailable or
265
+ manual approval is the only remaining path.
266
+
267
+ If a native approval client is configured but no native runtime is active for
268
+ the originating channel, Nodmix keeps the local deterministic `/approve`
269
+ prompt visible. If the native runtime is active and attempts delivery but no
270
+ target receives the card, Nodmix sends a same-chat fallback notice with the
271
+ exact `/approve <id> <decision>` command so the request can still be resolved.
272
+
273
+ Generic model:
274
+
275
+ - host exec policy still decides whether exec approval is required
276
+ - `approvals.exec` controls forwarding approval prompts to other chat destinations
277
+ - `channels.<channel>.execApprovals` controls whether that channel acts as a native approval client
278
+
279
+ Native approval clients auto-enable DM-first delivery when all of these are true:
280
+
281
+ - the channel supports native approval delivery
282
+ - approvers can be resolved from explicit `execApprovals.approvers` or owner
283
+ identity such as `commands.ownerAllowFrom`
284
+ - `channels.<channel>.execApprovals.enabled` is unset or `"auto"`
285
+
286
+ Set `enabled: false` to disable a native approval client explicitly. Set `enabled: true` to force
287
+ it on when approvers resolve. Public origin-chat delivery stays explicit through
288
+ `channels.<channel>.execApprovals.target`.
289
+
290
+ FAQ: [Why are there two exec approval configs for chat approvals?](/help/faq-first-run#why-are-there-two-exec-approval-configs-for-chat-approvals)
291
+
292
+ - Discord: `channels.discord.execApprovals.*`
293
+ - Slack: `channels.slack.execApprovals.*`
294
+ - Telegram: `channels.telegram.execApprovals.*`
295
+
296
+ These native approval clients add DM routing and optional channel fanout on top of the shared
297
+ same-chat `/approve` flow and shared approval buttons.
298
+
299
+ Shared behavior:
300
+
301
+ - Slack, Matrix, Microsoft Teams, and similar deliverable chats use the normal channel auth model
302
+ for same-chat `/approve`
303
+ - when a native approval client auto-enables, the default native delivery target is approver DMs
304
+ - for Discord and Telegram, only resolved approvers can approve or deny
305
+ - Discord approvers can be explicit (`execApprovals.approvers`) or inferred from `commands.ownerAllowFrom`
306
+ - Telegram approvers can be explicit (`execApprovals.approvers`) or inferred from `commands.ownerAllowFrom`
307
+ - Slack approvers can be explicit (`execApprovals.approvers`) or inferred from `commands.ownerAllowFrom`
308
+ - Slack native buttons preserve approval id kind, so `plugin:` ids can resolve plugin approvals
309
+ without a second Slack-local fallback layer
310
+ - Matrix native DM/channel routing and reaction shortcuts handle both exec and plugin approvals;
311
+ plugin authorization still comes from `channels.matrix.dm.allowFrom`
312
+ - Matrix native prompts include `com.nodmix.approval` custom event content on the first prompt
313
+ event so Nodmix-aware Matrix clients can read structured approval state while stock clients
314
+ keep the plain-text `/approve` fallback
315
+ - the requester does not need to be an approver
316
+ - the originating chat can approve directly with `/approve` when that chat already supports commands and replies
317
+ - native Discord approval buttons route by approval id kind: `plugin:` ids go
318
+ straight to plugin approvals, everything else goes to exec approvals
319
+ - native Telegram approval buttons follow the same bounded exec-to-plugin fallback as `/approve`
320
+ - when native `target` enables origin-chat delivery, approval prompts include the command text
321
+ - pending exec approvals expire after 30 minutes by default
322
+ - if no operator UI or configured approval client can accept the request, the prompt falls back to `askFallback`
323
+
324
+ Sensitive owner-only group commands such as `/diagnostics` and `/export-trajectory` use private
325
+ owner routing for approval prompts and final results. Nodmix first tries a private route on the
326
+ same surface where the owner ran the command. If that surface has no private owner route, it falls
327
+ back to the first available owner route from `commands.ownerAllowFrom`, so a Discord group command
328
+ can still send the approval and result to the owner's Telegram DM when Telegram is the configured
329
+ primary private interface. The group chat only gets a short acknowledgement.
330
+
331
+ Telegram defaults to approver DMs (`target: "dm"`). You can switch to `channel` or `both` when you
332
+ want approval prompts to appear in the originating Telegram chat/topic as well. For Telegram forum
333
+ topics, Nodmix preserves the topic for the approval prompt and the post-approval follow-up.
334
+
335
+ See:
336
+
337
+ - [Discord](/channels/discord)
338
+ - [Telegram](/channels/telegram)
339
+
340
+ ### macOS IPC flow
341
+
342
+ ```
343
+ Gateway -> Node Service (WS)
344
+ | IPC (UDS + token + HMAC + TTL)
345
+ v
346
+ Mac App (UI + approvals + system.run)
347
+ ```
348
+
349
+ Security notes:
350
+
351
+ - Unix socket mode `0600`, token stored in `exec-approvals.json`.
352
+ - Same-UID peer check.
353
+ - Challenge/response (nonce + HMAC token + request hash) + short TTL.
354
+
355
+ ## Related
356
+
357
+ - [Exec approvals](/tools/exec-approvals) — core policy and approval flow
358
+ - [Exec tool](/tools/exec)
359
+ - [Elevated mode](/tools/elevated)
360
+ - [Skills](/tools/skills) — skill-backed auto-allow behavior