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,355 @@
1
+ ---
2
+ summary: "Run Nodmix on local LLMs (LM Studio, vLLM, LiteLLM, custom OpenAI endpoints)"
3
+ read_when:
4
+ - You want to serve models from your own GPU box
5
+ - You are wiring LM Studio or an OpenAI-compatible proxy
6
+ - You need the safest local model guidance
7
+ title: "Local models"
8
+ ---
9
+
10
+ Local models are doable. They also raise the bar on hardware, context size, and prompt-injection defense — small or aggressively quantized cards truncate context and leak safety. This page is the opinionated guide for higher-end local stacks and custom OpenAI-compatible local servers. For lowest-friction onboarding, start with [LM Studio](/providers/lmstudio) or [Ollama](/providers/ollama) and `nodmix onboard`.
11
+
12
+ For local servers that should start only when a selected model needs them, see
13
+ [Local model services](/gateway/local-model-services).
14
+
15
+ ## Hardware floor
16
+
17
+ Aim high: **≥2 maxed-out Mac Studios or an equivalent GPU rig (~$30k+)** for a comfortable agent loop. A single **24 GB** GPU works only for lighter prompts at higher latency. Always run the **largest / full-size variant you can host**; small or heavily quantized checkpoints raise prompt-injection risk (see [Security](/gateway/security)).
18
+
19
+ ## Pick a backend
20
+
21
+ | Backend | Use when |
22
+ | ---------------------------------------------------- | --------------------------------------------------------------------------- |
23
+ | [ds4](/providers/ds4) | Local DeepSeek V4 Flash on macOS Metal with OpenAI-compatible tool calls |
24
+ | [LM Studio](/providers/lmstudio) | First-time local setup, GUI loader, native Responses API |
25
+ | LiteLLM / OAI-proxy / custom OpenAI-compatible proxy | You front another model API and need Nodmix to treat it as OpenAI |
26
+ | MLX / vLLM / SGLang | High-throughput self-hosted serving with an OpenAI-compatible HTTP endpoint |
27
+ | [Ollama](/providers/ollama) | CLI workflow, model library, hands-off systemd service |
28
+
29
+ Use Responses API (`api: "openai-responses"`) when the backend supports it (LM Studio does). Otherwise stick to Chat Completions (`api: "openai-completions"`).
30
+
31
+ <Warning>
32
+ **WSL2 + Ollama + NVIDIA/CUDA users:** The official Ollama Linux installer enables a systemd service with `Restart=always`. On WSL2 GPU setups, autostart can reload the last model during boot and pin host memory. If your WSL2 VM repeatedly restarts after enabling Ollama, see [WSL2 crash loop](/providers/ollama#wsl2-crash-loop-repeated-reboots).
33
+ </Warning>
34
+
35
+ ## Recommended: LM Studio + large local model (Responses API)
36
+
37
+ Best current local stack. Load a large model in LM Studio (for example, a full-size Qwen, DeepSeek, or Llama build), enable the local server (default `http://127.0.0.1:1234`), and use Responses API to keep reasoning separate from final text.
38
+
39
+ ```json5
40
+ {
41
+ agents: {
42
+ defaults: {
43
+ model: { primary: "lmstudio/my-local-model" },
44
+ models: {
45
+ "anthropic/claude-opus-4-6": { alias: "Opus" },
46
+ "lmstudio/my-local-model": { alias: "Local" },
47
+ },
48
+ },
49
+ },
50
+ models: {
51
+ mode: "merge",
52
+ providers: {
53
+ lmstudio: {
54
+ baseUrl: "http://127.0.0.1:1234/v1",
55
+ apiKey: "lmstudio",
56
+ api: "openai-responses",
57
+ models: [
58
+ {
59
+ id: "my-local-model",
60
+ name: "Local Model",
61
+ reasoning: false,
62
+ input: ["text"],
63
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
64
+ contextWindow: 196608,
65
+ maxTokens: 8192,
66
+ },
67
+ ],
68
+ },
69
+ },
70
+ },
71
+ }
72
+ ```
73
+
74
+ **Setup checklist**
75
+
76
+ - Install LM Studio: [https://lmstudio.ai](https://lmstudio.ai)
77
+ - In LM Studio, download the **largest model build available** (avoid "small"/heavily quantized variants), start the server, confirm `http://127.0.0.1:1234/v1/models` lists it.
78
+ - Replace `my-local-model` with the actual model ID shown in LM Studio.
79
+ - Keep the model loaded; cold-load adds startup latency.
80
+ - Adjust `contextWindow`/`maxTokens` if your LM Studio build differs.
81
+ - For WhatsApp, stick to Responses API so only final text is sent.
82
+
83
+ Keep hosted models configured even when running local; use `models.mode: "merge"` so fallbacks stay available.
84
+
85
+ ### Hybrid config: hosted primary, local fallback
86
+
87
+ ```json5
88
+ {
89
+ agents: {
90
+ defaults: {
91
+ model: {
92
+ primary: "anthropic/claude-sonnet-4-6",
93
+ fallbacks: ["lmstudio/my-local-model", "anthropic/claude-opus-4-6"],
94
+ },
95
+ models: {
96
+ "anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
97
+ "lmstudio/my-local-model": { alias: "Local" },
98
+ "anthropic/claude-opus-4-6": { alias: "Opus" },
99
+ },
100
+ },
101
+ },
102
+ models: {
103
+ mode: "merge",
104
+ providers: {
105
+ lmstudio: {
106
+ baseUrl: "http://127.0.0.1:1234/v1",
107
+ apiKey: "lmstudio",
108
+ api: "openai-responses",
109
+ models: [
110
+ {
111
+ id: "my-local-model",
112
+ name: "Local Model",
113
+ reasoning: false,
114
+ input: ["text"],
115
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
116
+ contextWindow: 196608,
117
+ maxTokens: 8192,
118
+ },
119
+ ],
120
+ },
121
+ },
122
+ },
123
+ }
124
+ ```
125
+
126
+ ### Local-first with hosted safety net
127
+
128
+ Swap the primary and fallback order; keep the same providers block and `models.mode: "merge"` so you can fall back to Sonnet or Opus when the local box is down.
129
+
130
+ ### Regional hosting / data routing
131
+
132
+ - Hosted MiniMax/Kimi/GLM variants also exist on OpenRouter with region-pinned endpoints (e.g., US-hosted). Pick the regional variant there to keep traffic in your chosen jurisdiction while still using `models.mode: "merge"` for Anthropic/OpenAI fallbacks.
133
+ - Local-only remains the strongest privacy path; hosted regional routing is the middle ground when you need provider features but want control over data flow.
134
+
135
+ ## Other OpenAI-compatible local proxies
136
+
137
+ MLX (`mlx_lm.server`), vLLM, SGLang, LiteLLM, OAI-proxy, or custom
138
+ gateways work if they expose an OpenAI-style `/v1/chat/completions`
139
+ endpoint. Use the Chat Completions adapter unless the backend explicitly
140
+ documents `/v1/responses` support. Replace the provider block above with your
141
+ endpoint and model ID:
142
+
143
+ ```json5
144
+ {
145
+ agents: {
146
+ defaults: {
147
+ model: { primary: "local/my-local-model" },
148
+ },
149
+ },
150
+ models: {
151
+ mode: "merge",
152
+ providers: {
153
+ local: {
154
+ baseUrl: "http://127.0.0.1:8000/v1",
155
+ apiKey: "sk-local",
156
+ api: "openai-completions",
157
+ timeoutSeconds: 300,
158
+ models: [
159
+ {
160
+ id: "my-local-model",
161
+ name: "Local Model",
162
+ reasoning: false,
163
+ input: ["text"],
164
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
165
+ contextWindow: 120000,
166
+ maxTokens: 8192,
167
+ },
168
+ ],
169
+ },
170
+ },
171
+ },
172
+ }
173
+ ```
174
+
175
+ If `api` is omitted on a custom provider with a `baseUrl`, Nodmix defaults to
176
+ `openai-completions`. Custom/local provider entries trust their exact configured
177
+ `baseUrl` origin for guarded model requests, including loopback, LAN, tailnet,
178
+ and private DNS hosts. Requests to other private origins still need
179
+ `request.allowPrivateNetwork: true`; metadata/link-local origins remain blocked
180
+ without explicit opt-in. Set it to `false` to opt out of exact-origin trust.
181
+
182
+ The `models.providers.<id>.models[].id` value is provider-local. Do not
183
+ include the provider prefix there. For example, an MLX server started with
184
+ `mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit` should use this
185
+ catalog id and model ref:
186
+
187
+ - `models.providers.mlx.models[].id: "mlx-community/Qwen3-30B-A3B-6bit"`
188
+ - `agents.defaults.model.primary: "mlx/mlx-community/Qwen3-30B-A3B-6bit"`
189
+
190
+ Set `input: ["text", "image"]` on local or proxied vision models so image
191
+ attachments are injected into agent turns. Interactive custom-provider
192
+ onboarding infers common vision model IDs and asks only for unknown names.
193
+ Non-interactive onboarding uses the same inference; use `--custom-image-input`
194
+ for unknown vision IDs or `--custom-text-input` when a known-looking model is
195
+ text-only behind your endpoint.
196
+
197
+ Keep `models.mode: "merge"` so hosted models stay available as fallbacks.
198
+ Use `models.providers.<id>.timeoutSeconds` for slow local or remote model
199
+ servers before raising `agents.defaults.timeoutSeconds`. The provider timeout
200
+ applies only to model HTTP requests, including connect, headers, body streaming,
201
+ and the total guarded-fetch abort. If the agent or run timeout is lower, raise
202
+ that ceiling too because provider timeouts cannot extend the whole agent run.
203
+
204
+ <Note>
205
+ For custom OpenAI-compatible providers, persisting a non-secret local marker such as `apiKey: "ollama-local"` is accepted when `baseUrl` resolves to loopback, a private LAN, `.local`, or a bare hostname. Nodmix treats it as a valid local credential instead of reporting a missing key. Use a real value for any provider that accepts a public hostname.
206
+ </Note>
207
+
208
+ Behavior note for local/proxied `/v1` backends:
209
+
210
+ - Nodmix treats these as proxy-style OpenAI-compatible routes, not native
211
+ OpenAI endpoints
212
+ - native OpenAI-only request shaping does not apply here: no
213
+ `service_tier`, no Responses `store`, no OpenAI reasoning-compat payload
214
+ shaping, and no prompt-cache hints
215
+ - hidden Nodmix attribution headers (`originator`, `version`, `User-Agent`)
216
+ are not injected on these custom proxy URLs
217
+
218
+ Compatibility notes for stricter OpenAI-compatible backends:
219
+
220
+ - Some servers accept only string `messages[].content` on Chat Completions, not
221
+ structured content-part arrays. Set
222
+ `models.providers.<provider>.models[].compat.requiresStringContent: true` for
223
+ those endpoints.
224
+ - Some local models emit standalone bracketed tool requests as text, such as
225
+ `[tool_name]` followed by JSON and `[END_TOOL_REQUEST]`. Nodmix promotes
226
+ those into real tool calls only when the name exactly matches a registered
227
+ tool for the turn; otherwise the block is treated as unsupported text and is
228
+ hidden from user-visible replies.
229
+ - If a model emits JSON, XML, or ReAct-style text that looks like a tool call
230
+ but the provider did not emit a structured invocation, Nodmix leaves it as
231
+ text and logs a warning with the run id, provider/model, detected pattern, and
232
+ tool name when available. Treat that as provider/model tool-call
233
+ incompatibility, not a completed tool run.
234
+ - If tools appear as assistant text instead of running, for example raw JSON,
235
+ XML, ReAct syntax, or an empty `tool_calls` array in the provider response,
236
+ first verify the server is using a tool-call-capable chat template/parser. For
237
+ OpenAI-compatible Chat Completions backends whose parser works only when tool
238
+ use is forced, set a per-model request override instead of relying on text
239
+ parsing:
240
+
241
+ ```json5
242
+ {
243
+ agents: {
244
+ defaults: {
245
+ models: {
246
+ "local/my-local-model": {
247
+ params: {
248
+ extra_body: {
249
+ tool_choice: "required",
250
+ },
251
+ },
252
+ },
253
+ },
254
+ },
255
+ },
256
+ }
257
+ ```
258
+
259
+ Use this only for models/sessions where every normal turn should call a tool.
260
+ It overrides Nodmix's default proxy value of `tool_choice: "auto"`.
261
+ Replace `local/my-local-model` with the exact provider/model ref shown by
262
+ `nodmix models list`.
263
+
264
+ ```bash
265
+ nodmix config set agents.defaults.models '{"local/my-local-model":{"params":{"extra_body":{"tool_choice":"required"}}}}' --strict-json --merge
266
+ ```
267
+
268
+ - If a custom OpenAI-compatible model accepts OpenAI reasoning efforts beyond
269
+ the built-in profile, declare them on the model compat block. Adding `"xhigh"`
270
+ here makes `/think xhigh`, session pickers, Gateway validation, and `llm-task`
271
+ validation expose the level for that configured provider/model ref:
272
+
273
+ ```json5
274
+ {
275
+ models: {
276
+ providers: {
277
+ local: {
278
+ baseUrl: "http://127.0.0.1:8000/v1",
279
+ apiKey: "sk-local",
280
+ api: "openai-responses",
281
+ models: [
282
+ {
283
+ id: "gpt-5.4",
284
+ name: "GPT 5.4 via local proxy",
285
+ reasoning: true,
286
+ input: ["text"],
287
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
288
+ contextWindow: 196608,
289
+ maxTokens: 8192,
290
+ compat: {
291
+ supportedReasoningEfforts: ["low", "medium", "high", "xhigh"],
292
+ reasoningEffortMap: { xhigh: "xhigh" },
293
+ },
294
+ },
295
+ ],
296
+ },
297
+ },
298
+ },
299
+ }
300
+ ```
301
+
302
+ ## Smaller or stricter backends
303
+
304
+ If the model loads cleanly but full agent turns misbehave, work top-down — confirm transport first, then narrow the surface.
305
+
306
+ 1. **Confirm the local model itself responds.** No tools, no agent context:
307
+
308
+ ```bash
309
+ nodmix infer model run --local --model <provider/model> --prompt "Reply with exactly: pong" --json
310
+ ```
311
+
312
+ 2. **Confirm Gateway routing.** Sends only the supplied prompt — skips transcript, AGENTS bootstrap, context-engine assembly, tools, and bundled MCP servers, but still exercises Gateway routing, auth, and provider selection:
313
+
314
+ ```bash
315
+ nodmix infer model run --gateway --model <provider/model> --prompt "Reply with exactly: pong" --json
316
+ ```
317
+
318
+ 3. **Try lean mode.** If both probes pass but real agent turns fail with malformed tool calls or oversized prompts, enable `agents.defaults.experimental.localModelLean: true`. It drops the three heaviest default tools (`browser`, `cron`, `message`) so the prompt shape is smaller and less brittle. See [Experimental Features → Local model lean mode](/concepts/experimental-features#local-model-lean-mode) for the full explanation, when to use it, and how to confirm it is on.
319
+
320
+ 4. **Disable tools entirely as a last resort.** If lean mode is not enough, set `models.providers.<provider>.models[].compat.supportsTools: false` for that model entry. The agent will then operate without tool calls on that model.
321
+
322
+ 5. **Past that, the bottleneck is upstream.** If the backend still fails only on larger Nodmix runs after lean mode and `supportsTools: false`, the remaining issue is usually upstream model or server capacity — context window, GPU memory, kv-cache eviction, or a backend bug. It is not Nodmix's transport layer at that point.
323
+
324
+ ## Troubleshooting
325
+
326
+ - Gateway can reach the proxy? `curl http://127.0.0.1:1234/v1/models`.
327
+ - LM Studio model unloaded? Reload; cold start is a common "hanging" cause.
328
+ - Local server says `terminated`, `ECONNRESET`, or closes the stream mid-turn?
329
+ Nodmix records a low-cardinality `model.call.error.failureKind` plus the
330
+ Nodmix process RSS/heap snapshot in diagnostics. For LM Studio/Ollama
331
+ memory pressure, match that timestamp against the server log or macOS crash /
332
+ jetsam log to confirm whether the model server was killed.
333
+ - Nodmix derives context-window preflight thresholds from the detected model window, or from the uncapped model window when `agents.defaults.contextTokens` lowers the effective window. It warns below 20% with an **8k** floor. Hard blocks use the 10% threshold with a **4k** floor, capped to the effective context window so oversized model metadata cannot reject an otherwise valid user cap. If you hit that preflight, raise the server/model context limit or choose a larger model.
334
+ - Context errors? Lower `contextWindow` or raise your server limit.
335
+ - OpenAI-compatible server returns `messages[].content ... expected a string`?
336
+ Add `compat.requiresStringContent: true` on that model entry.
337
+ - OpenAI-compatible server returns `validation.keys` or says message entries only allow `role` and `content`?
338
+ Add `compat.strictMessageKeys: true` on that model entry.
339
+ - Direct tiny `/v1/chat/completions` calls work, but `nodmix infer model run --local`
340
+ fails on Gemma or another local model? Check the provider URL, model ref, auth
341
+ marker, and server logs first; local `model run` does not include agent tools.
342
+ If local `model run` succeeds but larger agent turns fail, reduce the agent
343
+ tool surface with `localModelLean` or `compat.supportsTools: false`.
344
+ - Tool calls show up as raw JSON/XML/ReAct text, or the provider returns an
345
+ empty `tool_calls` array? Do not add a proxy that blindly converts assistant
346
+ text into tool execution. Fix the server chat template/parser first. If the
347
+ model only works when tool use is forced, add the per-model
348
+ `params.extra_body.tool_choice: "required"` override above and use that model
349
+ entry only for sessions where a tool call is expected on every turn.
350
+ - Safety: local models skip provider-side filters; keep agents narrow and compaction on to limit prompt injection blast radius.
351
+
352
+ ## Related
353
+
354
+ - [Configuration reference](/gateway/configuration-reference)
355
+ - [Model failover](/concepts/model-failover)
@@ -0,0 +1,149 @@
1
+ ---
2
+ summary: "Logging surfaces, file logs, WS log styles, and console formatting"
3
+ read_when:
4
+ - Changing logging output or formats
5
+ - Debugging CLI or gateway output
6
+ title: "Gateway logging"
7
+ ---
8
+
9
+ # Logging
10
+
11
+ For a user-facing overview (CLI + Control UI + config), see [/logging](/logging).
12
+
13
+ Nodmix has two log "surfaces":
14
+
15
+ - **Console output** (what you see in the terminal / Debug UI).
16
+ - **File logs** (JSON lines) written by the gateway logger.
17
+
18
+ At startup, the Gateway logs the resolved default agent model together with the
19
+ mode defaults that affect new sessions, for example:
20
+
21
+ ```text
22
+ agent model: openai-codex/gpt-5.5 (thinking=medium, fast=on)
23
+ ```
24
+
25
+ `thinking` comes from the default agent, model params, or global agent default;
26
+ when it is unset, the startup summary shows `medium`. `fast` comes from the
27
+ default agent or model `fastMode` params.
28
+
29
+ ## File-based logger
30
+
31
+ - Default rolling log file is under `/tmp/nodmix/` (one file per day): `nodmix-YYYY-MM-DD.log`
32
+ - Date uses the gateway host's local timezone.
33
+ - Active log files rotate at `logging.maxFileBytes` (default: 100 MB), keeping
34
+ up to five numbered archives and continuing to write a fresh active file.
35
+ - The log file path and level can be configured via `~/.nodmix/nodmix.json`:
36
+ - `logging.file`
37
+ - `logging.level`
38
+
39
+ The file format is one JSON object per line.
40
+
41
+ Talk, realtime voice, and managed-room code paths use the shared file logger for
42
+ bounded lifecycle records. These records are intended for operational debugging
43
+ and OTLP log export; transcript text, audio payloads, turn ids, call ids, and
44
+ provider item ids are not copied into the log record.
45
+
46
+ The Control UI Logs tab tails this file via the gateway (`logs.tail`).
47
+ CLI can do the same:
48
+
49
+ ```bash
50
+ nodmix logs --follow
51
+ ```
52
+
53
+ **Verbose vs. log levels**
54
+
55
+ - **File logs** are controlled exclusively by `logging.level`.
56
+ - `--verbose` only affects **console verbosity** (and WS log style); it does **not**
57
+ raise the file log level.
58
+ - To capture verbose-only details in file logs, set `logging.level` to `debug` or
59
+ `trace`.
60
+ - Trace logging also includes diagnostic timing summaries for selected hot paths,
61
+ such as plugin tool factory preparation. See
62
+ [/tools/plugin#slow-plugin-tool-setup](/tools/plugin#slow-plugin-tool-setup).
63
+
64
+ ## Console capture
65
+
66
+ The CLI captures `console.log/info/warn/error/debug/trace` and writes them to file logs,
67
+ while still printing to stdout/stderr.
68
+
69
+ You can tune console verbosity independently via:
70
+
71
+ - `logging.consoleLevel` (default `info`)
72
+ - `logging.consoleStyle` (`pretty` | `compact` | `json`)
73
+
74
+ ## Redaction
75
+
76
+ Nodmix can mask sensitive tokens before log or transcript output leaves the
77
+ process. This logging redaction policy is applied at console, file-log, OTLP
78
+ log-record, and session transcript text sinks, so matching secret values are
79
+ masked before JSONL lines or messages are written to disk.
80
+
81
+ - `logging.redactSensitive`: `off` | `tools` (default: `tools`)
82
+ - `logging.redactPatterns`: array of regex strings (overrides defaults)
83
+ - Use raw regex strings (auto `gi`), or `/pattern/flags` if you need custom flags.
84
+ - Matches are masked by keeping the first 6 + last 4 chars (length >= 18), otherwise `***`.
85
+ - Defaults cover common key assignments, CLI flags, JSON fields, bearer headers, PEM blocks, popular token prefixes, and payment credential field names such as card number, CVC/CVV, shared payment token, and payment credential.
86
+
87
+ Some safety boundaries always redact regardless of `logging.redactSensitive`.
88
+ That includes Control UI tool-call events, `sessions_history` tool output,
89
+ diagnostics support exports, provider error observations, exec approval command
90
+ display, and Gateway WebSocket protocol logs. These surfaces may still use
91
+ `logging.redactPatterns` as additional patterns, but `redactSensitive: "off"`
92
+ does not make them emit raw secrets.
93
+
94
+ ## Gateway WebSocket logs
95
+
96
+ The gateway prints WebSocket protocol logs in two modes:
97
+
98
+ - **Normal mode (no `--verbose`)**: only "interesting" RPC results are printed:
99
+ - errors (`ok=false`)
100
+ - slow calls (default threshold: `>= 50ms`)
101
+ - parse errors
102
+ - **Verbose mode (`--verbose`)**: prints all WS request/response traffic.
103
+
104
+ ### WS log style
105
+
106
+ `nodmix gateway` supports a per-gateway style switch:
107
+
108
+ - `--ws-log auto` (default): normal mode is optimized; verbose mode uses compact output
109
+ - `--ws-log compact`: compact output (paired request/response) when verbose
110
+ - `--ws-log full`: full per-frame output when verbose
111
+ - `--compact`: alias for `--ws-log compact`
112
+
113
+ Examples:
114
+
115
+ ```bash
116
+ # optimized (only errors/slow)
117
+ nodmix gateway
118
+
119
+ # show all WS traffic (paired)
120
+ nodmix gateway --verbose --ws-log compact
121
+
122
+ # show all WS traffic (full meta)
123
+ nodmix gateway --verbose --ws-log full
124
+ ```
125
+
126
+ ## Console formatting (subsystem logging)
127
+
128
+ The console formatter is **TTY-aware** and prints consistent, prefixed lines.
129
+ Subsystem loggers keep output grouped and scannable.
130
+
131
+ Behavior:
132
+
133
+ - **Subsystem prefixes** on every line (e.g. `[gateway]`, `[canvas]`, `[tailscale]`)
134
+ - **Subsystem colors** (stable per subsystem) plus level coloring
135
+ - **Color when output is a TTY or the environment looks like a rich terminal** (`TERM`/`COLORTERM`/`TERM_PROGRAM`), respects `NO_COLOR`
136
+ - **Shortened subsystem prefixes**: drops leading `gateway/` + `channels/`, keeps last 2 segments (e.g. `whatsapp/outbound`)
137
+ - **Sub-loggers by subsystem** (auto prefix + structured field `{ subsystem }`)
138
+ - **`logRaw()`** for QR/UX output (no prefix, no formatting)
139
+ - **Console styles** (e.g. `pretty | compact | json`)
140
+ - **Console log level** separate from file log level (file keeps full detail when `logging.level` is set to `debug`/`trace`)
141
+ - **WhatsApp message bodies** are logged at `debug` (use `--verbose` to see them)
142
+
143
+ This keeps existing file logs stable while making interactive output scannable.
144
+
145
+ ## Related
146
+
147
+ - [Logging](/logging)
148
+ - [OpenTelemetry export](/gateway/opentelemetry)
149
+ - [Diagnostics export](/gateway/diagnostics)
@@ -0,0 +1,178 @@
1
+ ---
2
+ summary: "Run multiple Nodmix Gateways on one host (isolation, ports, and profiles)"
3
+ read_when:
4
+ - Running more than one Gateway on the same machine
5
+ - You need isolated config/state/ports per Gateway
6
+ title: "Multiple gateways"
7
+ ---
8
+
9
+ Most setups should use one Gateway because a single Gateway can handle multiple messaging connections and agents. If you need stronger isolation or redundancy (e.g., a rescue bot), run separate Gateways with isolated profiles/ports.
10
+
11
+ ## Best recommended setup
12
+
13
+ For most users, the simplest rescue-bot setup is:
14
+
15
+ - keep the main bot on the default profile
16
+ - run the rescue bot on `--profile rescue`
17
+ - use a completely separate Telegram bot for the rescue account
18
+ - keep the rescue bot on a different base port such as `19789`
19
+
20
+ This keeps the rescue bot isolated from the main bot so it can debug or apply
21
+ config changes if the primary bot is down. Leave at least 20 ports between
22
+ base ports so the derived browser/canvas/CDP ports never collide.
23
+
24
+ ## Rescue-Bot Quickstart
25
+
26
+ Use this as the default path unless you have a strong reason to do something
27
+ else:
28
+
29
+ ```bash
30
+ # Rescue bot (separate Telegram bot, separate profile, port 19789)
31
+ nodmix --profile rescue onboard
32
+ nodmix --profile rescue gateway install --port 19789
33
+ ```
34
+
35
+ If your main bot is already running, that is usually all you need.
36
+
37
+ During `nodmix --profile rescue onboard`:
38
+
39
+ - use the separate Telegram bot token
40
+ - keep the `rescue` profile
41
+ - use a base port at least 20 higher than the main bot
42
+ - accept the default rescue workspace unless you already manage one yourself
43
+
44
+ If onboarding already installed the rescue service for you, the final
45
+ `gateway install` is not needed.
46
+
47
+ ## Why this works
48
+
49
+ The rescue bot stays independent because it has its own:
50
+
51
+ - profile/config
52
+ - state directory
53
+ - workspace
54
+ - base port (plus derived ports)
55
+ - Telegram bot token
56
+
57
+ For most setups, use a completely separate Telegram bot for the rescue profile:
58
+
59
+ - easy to keep operator-only
60
+ - separate bot token and identity
61
+ - independent from the main bot's channel/app install
62
+ - simple DM-based recovery path when the main bot is broken
63
+
64
+ ## What `--profile rescue onboard` Changes
65
+
66
+ `nodmix --profile rescue onboard` uses the normal onboarding flow, but it
67
+ writes everything into a separate profile.
68
+
69
+ In practice, that means the rescue bot gets its own:
70
+
71
+ - config file
72
+ - state directory
73
+ - workspace (by default `~/.nodmix/workspace-rescue`)
74
+ - managed service name
75
+
76
+ The prompts are otherwise the same as normal onboarding.
77
+
78
+ ## General multi-gateway setup
79
+
80
+ The rescue-bot layout above is the easiest default, but the same isolation
81
+ pattern works for any pair or group of Gateways on one host.
82
+
83
+ For a more general setup, give each extra Gateway its own named profile and its
84
+ own base port:
85
+
86
+ ```bash
87
+ # main (default profile)
88
+ nodmix setup
89
+ nodmix gateway --port 18789
90
+
91
+ # extra gateway
92
+ nodmix --profile ops setup
93
+ nodmix --profile ops gateway --port 19789
94
+ ```
95
+
96
+ If you want both Gateways to use named profiles, that also works:
97
+
98
+ ```bash
99
+ nodmix --profile main setup
100
+ nodmix --profile main gateway --port 18789
101
+
102
+ nodmix --profile ops setup
103
+ nodmix --profile ops gateway --port 19789
104
+ ```
105
+
106
+ Services follow the same pattern:
107
+
108
+ ```bash
109
+ nodmix gateway install
110
+ nodmix --profile ops gateway install --port 19789
111
+ ```
112
+
113
+ Use the rescue-bot quickstart when you want a fallback operator lane. Use the
114
+ general profile pattern when you want multiple long-lived Gateways for
115
+ different channels, tenants, workspaces, or operational roles.
116
+
117
+ ## Isolation checklist
118
+
119
+ Keep these unique per Gateway instance:
120
+
121
+ - `NODMIX_CONFIG_PATH` — per-instance config file
122
+ - `NODMIX_STATE_DIR` — per-instance sessions, creds, caches
123
+ - `agents.defaults.workspace` — per-instance workspace root
124
+ - `gateway.port` (or `--port`) — unique per instance
125
+ - derived browser/canvas/CDP ports
126
+
127
+ If these are shared, you will hit config races and port conflicts.
128
+
129
+ ## Port mapping (derived)
130
+
131
+ Base port = `gateway.port` (or `NODMIX_GATEWAY_PORT` / `--port`).
132
+
133
+ - browser control service port = base + 2 (loopback only)
134
+ - canvas host is served on the Gateway HTTP server (same port as `gateway.port`)
135
+ - Browser profile CDP ports auto-allocate from `browser.controlPort + 9 .. + 108`
136
+
137
+ If you override any of these in config or env, you must keep them unique per instance.
138
+
139
+ ## Browser/CDP notes (common footgun)
140
+
141
+ - Do **not** pin `browser.cdpUrl` to the same values on multiple instances.
142
+ - Each instance needs its own browser control port and CDP range (derived from its gateway port).
143
+ - If you need explicit CDP ports, set `browser.profiles.<name>.cdpPort` per instance.
144
+ - Remote Chrome: use `browser.profiles.<name>.cdpUrl` (per profile, per instance).
145
+
146
+ ## Manual env example
147
+
148
+ ```bash
149
+ NODMIX_CONFIG_PATH=~/.nodmix/main.json \
150
+ NODMIX_STATE_DIR=~/.nodmix \
151
+ nodmix gateway --port 18789
152
+
153
+ NODMIX_CONFIG_PATH=~/.nodmix/rescue.json \
154
+ NODMIX_STATE_DIR=~/.nodmix-rescue \
155
+ nodmix gateway --port 19789
156
+ ```
157
+
158
+ ## Quick checks
159
+
160
+ ```bash
161
+ nodmix gateway status --deep
162
+ nodmix --profile rescue gateway status --deep
163
+ nodmix --profile rescue gateway probe
164
+ nodmix status
165
+ nodmix --profile rescue status
166
+ nodmix --profile rescue browser status
167
+ ```
168
+
169
+ Interpretation:
170
+
171
+ - `gateway status --deep` helps catch stale launchd/systemd/schtasks services from older installs.
172
+ - `gateway probe` warning text such as `multiple reachable gateways detected` is expected only when you intentionally run more than one isolated gateway.
173
+
174
+ ## Related
175
+
176
+ - [Gateway runbook](/gateway)
177
+ - [Gateway lock](/gateway/gateway-lock)
178
+ - [Configuration](/gateway/configuration)