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,239 @@
1
+ ---
2
+ summary: "Model authentication: OAuth, API keys, Claude CLI reuse, and Anthropic setup-token"
3
+ read_when:
4
+ - Debugging model auth or OAuth expiry
5
+ - Documenting authentication or credential storage
6
+ title: "Authentication"
7
+ ---
8
+
9
+ <Note>
10
+ This page is the **model provider** authentication reference (API keys, OAuth, Claude CLI reuse, and Anthropic setup-token). For **gateway connection** authentication (token, password, trusted-proxy), see [Configuration](/gateway/configuration) and [Trusted Proxy Auth](/gateway/trusted-proxy-auth).
11
+ </Note>
12
+
13
+ Nodmix supports OAuth and API keys for model providers. For always-on gateway
14
+ hosts, API keys are usually the most predictable option. Subscription/OAuth
15
+ flows are also supported when they match your provider account model.
16
+
17
+ See [/concepts/oauth](/concepts/oauth) for the full OAuth flow and storage
18
+ layout.
19
+ For SecretRef-based auth (`env`/`file`/`exec` providers), see [Secrets Management](/gateway/secrets).
20
+ For credential eligibility/reason-code rules used by `models status --probe`, see
21
+ [Auth Credential Semantics](/auth-credential-semantics).
22
+
23
+ ## Recommended setup (API key, any provider)
24
+
25
+ If you're running a long-lived gateway, start with an API key for your chosen
26
+ provider.
27
+ For Anthropic specifically, API key auth is still the most predictable server
28
+ setup, but Nodmix also supports reusing a local Claude CLI login.
29
+
30
+ 1. Create an API key in your provider console.
31
+ 2. Put it on the **gateway host** (the machine running `nodmix gateway`).
32
+
33
+ ```bash
34
+ export <PROVIDER>_API_KEY="..."
35
+ nodmix models status
36
+ ```
37
+
38
+ 3. If the Gateway runs under systemd/launchd, prefer putting the key in
39
+ `~/.nodmix/.env` so the daemon can read it:
40
+
41
+ ```bash
42
+ cat >> ~/.nodmix/.env <<'EOF'
43
+ <PROVIDER>_API_KEY=...
44
+ EOF
45
+ ```
46
+
47
+ Then restart the daemon (or restart your Gateway process) and re-check:
48
+
49
+ ```bash
50
+ nodmix models status
51
+ nodmix doctor
52
+ ```
53
+
54
+ If you'd rather not manage env vars yourself, onboarding can store
55
+ API keys for daemon use: `nodmix onboard`.
56
+
57
+ See [Help](/help) for details on env inheritance (`env.shellEnv`,
58
+ `~/.nodmix/.env`, systemd/launchd).
59
+
60
+ ## Anthropic: Claude CLI and token compatibility
61
+
62
+ Anthropic setup-token auth is still available in Nodmix as a supported token
63
+ path. Anthropic staff has since told us that Nodmix-style Claude CLI usage is
64
+ allowed again, so Nodmix treats Claude CLI reuse and `claude -p` usage as
65
+ sanctioned for this integration unless Anthropic publishes a new policy. When
66
+ Claude CLI reuse is available on the host, that is now the preferred path.
67
+
68
+ For long-lived gateway hosts, an Anthropic API key is still the most predictable
69
+ setup. If you want to reuse an existing Claude login on the same host, use the
70
+ Anthropic Claude CLI path in onboarding/configure.
71
+
72
+ Recommended host setup for Claude CLI reuse:
73
+
74
+ ```bash
75
+ # Run on the gateway host
76
+ claude auth login
77
+ claude auth status --text
78
+ nodmix models auth login --provider anthropic --method cli --set-default
79
+ ```
80
+
81
+ This is a two-step setup:
82
+
83
+ 1. Log Claude Code itself into Anthropic on the gateway host.
84
+ 2. Tell Nodmix to switch Anthropic model selection to the local `claude-cli`
85
+ backend and store the matching Nodmix auth profile.
86
+
87
+ If `claude` is not on `PATH`, either install Claude Code first or set
88
+ `agents.defaults.cliBackends.claude-cli.command` to the real binary path.
89
+
90
+ Manual token entry (any provider; writes `auth-profiles.json` + updates config):
91
+
92
+ ```bash
93
+ nodmix models auth paste-token --provider openrouter
94
+ ```
95
+
96
+ `auth-profiles.json` stores credentials only. The canonical shape is:
97
+
98
+ ```json
99
+ {
100
+ "version": 1,
101
+ "profiles": {
102
+ "openrouter:default": {
103
+ "type": "api_key",
104
+ "provider": "openrouter",
105
+ "key": "OPENROUTER_API_KEY"
106
+ }
107
+ }
108
+ }
109
+ ```
110
+
111
+ Nodmix expects the canonical `version` + `profiles` shape at runtime. If an older install still has a flat file such as `{ "openrouter": { "apiKey": "..." } }`, run `nodmix doctor --fix` to rewrite it as an `openrouter:default` API-key profile; doctor keeps a `.legacy-flat.*.bak` copy beside the original. Endpoint details such as `baseUrl`, `api`, model ids, headers, and timeouts belong under `models.providers.<id>` in `nodmix.json` or `models.json`, not in `auth-profiles.json`.
112
+
113
+ External auth routes such as Bedrock `auth: "aws-sdk"` are also not credentials. If you want a named Bedrock route, put `auth.profiles.<id>.mode: "aws-sdk"` in `nodmix.json`; do not write `type: "aws-sdk"` into `auth-profiles.json`. `nodmix doctor --fix` moves legacy AWS SDK markers from the credential store into config metadata.
114
+
115
+ Auth profile refs are also supported for static credentials:
116
+
117
+ - `api_key` credentials can use `keyRef: { source, provider, id }`
118
+ - `token` credentials can use `tokenRef: { source, provider, id }`
119
+ - OAuth-mode profiles do not support SecretRef credentials; if `auth.profiles.<id>.mode` is set to `"oauth"`, SecretRef-backed `keyRef`/`tokenRef` input for that profile is rejected.
120
+
121
+ Automation-friendly check (exit `1` when expired/missing, `2` when expiring):
122
+
123
+ ```bash
124
+ nodmix models status --check
125
+ ```
126
+
127
+ Live auth probes:
128
+
129
+ ```bash
130
+ nodmix models status --probe
131
+ ```
132
+
133
+ Notes:
134
+
135
+ - Probe rows can come from auth profiles, env credentials, or `models.json`.
136
+ - If explicit `auth.order.<provider>` omits a stored profile, probe reports
137
+ `excluded_by_auth_order` for that profile instead of trying it.
138
+ - If auth exists but Nodmix cannot resolve a probeable model candidate for
139
+ that provider, probe reports `status: no_model`.
140
+ - Rate-limit cooldowns can be model-scoped. A profile cooling down for one
141
+ model can still be usable for a sibling model on the same provider.
142
+
143
+ Optional ops scripts (systemd/Termux) are documented here:
144
+ [Auth monitoring scripts](/help/scripts#auth-monitoring-scripts)
145
+
146
+ ## Anthropic note
147
+
148
+ The Anthropic `claude-cli` backend is supported again.
149
+
150
+ - Anthropic staff told us this Nodmix integration path is allowed again.
151
+ - Nodmix therefore treats Claude CLI reuse and `claude -p` usage as sanctioned
152
+ for Anthropic-backed runs unless Anthropic publishes a new policy.
153
+ - Anthropic API keys remain the most predictable choice for long-lived gateway
154
+ hosts and explicit server-side billing control.
155
+
156
+ ## Checking model auth status
157
+
158
+ ```bash
159
+ nodmix models status
160
+ nodmix doctor
161
+ ```
162
+
163
+ ## API key rotation behavior (gateway)
164
+
165
+ Some providers support retrying a request with alternative keys when an API call
166
+ hits a provider rate limit.
167
+
168
+ - Priority order:
169
+ - `NODMIX_LIVE_<PROVIDER>_KEY` (single override)
170
+ - `<PROVIDER>_API_KEYS`
171
+ - `<PROVIDER>_API_KEY`
172
+ - `<PROVIDER>_API_KEY_*`
173
+ - Google providers also include `GOOGLE_API_KEY` as an additional fallback.
174
+ - The same key list is deduplicated before use.
175
+ - Nodmix retries with the next key only for rate-limit errors (for example
176
+ `429`, `rate_limit`, `quota`, `resource exhausted`, `Too many concurrent
177
+ requests`, `ThrottlingException`, `concurrency limit reached`, or
178
+ `workers_ai ... quota limit exceeded`).
179
+ - Non-rate-limit errors are not retried with alternate keys.
180
+ - If all keys fail, the final error from the last attempt is returned.
181
+
182
+ ## Removing provider auth while the gateway is running
183
+
184
+ When provider auth is removed through the Gateway control plane, Nodmix deletes
185
+ the saved auth profiles for that provider and aborts active chat or agent runs
186
+ whose selected model provider matches the removed provider. The aborted runs emit
187
+ the normal chat cancellation and lifecycle events with
188
+ `stopReason: "auth-revoked"`, so connected clients can show that the run was
189
+ stopped because credentials were removed.
190
+
191
+ Removing saved auth does not revoke keys at the provider. Rotate or revoke the
192
+ key in the provider dashboard when you need provider-side invalidation.
193
+
194
+ ## Controlling which credential is used
195
+
196
+ ### Per-session (chat command)
197
+
198
+ Use `/model <alias-or-id>@<profileId>` to pin a specific provider credential for the current session (example profile ids: `anthropic:default`, `anthropic:work`).
199
+
200
+ Use `/model` (or `/model list`) for a compact picker; use `/model status` for the full view (candidates + next auth profile, plus provider endpoint details when configured).
201
+
202
+ ### Per-agent (CLI override)
203
+
204
+ Set an explicit auth profile order override for an agent (stored in that agent's `auth-state.json`):
205
+
206
+ ```bash
207
+ nodmix models auth order get --provider anthropic
208
+ nodmix models auth order set --provider anthropic anthropic:default
209
+ nodmix models auth order clear --provider anthropic
210
+ ```
211
+
212
+ Use `--agent <id>` to target a specific agent; omit it to use the configured default agent.
213
+ When you debug order issues, `nodmix models status --probe` shows omitted
214
+ stored profiles as `excluded_by_auth_order` instead of silently skipping them.
215
+ When you debug cooldown issues, remember that rate-limit cooldowns can be tied
216
+ to one model id rather than the whole provider profile.
217
+
218
+ ## Troubleshooting
219
+
220
+ ### "No credentials found"
221
+
222
+ If the Anthropic profile is missing, configure an Anthropic API key on the
223
+ **gateway host** or set up the Anthropic setup-token path, then re-check:
224
+
225
+ ```bash
226
+ nodmix models status
227
+ ```
228
+
229
+ ### Token expiring/expired
230
+
231
+ Run `nodmix models status` to confirm which profile is expiring. If an
232
+ Anthropic token profile is missing or expired, refresh that setup via
233
+ setup-token or migrate to an Anthropic API key.
234
+
235
+ ## Related
236
+
237
+ - [Secrets management](/gateway/secrets)
238
+ - [Remote access](/gateway/remote)
239
+ - [Auth storage](/concepts/oauth)
@@ -0,0 +1,147 @@
1
+ ---
2
+ summary: "Background exec execution and process management"
3
+ read_when:
4
+ - Adding or modifying background exec behavior
5
+ - Debugging long-running exec tasks
6
+ title: "Background exec and process tool"
7
+ ---
8
+
9
+ Nodmix runs shell commands through the `exec` tool and keeps long-running tasks in memory. The `process` tool manages those background sessions.
10
+
11
+ ## exec tool
12
+
13
+ Key parameters:
14
+
15
+ - `command` (required)
16
+ - `yieldMs` (default 10000): auto-background after this delay
17
+ - `background` (bool): background immediately
18
+ - `timeout` (seconds, default `tools.exec.timeoutSec`): kill the process after this timeout; set `timeout: 0` only to disable the exec process timeout for that call
19
+ - `elevated` (bool): run outside the sandbox if elevated mode is enabled/allowed (`gateway` by default, or `node` when the exec target is `node`)
20
+ - Need a real TTY? Set `pty: true`.
21
+ - `workdir`, `env`
22
+
23
+ Behavior:
24
+
25
+ - Foreground runs return output directly.
26
+ - When backgrounded (explicit or timeout), the tool returns `status: "running"` + `sessionId` and a short tail.
27
+ - Background and `yieldMs` runs inherit `tools.exec.timeoutSec` unless the call provides an explicit `timeout`.
28
+ - Output is kept in memory until the session is polled or cleared.
29
+ - If the `process` tool is disallowed, `exec` runs synchronously and ignores `yieldMs`/`background`.
30
+ - Spawned exec commands receive `NODMIX_SHELL=exec` for context-aware shell/profile rules.
31
+ - For long-running work that starts now, start it once and rely on automatic
32
+ completion wake when it is enabled and the command emits output or fails.
33
+ - If automatic completion wake is unavailable, or you need quiet-success
34
+ confirmation for a command that exited cleanly without output, use `process`
35
+ to confirm completion.
36
+ - Do not emulate reminders or delayed follow-ups with `sleep` loops or repeated
37
+ polling; use cron for future work.
38
+
39
+ ## Child process bridging
40
+
41
+ When spawning long-running child processes outside the exec/process tools (for example, CLI respawns or gateway helpers), attach the child-process bridge helper so termination signals are forwarded and listeners are detached on exit/error. This avoids orphaned processes on systemd and keeps shutdown behavior consistent across platforms.
42
+
43
+ Environment overrides:
44
+
45
+ - `PI_BASH_YIELD_MS`: default yield (ms)
46
+ - `PI_BASH_MAX_OUTPUT_CHARS`: in-memory output cap (chars)
47
+ - `NODMIX_BASH_PENDING_MAX_OUTPUT_CHARS`: pending stdout/stderr cap per stream (chars)
48
+ - `PI_BASH_JOB_TTL_MS`: TTL for finished sessions (ms, bounded to 1m–3h)
49
+ - `NODMIX_PROCESS_INPUT_WAIT_IDLE_MS`: idle-output threshold before writable background sessions are marked as likely waiting for input (default 15000 ms)
50
+
51
+ Config (preferred):
52
+
53
+ - `tools.exec.backgroundMs` (default 10000)
54
+ - `tools.exec.timeoutSec` (default 1800)
55
+ - `tools.exec.cleanupMs` (default 1800000)
56
+ - `tools.exec.notifyOnExit` (default true): enqueue a system event + request heartbeat when a backgrounded exec exits.
57
+ - `tools.exec.notifyOnExitEmptySuccess` (default false): when true, also enqueue completion events for successful backgrounded runs that produced no output.
58
+
59
+ ## process tool
60
+
61
+ Actions:
62
+
63
+ - `list`: running + finished sessions
64
+ - `poll`: drain new output for a session (also reports exit status)
65
+ - `log`: read the aggregated output and show input recovery hints (supports `offset` + `limit`)
66
+ - `write`: send stdin (`data`, optional `eof`)
67
+ - `send-keys`: send explicit key tokens or bytes to a PTY-backed session
68
+ - `submit`: send Enter / carriage return to a PTY-backed session
69
+ - `paste`: send literal text, optionally wrapped in bracketed paste mode
70
+ - `kill`: terminate a background session
71
+ - `clear`: remove a finished session from memory
72
+ - `remove`: kill if running, otherwise clear if finished
73
+
74
+ Notes:
75
+
76
+ - Only backgrounded sessions are listed/persisted in memory.
77
+ - Sessions are lost on process restart (no disk persistence).
78
+ - Session logs are only saved to chat history if you run `process poll/log` and the tool result is recorded.
79
+ - `process` is scoped per agent; it only sees sessions started by that agent.
80
+ - Use `poll` / `log` for status, logs, quiet-success confirmation, or
81
+ completion confirmation when automatic completion wake is unavailable.
82
+ - Use `log` before recovering an interactive CLI so the current transcript,
83
+ stdin state, and input-wait hint are visible together.
84
+ - Use `write` / `send-keys` / `submit` / `paste` / `kill` when you need input
85
+ or intervention.
86
+ - `process list` includes a derived `name` (command verb + target) for quick scans.
87
+ - `process list`, `poll`, and `log` report `waitingForInput` only
88
+ when the session still has writable stdin and has been idle longer than the
89
+ input-wait threshold.
90
+ - `process log` uses line-based `offset`/`limit`.
91
+ - When both `offset` and `limit` are omitted, it returns the last 200 lines and includes a paging hint.
92
+ - When `offset` is provided and `limit` is omitted, it returns from `offset` to the end (not capped to 200).
93
+ - Polling is for on-demand status, not wait-loop scheduling. If the work should
94
+ happen later, use cron instead.
95
+
96
+ ## Examples
97
+
98
+ Run a long task and poll later:
99
+
100
+ ```json
101
+ { "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
102
+ ```
103
+
104
+ ```json
105
+ { "tool": "process", "action": "poll", "sessionId": "<id>" }
106
+ ```
107
+
108
+ Inspect an interactive session before sending input:
109
+
110
+ ```json
111
+ { "tool": "process", "action": "log", "sessionId": "<id>" }
112
+ ```
113
+
114
+ Start immediately in background:
115
+
116
+ ```json
117
+ { "tool": "exec", "command": "npm run build", "background": true }
118
+ ```
119
+
120
+ Send stdin:
121
+
122
+ ```json
123
+ { "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }
124
+ ```
125
+
126
+ Send PTY keys:
127
+
128
+ ```json
129
+ { "tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["C-c"] }
130
+ ```
131
+
132
+ Submit current line:
133
+
134
+ ```json
135
+ { "tool": "process", "action": "submit", "sessionId": "<id>" }
136
+ ```
137
+
138
+ Paste literal text:
139
+
140
+ ```json
141
+ { "tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n" }
142
+ ```
143
+
144
+ ## Related
145
+
146
+ - [Exec tool](/tools/exec)
147
+ - [Exec approvals](/tools/exec-approvals)
@@ -0,0 +1,303 @@
1
+ ---
2
+ summary: "Bonjour/mDNS discovery + debugging (Gateway beacons, clients, and common failure modes)"
3
+ read_when:
4
+ - Debugging Bonjour discovery issues on macOS/iOS
5
+ - Changing mDNS service types, TXT records, or discovery UX
6
+ title: "Bonjour discovery"
7
+ ---
8
+
9
+ Nodmix can use Bonjour (mDNS / DNS-SD) to discover an active Gateway (WebSocket endpoint).
10
+ Multicast `local.` browsing is a **LAN-only convenience**. The bundled `bonjour`
11
+ plugin owns LAN advertising. It auto-starts on macOS hosts and is opt-in on
12
+ Linux, Windows, and containerized Gateway deployments. For cross-network discovery, the same
13
+ beacon can also be published through a configured wide-area DNS-SD domain. Discovery
14
+ is still best-effort and does **not** replace SSH or Tailnet-based connectivity.
15
+
16
+ ## Wide-area Bonjour (Unicast DNS-SD) over Tailscale
17
+
18
+ If the node and gateway are on different networks, multicast mDNS won't cross the
19
+ boundary. You can keep the same discovery UX by switching to **unicast DNS-SD**
20
+ ("Wide-Area Bonjour") over Tailscale.
21
+
22
+ High-level steps:
23
+
24
+ 1. Run a DNS server on the gateway host (reachable over Tailnet).
25
+ 2. Publish DNS-SD records for `_nodmix-gw._tcp` under a dedicated zone
26
+ (example: `nodmix.internal.`).
27
+ 3. Configure Tailscale **split DNS** so your chosen domain resolves via that
28
+ DNS server for clients (including iOS).
29
+
30
+ Nodmix supports any discovery domain; `nodmix.internal.` is just an example.
31
+ iOS/Android nodes browse both `local.` and your configured wide-area domain.
32
+
33
+ ### Gateway config (recommended)
34
+
35
+ ```json5
36
+ {
37
+ gateway: { bind: "tailnet" }, // tailnet-only (recommended)
38
+ discovery: { wideArea: { enabled: true } }, // enables wide-area DNS-SD publishing
39
+ }
40
+ ```
41
+
42
+ ### One-time DNS server setup (gateway host)
43
+
44
+ ```bash
45
+ nodmix dns setup --apply
46
+ ```
47
+
48
+ This installs CoreDNS and configures it to:
49
+
50
+ - listen on port 53 only on the gateway's Tailscale interfaces
51
+ - serve your chosen domain (example: `nodmix.internal.`) from `~/.nodmix/dns/<domain>.db`
52
+
53
+ Validate from a tailnet-connected machine:
54
+
55
+ ```bash
56
+ dns-sd -B _nodmix-gw._tcp nodmix.internal.
57
+ dig @<TAILNET_IPV4> -p 53 _nodmix-gw._tcp.nodmix.internal PTR +short
58
+ ```
59
+
60
+ ### Tailscale DNS settings
61
+
62
+ In the Tailscale admin console:
63
+
64
+ - Add a nameserver pointing at the gateway's tailnet IP (UDP/TCP 53).
65
+ - Add split DNS so your discovery domain uses that nameserver.
66
+
67
+ Once clients accept tailnet DNS, iOS nodes and CLI discovery can browse
68
+ `_nodmix-gw._tcp` in your discovery domain without multicast.
69
+
70
+ ### Gateway listener security (recommended)
71
+
72
+ The Gateway WS port (default `18789`) binds to loopback by default. For LAN/tailnet
73
+ access, bind explicitly and keep auth enabled.
74
+
75
+ For tailnet-only setups:
76
+
77
+ - Set `gateway.bind: "tailnet"` in `~/.nodmix/nodmix.json`.
78
+ - Restart the Gateway (or restart the macOS menubar app).
79
+
80
+ ## What advertises
81
+
82
+ Only the Gateway advertises `_nodmix-gw._tcp`. LAN multicast advertising is
83
+ provided by the bundled `bonjour` plugin when the plugin is enabled; wide-area
84
+ DNS-SD publishing remains Gateway-owned.
85
+
86
+ ## Service types
87
+
88
+ - `_nodmix-gw._tcp` - gateway transport beacon (used by macOS/iOS/Android nodes).
89
+
90
+ ## TXT keys (non-secret hints)
91
+
92
+ The Gateway advertises small non-secret hints to make UI flows convenient:
93
+
94
+ - `role=gateway`
95
+ - `displayName=<friendly name>`
96
+ - `lanHost=<hostname>.local`
97
+ - `gatewayPort=<port>` (Gateway WS + HTTP)
98
+ - `gatewayTls=1` (only when TLS is enabled)
99
+ - `gatewayTlsSha256=<sha256>` (only when TLS is enabled and fingerprint is available)
100
+ - `canvasPort=<port>` (only when the canvas host is enabled; currently the same as `gatewayPort`)
101
+ - `transport=gateway`
102
+ - `tailnetDns=<magicdns>` (mDNS full mode only, optional hint when Tailnet is available)
103
+ - `sshPort=<port>` (full mode only; omitted in minimal and off modes)
104
+ - `cliPath=<path>` (full mode only; omitted in minimal and off modes)
105
+
106
+ Security notes:
107
+
108
+ - Bonjour/mDNS TXT records are **unauthenticated**. Clients must not treat TXT as authoritative routing.
109
+ - Clients should route using the resolved service endpoint (SRV + A/AAAA). Treat `lanHost`, `tailnetDns`, `gatewayPort`, and `gatewayTlsSha256` as hints only.
110
+ - SSH auto-targeting should likewise use the resolved service host, not TXT-only hints.
111
+ - TLS pinning must never allow an advertised `gatewayTlsSha256` to override a previously stored pin.
112
+ - iOS/Android nodes should treat discovery-based direct connects as **TLS-only** and require explicit user confirmation before trusting a first-time fingerprint.
113
+
114
+ ## Debugging on macOS
115
+
116
+ Useful built-in tools:
117
+
118
+ - Browse instances:
119
+
120
+ ```bash
121
+ dns-sd -B _nodmix-gw._tcp local.
122
+ ```
123
+
124
+ - Resolve one instance (replace `<instance>`):
125
+
126
+ ```bash
127
+ dns-sd -L "<instance>" _nodmix-gw._tcp local.
128
+ ```
129
+
130
+ If browsing works but resolving fails, you're usually hitting a LAN policy or
131
+ mDNS resolver issue.
132
+
133
+ ## Debugging in Gateway logs
134
+
135
+ The Gateway writes a rolling log file (printed on startup as
136
+ `gateway log file: ...`). Look for `bonjour:` lines, especially:
137
+
138
+ - `bonjour: advertise failed ...`
139
+ - `bonjour: suppressing ciao cancellation ...`
140
+ - `bonjour: ... name conflict resolved` / `hostname conflict resolved`
141
+ - `bonjour: watchdog detected non-announced service ...`
142
+ - `bonjour: disabling advertiser after ... failed restarts ...`
143
+
144
+ The watchdog treats active `probing`, `announcing`, and fresh conflict-renames as
145
+ in-progress states. If the service never reaches `announced`, Nodmix eventually
146
+ recreates the advertiser and, after repeated failures, disables Bonjour for that
147
+ Gateway process instead of re-advertising forever.
148
+
149
+ Bonjour uses the system hostname for the advertised `.local` host when it is a
150
+ valid DNS label. If the system hostname contains spaces, underscores, or another
151
+ invalid DNS-label character, Nodmix falls back to `nodmix.local`. Set
152
+ `NODMIX_MDNS_HOSTNAME=<name>` before starting the Gateway when you need an
153
+ explicit host label.
154
+
155
+ ## Debugging on iOS node
156
+
157
+ The iOS node uses `NWBrowser` to discover `_nodmix-gw._tcp`.
158
+
159
+ To capture logs:
160
+
161
+ - Settings → Gateway → Advanced → **Discovery Debug Logs**
162
+ - Settings → Gateway → Advanced → **Discovery Logs** → reproduce → **Copy**
163
+
164
+ The log includes browser state transitions and result-set changes.
165
+
166
+ ## When to enable Bonjour
167
+
168
+ Bonjour auto-starts for empty-config Gateway startup on macOS hosts because the
169
+ local app and nearby iOS/Android nodes commonly rely on same-LAN discovery.
170
+
171
+ Enable Bonjour explicitly when same-LAN auto-discovery is useful on Linux,
172
+ Windows, or another non-macOS host:
173
+
174
+ ```bash
175
+ nodmix plugins enable bonjour
176
+ ```
177
+
178
+ When enabled, Bonjour uses `discovery.mdns.mode` to decide how much TXT metadata
179
+ to publish. The same mode controls optional TXT hints in wide-area DNS-SD records.
180
+ The default mode is `minimal`; use `full` only when clients need `cliPath` or
181
+ `sshPort` hints. Use `off` to suppress LAN multicast without changing plugin
182
+ enablement; wide-area DNS-SD can still publish the minimal Gateway beacon when
183
+ `discovery.wideArea.enabled` is true.
184
+
185
+ ## When to disable Bonjour
186
+
187
+ Leave Bonjour disabled when LAN multicast advertising is unnecessary, unavailable,
188
+ or harmful. The common cases are non-macOS servers, Docker bridge networking,
189
+ WSL, or a network policy that drops mDNS multicast. In those environments the
190
+ Gateway is still reachable through its published URL, SSH, Tailnet, or wide-area
191
+ DNS-SD, but LAN auto-discovery is not reliable.
192
+
193
+ Prefer the existing environment override when the problem is deployment-scoped:
194
+
195
+ ```bash
196
+ NODMIX_DISABLE_BONJOUR=1
197
+ ```
198
+
199
+ That disables LAN multicast advertising without changing plugin configuration.
200
+ It is safe for Docker images, service files, launch scripts, and one-off
201
+ debugging because the setting disappears when the environment does.
202
+
203
+ Use plugin configuration when you intentionally want to turn off the bundled LAN
204
+ discovery plugin for that Nodmix config:
205
+
206
+ ```bash
207
+ nodmix plugins disable bonjour
208
+ ```
209
+
210
+ ## Docker gotchas
211
+
212
+ The bundled Bonjour plugin auto-disables LAN multicast advertising in detected
213
+ containers when `NODMIX_DISABLE_BONJOUR` is unset. Docker bridge networks
214
+ usually do not forward mDNS multicast (`224.0.0.251:5353`) between the container
215
+ and the LAN, so advertising from the container rarely makes discovery work.
216
+
217
+ Important gotchas:
218
+
219
+ - Bonjour auto-starts on macOS hosts and is opt-in elsewhere. Leaving it
220
+ disabled does not stop the Gateway; it only skips LAN multicast advertising.
221
+ - Disabling Bonjour does not change `gateway.bind`; Docker still defaults to
222
+ `NODMIX_GATEWAY_BIND=lan` so the published host port can work.
223
+ - Disabling Bonjour does not disable wide-area DNS-SD. Use wide-area discovery
224
+ or Tailnet when the Gateway and node are not on the same LAN.
225
+ - Reusing the same `NODMIX_CONFIG_DIR` outside Docker does not persist the
226
+ container auto-disable policy.
227
+ - Set `NODMIX_DISABLE_BONJOUR=0` only for host networking, macvlan, or another
228
+ network where mDNS multicast is known to pass; set it to `1` to force-disable.
229
+
230
+ ## Troubleshooting disabled Bonjour
231
+
232
+ If a node no longer auto-discovers the Gateway after Docker setup:
233
+
234
+ 1. Confirm whether the Gateway is running in auto, forced-on, or forced-off mode:
235
+
236
+ ```bash
237
+ docker compose config | grep NODMIX_DISABLE_BONJOUR
238
+ ```
239
+
240
+ 2. Confirm the Gateway itself is reachable through the published port:
241
+
242
+ ```bash
243
+ curl -fsS http://127.0.0.1:18789/healthz
244
+ ```
245
+
246
+ 3. Use a direct target when Bonjour is disabled:
247
+ - Control UI or local tools: `http://127.0.0.1:18789`
248
+ - LAN clients: `http://<gateway-host>:18789`
249
+ - Cross-network clients: Tailnet MagicDNS, Tailnet IP, SSH tunnel, or
250
+ wide-area DNS-SD
251
+
252
+ 4. If you deliberately enabled the Bonjour plugin in Docker and forced advertising
253
+ with `NODMIX_DISABLE_BONJOUR=0`, test multicast from the host:
254
+
255
+ ```bash
256
+ dns-sd -B _nodmix-gw._tcp local.
257
+ ```
258
+
259
+ If browsing is empty or the Gateway logs show repeated ciao watchdog
260
+ cancellations, restore `NODMIX_DISABLE_BONJOUR=1` and use a direct or
261
+ Tailnet route.
262
+
263
+ ## Common failure modes
264
+
265
+ - **Bonjour doesn't cross networks**: use Tailnet or SSH.
266
+ - **Multicast blocked**: some Wi-Fi networks disable mDNS.
267
+ - **Advertiser stuck in probing/announcing**: hosts with blocked multicast,
268
+ container bridges, WSL, or interface churn can leave the ciao advertiser in a
269
+ non-announced state. Nodmix retries a few times and then disables Bonjour
270
+ for the current Gateway process instead of restarting the advertiser forever.
271
+ - **Docker bridge networking**: Bonjour auto-disables in detected containers.
272
+ Set `NODMIX_DISABLE_BONJOUR=0` only for host, macvlan, or another
273
+ mDNS-capable network.
274
+ - **Sleep / interface churn**: macOS may temporarily drop mDNS results; retry.
275
+ - **Browse works but resolve fails**: keep machine names simple (avoid emojis or
276
+ punctuation), then restart the Gateway. The service instance name derives from
277
+ the host name, so overly complex names can confuse some resolvers.
278
+
279
+ ## Escaped instance names (`\032`)
280
+
281
+ Bonjour/DNS-SD often escapes bytes in service instance names as decimal `\DDD`
282
+ sequences (e.g. spaces become `\032`).
283
+
284
+ - This is normal at the protocol level.
285
+ - UIs should decode for display (iOS uses `BonjourEscapes.decode`).
286
+
287
+ ## Enabling / disabling / configuration
288
+
289
+ - macOS hosts auto-start the bundled LAN discovery plugin by default.
290
+ - `nodmix plugins enable bonjour` enables the bundled LAN discovery plugin on hosts where it is not default-enabled.
291
+ - `nodmix plugins disable bonjour` disables LAN multicast advertising by disabling the bundled plugin.
292
+ - `NODMIX_DISABLE_BONJOUR=1` disables LAN multicast advertising without changing plugin config; accepted truthy values are `1`, `true`, `yes`, and `on` (legacy: `NODMIX_DISABLE_BONJOUR`).
293
+ - `NODMIX_DISABLE_BONJOUR=0` forces LAN multicast advertising on, including inside detected containers; accepted falsy values are `0`, `false`, `no`, and `off`.
294
+ - When the Bonjour plugin is enabled and `NODMIX_DISABLE_BONJOUR` is unset, Bonjour advertises on normal hosts and auto-disables inside detected containers.
295
+ - `gateway.bind` in `~/.nodmix/nodmix.json` controls the Gateway bind mode.
296
+ - `NODMIX_SSH_PORT` overrides the SSH port when `sshPort` is advertised (legacy: `NODMIX_SSH_PORT`).
297
+ - `NODMIX_TAILNET_DNS` publishes a MagicDNS hint in TXT when mDNS full mode is enabled (legacy: `NODMIX_TAILNET_DNS`).
298
+ - `NODMIX_CLI_PATH` overrides the advertised CLI path (legacy: `NODMIX_CLI_PATH`).
299
+
300
+ ## Related docs
301
+
302
+ - Discovery policy and transport selection: [Discovery](/gateway/discovery)
303
+ - Node pairing + approvals: [Gateway pairing](/gateway/pairing)