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,283 @@
1
+ ---
2
+ summary: "iOS node app: connect to the Gateway, pairing, canvas, and troubleshooting"
3
+ read_when:
4
+ - Pairing or reconnecting the iOS node
5
+ - Running the iOS app from source
6
+ - Debugging gateway discovery or canvas commands
7
+ title: "iOS app"
8
+ ---
9
+
10
+ Availability: internal preview. The iOS app is not publicly distributed yet.
11
+
12
+ ## What it does
13
+
14
+ - Connects to a Gateway over WebSocket (LAN or tailnet).
15
+ - Exposes node capabilities: Canvas, Screen snapshot, Camera capture, Location, Talk mode, Voice wake.
16
+ - Receives `node.invoke` commands and reports node status events.
17
+
18
+ ## Requirements
19
+
20
+ - Gateway running on another device (macOS, Linux, or Windows via WSL2).
21
+ - Network path:
22
+ - Same LAN via Bonjour, **or**
23
+ - Tailnet via unicast DNS-SD (example domain: `nodmix.internal.`), **or**
24
+ - Manual host/port (fallback).
25
+
26
+ ## Quick start (pair + connect)
27
+
28
+ 1. Start the Gateway:
29
+
30
+ ```bash
31
+ nodmix gateway --port 18789
32
+ ```
33
+
34
+ 2. In the iOS app, open Settings and pick a discovered gateway (or enable Manual Host and enter host/port).
35
+
36
+ 3. Approve the pairing request on the gateway host:
37
+
38
+ ```bash
39
+ nodmix devices list
40
+ nodmix devices approve <requestId>
41
+ ```
42
+
43
+ If the app retries pairing with changed auth details (role/scopes/public key),
44
+ the previous pending request is superseded and a new `requestId` is created.
45
+ Run `nodmix devices list` again before approval.
46
+
47
+ Optional: if the iOS node always connects from a tightly controlled subnet, you
48
+ can opt in to first-time node auto-approval with explicit CIDRs or exact IPs:
49
+
50
+ ```json5
51
+ {
52
+ gateway: {
53
+ nodes: {
54
+ pairing: {
55
+ autoApproveCidrs: ["192.168.1.0/24"],
56
+ },
57
+ },
58
+ },
59
+ }
60
+ ```
61
+
62
+ This is disabled by default. It applies only to fresh `role: node` pairing with
63
+ no requested scopes. Operator/browser pairing and any role, scope, metadata, or
64
+ public-key change still require manual approval.
65
+
66
+ 4. Verify connection:
67
+
68
+ ```bash
69
+ nodmix nodes status
70
+ nodmix gateway call node.list --params "{}"
71
+ ```
72
+
73
+ ## Relay-backed push for official builds
74
+
75
+ Official distributed iOS builds use the external push relay instead of publishing the raw APNs
76
+ token to the gateway.
77
+
78
+ Gateway-side requirement:
79
+
80
+ ```json5
81
+ {
82
+ gateway: {
83
+ push: {
84
+ apns: {
85
+ relay: {
86
+ baseUrl: "https://relay.example.com",
87
+ },
88
+ },
89
+ },
90
+ },
91
+ }
92
+ ```
93
+
94
+ How the flow works:
95
+
96
+ - The iOS app registers with the relay using App Attest and a StoreKit app transaction JWS.
97
+ - The relay returns an opaque relay handle plus a registration-scoped send grant.
98
+ - The iOS app fetches the paired gateway identity and includes it in relay registration, so the relay-backed registration is delegated to that specific gateway.
99
+ - The app forwards that relay-backed registration to the paired gateway with `push.apns.register`.
100
+ - The gateway uses that stored relay handle for `push.test`, background wakes, and wake nudges.
101
+ - The gateway relay base URL must match the relay URL baked into the official/TestFlight iOS build.
102
+ - If the app later connects to a different gateway or a build with a different relay base URL, it refreshes the relay registration instead of reusing the old binding.
103
+
104
+ What the gateway does **not** need for this path:
105
+
106
+ - No deployment-wide relay token.
107
+ - No direct APNs key for official/TestFlight relay-backed sends.
108
+
109
+ Expected operator flow:
110
+
111
+ 1. Install the official/TestFlight iOS build.
112
+ 2. Set `gateway.push.apns.relay.baseUrl` on the gateway.
113
+ 3. Pair the app to the gateway and let it finish connecting.
114
+ 4. The app publishes `push.apns.register` automatically after it has an APNs token, the operator session is connected, and relay registration succeeds.
115
+ 5. After that, `push.test`, reconnect wakes, and wake nudges can use the stored relay-backed registration.
116
+
117
+ ## Background alive beacons
118
+
119
+ When iOS wakes the app for a silent push, background refresh, or significant-location event, the app
120
+ attempts a short node reconnect and then calls `node.event` with `event: "node.presence.alive"`.
121
+ The gateway records this as `lastSeenAtMs`/`lastSeenReason` on the paired node/device metadata only
122
+ after the authenticated node device identity is known.
123
+
124
+ The app treats a background wake as successfully recorded only when the gateway response includes
125
+ `handled: true`. Older gateways may acknowledge `node.event` with `{ "ok": true }`; that response is
126
+ compatible but does not count as a durable last-seen update.
127
+
128
+ Compatibility note:
129
+
130
+ - `NODMIX_APNS_RELAY_BASE_URL` still works as a temporary env override for the gateway.
131
+
132
+ ## Authentication and trust flow
133
+
134
+ The relay exists to enforce two constraints that direct APNs-on-gateway cannot provide for
135
+ official iOS builds:
136
+
137
+ - Only genuine Nodmix iOS builds distributed through Apple can use the hosted relay.
138
+ - A gateway can send relay-backed pushes only for iOS devices that paired with that specific
139
+ gateway.
140
+
141
+ Hop by hop:
142
+
143
+ 1. `iOS app -> gateway`
144
+ - The app first pairs with the gateway through the normal Gateway auth flow.
145
+ - That gives the app an authenticated node session plus an authenticated operator session.
146
+ - The operator session is used to call `gateway.identity.get`.
147
+
148
+ 2. `iOS app -> relay`
149
+ - The app calls the relay registration endpoints over HTTPS.
150
+ - Registration includes App Attest proof plus a StoreKit app transaction JWS.
151
+ - The relay validates the bundle ID, App Attest proof, and Apple distribution proof, and requires the
152
+ official/production distribution path.
153
+ - This is what blocks local Xcode/dev builds from using the hosted relay. A local build may be
154
+ signed, but it does not satisfy the official Apple distribution proof the relay expects.
155
+
156
+ 3. `gateway identity delegation`
157
+ - Before relay registration, the app fetches the paired gateway identity from
158
+ `gateway.identity.get`.
159
+ - The app includes that gateway identity in the relay registration payload.
160
+ - The relay returns a relay handle and a registration-scoped send grant that are delegated to
161
+ that gateway identity.
162
+
163
+ 4. `gateway -> relay`
164
+ - The gateway stores the relay handle and send grant from `push.apns.register`.
165
+ - On `push.test`, reconnect wakes, and wake nudges, the gateway signs the send request with its
166
+ own device identity.
167
+ - The relay verifies both the stored send grant and the gateway signature against the delegated
168
+ gateway identity from registration.
169
+ - Another gateway cannot reuse that stored registration, even if it somehow obtains the handle.
170
+
171
+ 5. `relay -> APNs`
172
+ - The relay owns the production APNs credentials and the raw APNs token for the official build.
173
+ - The gateway never stores the raw APNs token for relay-backed official builds.
174
+ - The relay sends the final push to APNs on behalf of the paired gateway.
175
+
176
+ Why this design was created:
177
+
178
+ - To keep production APNs credentials out of user gateways.
179
+ - To avoid storing raw official-build APNs tokens on the gateway.
180
+ - To allow hosted relay usage only for official/TestFlight Nodmix builds.
181
+ - To prevent one gateway from sending wake pushes to iOS devices owned by a different gateway.
182
+
183
+ Local/manual builds remain on direct APNs. If you are testing those builds without the relay, the
184
+ gateway still needs direct APNs credentials:
185
+
186
+ ```bash
187
+ export NODMIX_APNS_TEAM_ID="TEAMID"
188
+ export NODMIX_APNS_KEY_ID="KEYID"
189
+ export NODMIX_APNS_PRIVATE_KEY_P8="$(cat /path/to/AuthKey_KEYID.p8)"
190
+ ```
191
+
192
+ These are gateway-host runtime env vars, not Fastlane settings. `apps/ios/fastlane/.env` only stores
193
+ App Store Connect / TestFlight auth such as `ASC_KEY_ID` and `ASC_ISSUER_ID`; it does not configure
194
+ direct APNs delivery for local iOS builds.
195
+
196
+ Recommended gateway-host storage:
197
+
198
+ ```bash
199
+ mkdir -p ~/.nodmix/credentials/apns
200
+ chmod 700 ~/.nodmix/credentials/apns
201
+ mv /path/to/AuthKey_KEYID.p8 ~/.nodmix/credentials/apns/AuthKey_KEYID.p8
202
+ chmod 600 ~/.nodmix/credentials/apns/AuthKey_KEYID.p8
203
+ export NODMIX_APNS_PRIVATE_KEY_PATH="$HOME/.nodmix/credentials/apns/AuthKey_KEYID.p8"
204
+ ```
205
+
206
+ Do not commit the `.p8` file or place it under the repo checkout.
207
+
208
+ ## Discovery paths
209
+
210
+ ### Bonjour (LAN)
211
+
212
+ The iOS app browses `_nodmix-gw._tcp` on `local.` and, when configured, the same
213
+ wide-area DNS-SD discovery domain. Same-LAN gateways appear automatically from `local.`;
214
+ cross-network discovery can use the configured wide-area domain without changing the beacon type.
215
+
216
+ ### Tailnet (cross-network)
217
+
218
+ If mDNS is blocked, use a unicast DNS-SD zone (choose a domain; example:
219
+ `nodmix.internal.`) and Tailscale split DNS.
220
+ See [Bonjour](/gateway/bonjour) for the CoreDNS example.
221
+
222
+ ### Manual host/port
223
+
224
+ In Settings, enable **Manual Host** and enter the gateway host + port (default `18789`).
225
+
226
+ ## Canvas + A2UI
227
+
228
+ The iOS node renders a WKWebView canvas. Use `node.invoke` to drive it:
229
+
230
+ ```bash
231
+ nodmix nodes invoke --node "iOS Node" --command canvas.navigate --params '{"url":"http://<gateway-host>:18789/__nodmix__/canvas/"}'
232
+ ```
233
+
234
+ Notes:
235
+
236
+ - The Gateway canvas host serves `/__nodmix__/canvas/` and `/__nodmix__/a2ui/`.
237
+ - It is served from the Gateway HTTP server (same port as `gateway.port`, default `18789`).
238
+ - The iOS node auto-navigates to A2UI on connect when a canvas host URL is advertised.
239
+ - Return to the built-in scaffold with `canvas.navigate` and `{"url":""}`.
240
+
241
+ ## Computer Use relationship
242
+
243
+ The iOS app is a mobile node surface, not a Codex Computer Use backend. Codex
244
+ Computer Use and `cua-driver mcp` control a local macOS desktop through MCP
245
+ tools; the iOS app exposes iPhone capabilities through Nodmix node commands
246
+ such as `canvas.*`, `camera.*`, `screen.*`, `location.*`, and `talk.*`.
247
+
248
+ Agents can still operate the iOS app through Nodmix by invoking node
249
+ commands, but those calls go through the gateway node protocol and follow iOS
250
+ foreground/background limits. Use [Codex Computer Use](/plugins/codex-computer-use)
251
+ for local desktop control and this page for iOS node capabilities.
252
+
253
+ ### Canvas eval / snapshot
254
+
255
+ ```bash
256
+ nodmix nodes invoke --node "iOS Node" --command canvas.eval --params '{"javaScript":"(() => { const {ctx} = window.__nodmix; ctx.clearRect(0,0,innerWidth,innerHeight); ctx.lineWidth=6; ctx.strokeStyle=\"#ff2d55\"; ctx.beginPath(); ctx.moveTo(40,40); ctx.lineTo(innerWidth-40, innerHeight-40); ctx.stroke(); return \"ok\"; })()"}'
257
+ ```
258
+
259
+ ```bash
260
+ nodmix nodes invoke --node "iOS Node" --command canvas.snapshot --params '{"maxWidth":900,"format":"jpeg"}'
261
+ ```
262
+
263
+ ## Voice wake + talk mode
264
+
265
+ - Voice wake and talk mode are available in Settings.
266
+ - Talk-capable iOS nodes advertise the `talk` capability and can declare
267
+ `talk.ptt.start`, `talk.ptt.stop`, `talk.ptt.cancel`, and `talk.ptt.once`;
268
+ the Gateway allows those push-to-talk commands by default for trusted
269
+ Talk-capable nodes.
270
+ - iOS may suspend background audio; treat voice features as best-effort when the app is not active.
271
+
272
+ ## Common errors
273
+
274
+ - `NODE_BACKGROUND_UNAVAILABLE`: bring the iOS app to the foreground (canvas/camera/screen commands require it).
275
+ - `A2UI_HOST_NOT_CONFIGURED`: the Gateway did not advertise the Canvas plugin surface URL; check `plugins.entries.canvas.config.host` in [Gateway configuration](/gateway/configuration).
276
+ - Pairing prompt never appears: run `nodmix devices list` and approve manually.
277
+ - Reconnect fails after reinstall: the Keychain pairing token was cleared; re-pair the node.
278
+
279
+ ## Related docs
280
+
281
+ - [Pairing](/channels/pairing)
282
+ - [Discovery](/gateway/discovery)
283
+ - [Bonjour](/gateway/bonjour)
@@ -0,0 +1,141 @@
1
+ ---
2
+ summary: "Linux support + companion app status"
3
+ read_when:
4
+ - Looking for Linux companion app status
5
+ - Planning platform coverage or contributions
6
+ - Debugging Linux OOM kills or exit 137 on a VPS or container
7
+ title: "Linux app"
8
+ ---
9
+
10
+ The Gateway is fully supported on Linux. **Node is the recommended runtime**.
11
+ Bun is not recommended for the Gateway (WhatsApp/Telegram bugs).
12
+
13
+ Native Linux companion apps are planned. Contributions are welcome if you want to help build one.
14
+
15
+ ## Beginner quick path (VPS)
16
+
17
+ 1. Install Node 24 (recommended; Node 22 LTS, currently `22.19+`, still works for compatibility)
18
+ 2. `npm i -g nodmix@latest`
19
+ 3. `nodmix onboard --install-daemon`
20
+ 4. From your laptop: `ssh -N -L 18789:127.0.0.1:18789 <user>@<host>`
21
+ 5. Open `http://127.0.0.1:18789/` and authenticate with the configured shared secret (token by default; password if you set `gateway.auth.mode: "password"`)
22
+
23
+ Full Linux server guide: [Linux Server](/vps). Step-by-step VPS example: [exe.dev](/install/exe-dev)
24
+
25
+ ## Install
26
+
27
+ - [Getting Started](/start/getting-started)
28
+ - [Install & updates](/install/updating)
29
+ - Optional flows: [Bun (experimental)](/install/bun), [Nix](/install/nix), [Docker](/install/docker)
30
+
31
+ ## Gateway
32
+
33
+ - [Gateway runbook](/gateway)
34
+ - [Configuration](/gateway/configuration)
35
+
36
+ ## Gateway service install (CLI)
37
+
38
+ Use one of these:
39
+
40
+ ```
41
+ nodmix onboard --install-daemon
42
+ ```
43
+
44
+ Or:
45
+
46
+ ```
47
+ nodmix gateway install
48
+ ```
49
+
50
+ Or:
51
+
52
+ ```
53
+ nodmix configure
54
+ ```
55
+
56
+ Select **Gateway service** when prompted.
57
+
58
+ Repair/migrate:
59
+
60
+ ```
61
+ nodmix doctor
62
+ ```
63
+
64
+ ## System control (systemd user unit)
65
+
66
+ Nodmix installs a systemd **user** service by default. Use a **system**
67
+ service for shared or always-on servers. `nodmix gateway install` and
68
+ `nodmix onboard --install-daemon` already render the current canonical unit
69
+ for you; write one by hand only when you need a custom system/service-manager
70
+ setup. The full service guidance lives in the [Gateway runbook](/gateway).
71
+
72
+ Minimal setup:
73
+
74
+ Create `~/.config/systemd/user/nodmix-gateway[-<profile>].service`:
75
+
76
+ ```
77
+ [Unit]
78
+ Description=Nodmix Gateway (profile: <profile>, v<version>)
79
+ After=network-online.target
80
+ Wants=network-online.target
81
+
82
+ [Service]
83
+ ExecStart=/usr/local/bin/nodmix gateway --port 18789
84
+ Restart=always
85
+ RestartSec=5
86
+ TimeoutStopSec=30
87
+ TimeoutStartSec=30
88
+ SuccessExitStatus=0 143
89
+ KillMode=control-group
90
+
91
+ [Install]
92
+ WantedBy=default.target
93
+ ```
94
+
95
+ Enable it:
96
+
97
+ ```
98
+ systemctl --user enable --now nodmix-gateway[-<profile>].service
99
+ ```
100
+
101
+ ## Memory pressure and OOM kills
102
+
103
+ On Linux, the kernel chooses an OOM victim when a host, VM, or container cgroup
104
+ runs out of memory. The Gateway can be a poor victim because it owns long-lived
105
+ sessions and channel connections. Nodmix therefore biases transient child
106
+ processes to be killed before the Gateway when possible.
107
+
108
+ For eligible Linux child spawns, Nodmix starts the child through a short
109
+ `/bin/sh` wrapper that raises the child's own `oom_score_adj` to `1000`, then
110
+ `exec`s the real command. This is an unprivileged operation because the child is
111
+ only increasing its own OOM kill likelihood.
112
+
113
+ Covered child process surfaces include:
114
+
115
+ - supervisor-managed command children,
116
+ - PTY shell children,
117
+ - MCP stdio server children,
118
+ - Nodmix-launched browser/Chrome processes.
119
+
120
+ The wrapper is Linux-only and is skipped when `/bin/sh` is unavailable. It is
121
+ also skipped if the child env sets `NODMIX_CHILD_OOM_SCORE_ADJ=0`, `false`,
122
+ `no`, or `off`.
123
+
124
+ To verify a child process:
125
+
126
+ ```bash
127
+ cat /proc/<child-pid>/oom_score_adj
128
+ ```
129
+
130
+ Expected value for covered children is `1000`. The Gateway process should keep
131
+ its normal score, usually `0`.
132
+
133
+ This does not replace normal memory tuning. If a VPS or container repeatedly
134
+ kills children, increase the memory limit, reduce concurrency, or add stronger
135
+ resource controls such as systemd `MemoryMax=` or container-level memory limits.
136
+
137
+ ## Related
138
+
139
+ - [Install overview](/install)
140
+ - [Linux server](/vps)
141
+ - [Raspberry Pi](/platforms/raspberry-pi)
@@ -0,0 +1,79 @@
1
+ ---
2
+ summary: "Gateway runtime on macOS (external launchd service)"
3
+ read_when:
4
+ - Packaging Nodmix.app
5
+ - Debugging the macOS gateway launchd service
6
+ - Installing the gateway CLI for macOS
7
+ title: "Gateway on macOS"
8
+ ---
9
+
10
+ Nodmix.app no longer bundles Node/Bun or the Gateway runtime. The macOS app
11
+ expects an **external** `nodmix` CLI install, does not spawn the Gateway as a
12
+ child process, and manages a per-user launchd service to keep the Gateway
13
+ running (or attaches to an existing local Gateway if one is already running).
14
+
15
+ ## Install the CLI (required for local mode)
16
+
17
+ Node 24 is the default runtime on the Mac. Node 22 LTS, currently `22.19+`, still works for compatibility. Then install `nodmix` globally:
18
+
19
+ ```bash
20
+ npm install -g nodmix@<version>
21
+ ```
22
+
23
+ The macOS app's **Install CLI** button runs the same global install flow the app
24
+ uses internally: it prefers npm first, then pnpm, then bun if that is the only
25
+ detected package manager. Node remains the recommended Gateway runtime.
26
+
27
+ ## Launchd (Gateway as LaunchAgent)
28
+
29
+ Label:
30
+
31
+ - `ai.nodmix.gateway` (or `ai.nodmix.<profile>`; legacy `com.nodmix.*` may remain)
32
+
33
+ Plist location (per-user):
34
+
35
+ - `~/Library/LaunchAgents/ai.nodmix.gateway.plist`
36
+ (or `~/Library/LaunchAgents/ai.nodmix.<profile>.plist`)
37
+
38
+ Manager:
39
+
40
+ - The macOS app owns LaunchAgent install/update in Local mode.
41
+ - The CLI can also install it: `nodmix gateway install`.
42
+
43
+ Behavior:
44
+
45
+ - "Nodmix Active" enables/disables the LaunchAgent.
46
+ - App quit does **not** stop the gateway (launchd keeps it alive).
47
+ - If a Gateway is already running on the configured port, the app attaches to
48
+ it instead of starting a new one.
49
+
50
+ Logging:
51
+
52
+ - launchd stdout: `~/Library/Logs/nodmix/gateway.log` (profiles use `gateway-<profile>.log`)
53
+ - launchd stderr: suppressed
54
+
55
+ ## Version compatibility
56
+
57
+ The macOS app checks the gateway version against its own version. If they're
58
+ incompatible, update the global CLI to match the app version.
59
+
60
+ ## Smoke check
61
+
62
+ ```bash
63
+ nodmix --version
64
+
65
+ NODMIX_SKIP_CHANNELS=1 \
66
+ NODMIX_SKIP_CANVAS_HOST=1 \
67
+ nodmix gateway --port 18999 --bind loopback
68
+ ```
69
+
70
+ Then:
71
+
72
+ ```bash
73
+ nodmix gateway call health --url ws://127.0.0.1:18999 --timeout 3000
74
+ ```
75
+
76
+ ## Related
77
+
78
+ - [macOS app](/platforms/macos)
79
+ - [Gateway runbook](/gateway)
@@ -0,0 +1,128 @@
1
+ ---
2
+ summary: "Agent-controlled Canvas panel embedded via WKWebView + custom URL scheme"
3
+ read_when:
4
+ - Implementing the macOS Canvas panel
5
+ - Adding agent controls for visual workspace
6
+ - Debugging WKWebView canvas loads
7
+ title: "Canvas"
8
+ ---
9
+
10
+ The macOS app embeds an agent-controlled **Canvas panel** using `WKWebView`. It
11
+ is a lightweight visual workspace for HTML/CSS/JS, A2UI, and small interactive
12
+ UI surfaces.
13
+
14
+ ## Where Canvas lives
15
+
16
+ Canvas state is stored under Application Support:
17
+
18
+ - `~/Library/Application Support/Nodmix/canvas/<session>/...`
19
+
20
+ The Canvas panel serves those files via a **custom URL scheme**:
21
+
22
+ - `nodmix-canvas://<session>/<path>`
23
+
24
+ Examples:
25
+
26
+ - `nodmix-canvas://main/` → `<canvasRoot>/main/index.html`
27
+ - `nodmix-canvas://main/assets/app.css` → `<canvasRoot>/main/assets/app.css`
28
+ - `nodmix-canvas://main/widgets/todo/` → `<canvasRoot>/main/widgets/todo/index.html`
29
+
30
+ If no `index.html` exists at the root, the app shows a **built-in scaffold page**.
31
+
32
+ ## Panel behavior
33
+
34
+ - Borderless, resizable panel anchored near the menu bar (or mouse cursor).
35
+ - Remembers size/position per session.
36
+ - Auto-reloads when local canvas files change.
37
+ - Only one Canvas panel is visible at a time (session is switched as needed).
38
+
39
+ Canvas can be disabled from Settings → **Allow Canvas**. When disabled, canvas
40
+ node commands return `CANVAS_DISABLED`.
41
+
42
+ ## Agent API surface
43
+
44
+ Canvas is exposed via the **Gateway WebSocket**, so the agent can:
45
+
46
+ - show/hide the panel
47
+ - navigate to a path or URL
48
+ - evaluate JavaScript
49
+ - capture a snapshot image
50
+
51
+ CLI examples:
52
+
53
+ ```bash
54
+ nodmix nodes canvas present --node <id>
55
+ nodmix nodes canvas navigate --node <id> --url "/"
56
+ nodmix nodes canvas eval --node <id> --js "document.title"
57
+ nodmix nodes canvas snapshot --node <id>
58
+ ```
59
+
60
+ Notes:
61
+
62
+ - `canvas.navigate` accepts **local canvas paths**, `http(s)` URLs, and `file://` URLs.
63
+ - If you pass `"/"`, the Canvas shows the local scaffold or `index.html`.
64
+
65
+ ## A2UI in Canvas
66
+
67
+ A2UI is hosted by the Gateway canvas host and rendered inside the Canvas panel.
68
+ When the Gateway advertises a Canvas host, the macOS app auto-navigates to the
69
+ A2UI host page on first open.
70
+
71
+ Default A2UI host URL:
72
+
73
+ ```
74
+ http://<gateway-host>:18789/__nodmix__/a2ui/
75
+ ```
76
+
77
+ ### A2UI commands (v0.8)
78
+
79
+ Canvas currently accepts **A2UI v0.8** server→client messages:
80
+
81
+ - `beginRendering`
82
+ - `surfaceUpdate`
83
+ - `dataModelUpdate`
84
+ - `deleteSurface`
85
+
86
+ `createSurface` (v0.9) is not supported.
87
+
88
+ CLI example:
89
+
90
+ ```bash
91
+ cat > /tmp/a2ui-v0.8.jsonl <<'EOFA2'
92
+ {"surfaceUpdate":{"surfaceId":"main","components":[{"id":"root","component":{"Column":{"children":{"explicitList":["title","content"]}}}},{"id":"title","component":{"Text":{"text":{"literalString":"Canvas (A2UI v0.8)"},"usageHint":"h1"}}},{"id":"content","component":{"Text":{"text":{"literalString":"If you can read this, A2UI push works."},"usageHint":"body"}}}]}}
93
+ {"beginRendering":{"surfaceId":"main","root":"root"}}
94
+ EOFA2
95
+
96
+ nodmix nodes canvas a2ui push --jsonl /tmp/a2ui-v0.8.jsonl --node <id>
97
+ ```
98
+
99
+ Quick smoke:
100
+
101
+ ```bash
102
+ nodmix nodes canvas a2ui push --node <id> --text "Hello from A2UI"
103
+ ```
104
+
105
+ ## Triggering agent runs from Canvas
106
+
107
+ Canvas can trigger new agent runs via deep links:
108
+
109
+ - `nodmix://agent?...`
110
+
111
+ Example (in JS):
112
+
113
+ ```js
114
+ window.location.href = "nodmix://agent?message=Review%20this%20design";
115
+ ```
116
+
117
+ The app prompts for confirmation unless a valid key is provided.
118
+
119
+ ## Security notes
120
+
121
+ - Canvas scheme blocks directory traversal; files must live under the session root.
122
+ - Local Canvas content uses a custom scheme (no loopback server required).
123
+ - External `http(s)` URLs are allowed only when explicitly navigated.
124
+
125
+ ## Related
126
+
127
+ - [macOS app](/platforms/macos)
128
+ - [WebChat](/web/webchat)
@@ -0,0 +1,72 @@
1
+ ---
2
+ summary: "Gateway lifecycle on macOS (launchd)"
3
+ read_when:
4
+ - Integrating the mac app with the gateway lifecycle
5
+ title: "Gateway lifecycle on macOS"
6
+ ---
7
+
8
+ The macOS app **manages the Gateway via launchd** by default and does not spawn
9
+ the Gateway as a child process. It first tries to attach to an already-running
10
+ Gateway on the configured port; if none is reachable, it enables the launchd
11
+ service via the external `nodmix` CLI (no embedded runtime). This gives you
12
+ reliable auto-start at login and restart on crashes.
13
+
14
+ Child-process mode (Gateway spawned directly by the app) is **not in use** today.
15
+ If you need tighter coupling to the UI, run the Gateway manually in a terminal.
16
+
17
+ ## Default behavior (launchd)
18
+
19
+ - The app installs a per-user LaunchAgent labeled `ai.nodmix.gateway`
20
+ (or `ai.nodmix.<profile>` when using `--profile`/`NODMIX_PROFILE`; legacy `com.nodmix.*` is supported).
21
+ - When Local mode is enabled, the app ensures the LaunchAgent is loaded and
22
+ starts the Gateway if needed.
23
+ - Logs are written to the launchd gateway log path (visible in Debug Settings).
24
+
25
+ Common commands:
26
+
27
+ ```bash
28
+ launchctl kickstart -k gui/$UID/ai.nodmix.gateway
29
+ launchctl bootout gui/$UID/ai.nodmix.gateway
30
+ ```
31
+
32
+ Replace the label with `ai.nodmix.<profile>` when running a named profile.
33
+
34
+ ## Unsigned dev builds
35
+
36
+ `scripts/restart-mac.sh --no-sign` is for fast local builds when you don't have
37
+ signing keys. To prevent launchd from pointing at an unsigned relay binary, it:
38
+
39
+ - Writes `~/.nodmix/disable-launchagent`.
40
+
41
+ Signed runs of `scripts/restart-mac.sh` clear this override if the marker is
42
+ present. To reset manually:
43
+
44
+ ```bash
45
+ rm ~/.nodmix/disable-launchagent
46
+ ```
47
+
48
+ ## Attach-only mode
49
+
50
+ To force the macOS app to **never install or manage launchd**, launch it with
51
+ `--attach-only` (or `--no-launchd`). This sets `~/.nodmix/disable-launchagent`,
52
+ so the app only attaches to an already running Gateway. You can toggle the same
53
+ behavior in Debug Settings.
54
+
55
+ ## Remote mode
56
+
57
+ Remote mode never starts a local Gateway. The app uses an SSH tunnel to the
58
+ remote host and connects over that tunnel.
59
+
60
+ ## Why we prefer launchd
61
+
62
+ - Auto-start at login.
63
+ - Built-in restart/KeepAlive semantics.
64
+ - Predictable logs and supervision.
65
+
66
+ If a true child-process mode is ever needed again, it should be documented as a
67
+ separate, explicit dev-only mode.
68
+
69
+ ## Related
70
+
71
+ - [macOS app](/platforms/macos)
72
+ - [Gateway runbook](/gateway)