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,1180 @@
1
+ ---
2
+ summary: "Run Nodmix with Ollama (cloud and local models)"
3
+ read_when:
4
+ - You want to run Nodmix with cloud or local models via Ollama
5
+ - You need Ollama setup and configuration guidance
6
+ - You want Ollama vision models for image understanding
7
+ title: "Ollama"
8
+ ---
9
+
10
+ Nodmix integrates with Ollama's native API (`/api/chat`) for hosted cloud models and local/self-hosted Ollama servers. You can use Ollama in three modes: `Cloud + Local` through a reachable Ollama host, `Cloud only` against `https://ollama.com`, or `Local only` against a reachable Ollama host.
11
+
12
+ <Warning>
13
+ **Remote Ollama users**: Do not use the `/v1` OpenAI-compatible URL (`http://host:11434/v1`) with Nodmix. This breaks tool calling and models may output raw tool JSON as plain text. Use the native Ollama API URL instead: `baseUrl: "http://host:11434"` (no `/v1`).
14
+ </Warning>
15
+
16
+ Ollama provider config uses `baseUrl` as the canonical key. Nodmix also accepts `baseURL` for compatibility with OpenAI SDK-style examples, but new config should prefer `baseUrl`.
17
+
18
+ ## Auth rules
19
+
20
+ <AccordionGroup>
21
+ <Accordion title="Local and LAN hosts">
22
+ Local and LAN Ollama hosts do not need a real bearer token. Nodmix uses the local `ollama-local` marker only for loopback, private-network, `.local`, and bare-hostname Ollama base URLs.
23
+ </Accordion>
24
+ <Accordion title="Remote and Ollama Cloud hosts">
25
+ Remote public hosts and Ollama Cloud (`https://ollama.com`) require a real credential through `OLLAMA_API_KEY`, an auth profile, or the provider's `apiKey`.
26
+ </Accordion>
27
+ <Accordion title="Custom provider ids">
28
+ Custom provider ids that set `api: "ollama"` follow the same rules. For example, an `ollama-remote` provider that points at a private LAN Ollama host can use `apiKey: "ollama-local"` and sub-agents will resolve that marker through the Ollama provider hook instead of treating it as a missing credential. Memory search can also set `agents.defaults.memorySearch.provider` to that custom provider id so embeddings use the matching Ollama endpoint.
29
+ </Accordion>
30
+ <Accordion title="Auth profiles">
31
+ `auth-profiles.json` stores the credential for a provider id. Put endpoint settings (`baseUrl`, `api`, model ids, headers, timeouts) in `models.providers.<id>`. Older flat auth-profile files such as `{ "ollama-windows": { "apiKey": "ollama-local" } }` are not a runtime format; run `nodmix doctor --fix` to rewrite them to the canonical `ollama-windows:default` API-key profile with a backup. `baseUrl` in that file is compatibility noise and should be moved to provider config.
32
+ </Accordion>
33
+ <Accordion title="Memory embedding scope">
34
+ When Ollama is used for memory embeddings, bearer auth is scoped to the host where it was declared:
35
+
36
+ - A provider-level key is sent only to that provider's Ollama host.
37
+ - `agents.*.memorySearch.remote.apiKey` is sent only to its remote embedding host.
38
+ - A pure `OLLAMA_API_KEY` env value is treated as the Ollama Cloud convention, not sent to local or self-hosted hosts by default.
39
+
40
+ </Accordion>
41
+ </AccordionGroup>
42
+
43
+ ## Getting started
44
+
45
+ Choose your preferred setup method and mode.
46
+
47
+ <Tabs>
48
+ <Tab title="Onboarding (recommended)">
49
+ **Best for:** fastest path to a working Ollama cloud or local setup.
50
+
51
+ <Steps>
52
+ <Step title="Run onboarding">
53
+ ```bash
54
+ nodmix onboard
55
+ ```
56
+
57
+ Select **Ollama** from the provider list.
58
+ </Step>
59
+ <Step title="Choose your mode">
60
+ - **Cloud + Local** — local Ollama host plus cloud models routed through that host
61
+ - **Cloud only** — hosted Ollama models via `https://ollama.com`
62
+ - **Local only** — local models only
63
+
64
+ </Step>
65
+ <Step title="Select a model">
66
+ `Cloud only` prompts for `OLLAMA_API_KEY` and suggests hosted cloud defaults. `Cloud + Local` and `Local only` ask for an Ollama base URL, discover available models, and auto-pull the selected local model if it is not available yet. When Ollama reports an installed `:latest` tag such as `gemma4:latest`, setup shows that installed model once instead of showing both `gemma4` and `gemma4:latest` or pulling the bare alias again. `Cloud + Local` also checks whether that Ollama host is signed in for cloud access.
67
+ </Step>
68
+ <Step title="Verify the model is available">
69
+ ```bash
70
+ nodmix models list --provider ollama
71
+ ```
72
+ </Step>
73
+ </Steps>
74
+
75
+ ### Non-interactive mode
76
+
77
+ ```bash
78
+ nodmix onboard --non-interactive \
79
+ --auth-choice ollama \
80
+ --accept-risk
81
+ ```
82
+
83
+ Optionally specify a custom base URL or model:
84
+
85
+ ```bash
86
+ nodmix onboard --non-interactive \
87
+ --auth-choice ollama \
88
+ --custom-base-url "http://ollama-host:11434" \
89
+ --custom-model-id "qwen3.5:27b" \
90
+ --accept-risk
91
+ ```
92
+
93
+ </Tab>
94
+
95
+ <Tab title="Manual setup">
96
+ **Best for:** full control over cloud or local setup.
97
+
98
+ <Steps>
99
+ <Step title="Choose cloud or local">
100
+ - **Cloud + Local**: install Ollama, sign in with `ollama signin`, and route cloud requests through that host
101
+ - **Cloud only**: use `https://ollama.com` with an `OLLAMA_API_KEY`
102
+ - **Local only**: install Ollama from [ollama.com/download](https://ollama.com/download)
103
+
104
+ </Step>
105
+ <Step title="Pull a local model (local only)">
106
+ ```bash
107
+ ollama pull gemma4
108
+ # or
109
+ ollama pull gpt-oss:20b
110
+ # or
111
+ ollama pull llama3.3
112
+ ```
113
+ </Step>
114
+ <Step title="Enable Ollama for Nodmix">
115
+ For `Cloud only`, use your real `OLLAMA_API_KEY`. For host-backed setups, any placeholder value works:
116
+
117
+ ```bash
118
+ # Cloud
119
+ export OLLAMA_API_KEY="your-ollama-api-key"
120
+
121
+ # Local-only
122
+ export OLLAMA_API_KEY="ollama-local"
123
+
124
+ # Or configure in your config file
125
+ nodmix config set models.providers.ollama.apiKey "OLLAMA_API_KEY"
126
+ ```
127
+ </Step>
128
+ <Step title="Inspect and set your model">
129
+ ```bash
130
+ nodmix models list
131
+ nodmix models set ollama/gemma4
132
+ ```
133
+
134
+ Or set the default in config:
135
+
136
+ ```json5
137
+ {
138
+ agents: {
139
+ defaults: {
140
+ model: { primary: "ollama/gemma4" },
141
+ },
142
+ },
143
+ }
144
+ ```
145
+ </Step>
146
+ </Steps>
147
+
148
+ </Tab>
149
+ </Tabs>
150
+
151
+ ## Cloud models
152
+
153
+ <Tabs>
154
+ <Tab title="Cloud + Local">
155
+ `Cloud + Local` uses a reachable Ollama host as the control point for both local and cloud models. This is Ollama's preferred hybrid flow.
156
+
157
+ Use **Cloud + Local** during setup. Nodmix prompts for the Ollama base URL, discovers local models from that host, and checks whether the host is signed in for cloud access with `ollama signin`. When the host is signed in, Nodmix also suggests hosted cloud defaults such as `kimi-k2.5:cloud`, `minimax-m2.7:cloud`, and `glm-5.1:cloud`.
158
+
159
+ If the host is not signed in yet, Nodmix keeps the setup local-only until you run `ollama signin`.
160
+
161
+ </Tab>
162
+
163
+ <Tab title="Cloud only">
164
+ `Cloud only` runs against Ollama's hosted API at `https://ollama.com`.
165
+
166
+ Use **Cloud only** during setup. Nodmix prompts for `OLLAMA_API_KEY`, sets `baseUrl: "https://ollama.com"`, and seeds the hosted cloud model list. This path does **not** require a local Ollama server or `ollama signin`.
167
+
168
+ The cloud model list shown during `nodmix onboard` is populated live from `https://ollama.com/api/tags`, capped at 500 entries, so the picker reflects the current hosted catalog rather than a static seed. If `ollama.com` is unreachable or returns no models at setup time, Nodmix falls back to the previous hardcoded suggestions so onboarding still completes.
169
+
170
+ </Tab>
171
+
172
+ <Tab title="Local only">
173
+ In local-only mode, Nodmix discovers models from the configured Ollama instance. This path is for local or self-hosted Ollama servers.
174
+
175
+ Nodmix currently suggests `gemma4` as the local default.
176
+
177
+ </Tab>
178
+ </Tabs>
179
+
180
+ ## Model discovery (implicit provider)
181
+
182
+ When you set `OLLAMA_API_KEY` (or an auth profile) and **do not** define `models.providers.ollama` or another custom remote provider with `api: "ollama"`, Nodmix discovers models from the local Ollama instance at `http://127.0.0.1:11434`.
183
+
184
+ | Behavior | Detail |
185
+ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
186
+ | Catalog query | Queries `/api/tags` |
187
+ | Capability detection | Uses best-effort `/api/show` lookups to read `contextWindow`, expanded `num_ctx` Modelfile parameters, and capabilities including vision/tools |
188
+ | Vision models | Models with a `vision` capability reported by `/api/show` are marked as image-capable (`input: ["text", "image"]`), so Nodmix auto-injects images into the prompt |
189
+ | Reasoning detection | Uses `/api/show` capabilities when available, including `thinking`; falls back to a model-name heuristic (`r1`, `reasoning`, `think`) when Ollama omits capabilities |
190
+ | Token limits | Sets `maxTokens` to the default Ollama max-token cap used by Nodmix |
191
+ | Costs | Sets all costs to `0` |
192
+
193
+ This avoids manual model entries while keeping the catalog aligned with the local Ollama instance. You can use a full ref such as `ollama/<pulled-model>:latest` in local `infer model run`; Nodmix resolves that installed model from Ollama's live catalog without requiring a hand-written `models.json` entry.
194
+
195
+ For signed-in Ollama hosts, some `:cloud` models may be usable through `/api/chat`
196
+ and `/api/show` before they appear in `/api/tags`. When you explicitly select a
197
+ full `ollama/<model>:cloud` ref, Nodmix validates that exact missing model with
198
+ `/api/show` and adds it to the runtime catalog only if Ollama confirms model
199
+ metadata. Typos still fail as unknown models instead of being auto-created.
200
+
201
+ ```bash
202
+ # See what models are available
203
+ ollama list
204
+ nodmix models list
205
+ ```
206
+
207
+ For a narrow text-generation smoke test that avoids the full agent tool surface,
208
+ use local `infer model run` with a full Ollama model ref:
209
+
210
+ ```bash
211
+ OLLAMA_API_KEY=ollama-local \
212
+ nodmix infer model run \
213
+ --local \
214
+ --model ollama/llama3.2:latest \
215
+ --prompt "Reply with exactly: pong" \
216
+ --json
217
+ ```
218
+
219
+ That path still uses Nodmix's configured provider, auth, and native Ollama
220
+ transport, but it does not start a chat-agent turn or load MCP/tool context. If
221
+ this succeeds while normal agent replies fail, troubleshoot the model's agent
222
+ prompt/tool capacity next.
223
+
224
+ For a narrow vision-model smoke test on the same lean path, add one or more
225
+ image files to `infer model run`. This sends the prompt and image directly to
226
+ the selected Ollama vision model without loading chat tools, memory, or prior
227
+ session context:
228
+
229
+ ```bash
230
+ OLLAMA_API_KEY=ollama-local \
231
+ nodmix infer model run \
232
+ --local \
233
+ --model ollama/qwen2.5vl:7b \
234
+ --prompt "Describe this image in one sentence." \
235
+ --file ./photo.jpg \
236
+ --json
237
+ ```
238
+
239
+ `model run --file` accepts files detected as `image/*`, including common PNG,
240
+ JPEG, and WebP inputs. Non-image files are rejected before Ollama is called.
241
+ For speech recognition, use `nodmix infer audio transcribe` instead.
242
+
243
+ When you switch a conversation with `/model ollama/<model>`, Nodmix treats
244
+ that as an exact user selection. If the configured Ollama `baseUrl` is
245
+ unreachable, the next reply fails with the provider error instead of silently
246
+ answering from another configured fallback model.
247
+
248
+ Isolated cron jobs do one extra local safety check before they start the agent
249
+ turn. If the selected model resolves to a local, private-network, or `.local`
250
+ Ollama provider and `/api/tags` is unreachable, Nodmix records that cron run
251
+ as `skipped` with the selected `ollama/<model>` in the error text. The endpoint
252
+ preflight is cached for 5 minutes, so multiple cron jobs pointed at the same
253
+ stopped Ollama daemon do not all launch failing model requests.
254
+
255
+ Live-verify the local text path, native stream path, and embeddings against
256
+ local Ollama with:
257
+
258
+ ```bash
259
+ NODMIX_LIVE_TEST=1 NODMIX_LIVE_OLLAMA=1 NODMIX_LIVE_OLLAMA_WEB_SEARCH=0 \
260
+ pnpm test:live -- extensions/ollama/ollama.live.test.ts
261
+ ```
262
+
263
+ To add a new model, simply pull it with Ollama:
264
+
265
+ ```bash
266
+ ollama pull mistral
267
+ ```
268
+
269
+ The new model will be automatically discovered and available to use.
270
+
271
+ <Note>
272
+ If you set `models.providers.ollama` explicitly, or configure a custom remote provider such as `models.providers.ollama-cloud` with `api: "ollama"`, auto-discovery is skipped and you must define models manually. Loopback custom providers such as `http://127.0.0.2:11434` are still treated as local. See the explicit config section below.
273
+ </Note>
274
+
275
+ ## Vision and image description
276
+
277
+ The bundled Ollama plugin registers Ollama as an image-capable media-understanding provider. This lets Nodmix route explicit image-description requests and configured image-model defaults through local or hosted Ollama vision models.
278
+
279
+ For local vision, pull a model that supports images:
280
+
281
+ ```bash
282
+ ollama pull qwen2.5vl:7b
283
+ export OLLAMA_API_KEY="ollama-local"
284
+ ```
285
+
286
+ Then verify with the infer CLI:
287
+
288
+ ```bash
289
+ nodmix infer image describe \
290
+ --file ./photo.jpg \
291
+ --model ollama/qwen2.5vl:7b \
292
+ --json
293
+ ```
294
+
295
+ `--model` must be a full `<provider/model>` ref. When it is set, `nodmix infer image describe` runs that model directly instead of skipping description because the model supports native vision.
296
+
297
+ Use `infer image describe` when you want Nodmix's image-understanding provider flow, configured `agents.defaults.imageModel`, and image-description output shape. Use `infer model run --file` when you want a raw multimodal model probe with a custom prompt and one or more images.
298
+
299
+ To make Ollama the default image-understanding model for inbound media, configure `agents.defaults.imageModel`:
300
+
301
+ ```json5
302
+ {
303
+ agents: {
304
+ defaults: {
305
+ imageModel: {
306
+ primary: "ollama/qwen2.5vl:7b",
307
+ },
308
+ },
309
+ },
310
+ }
311
+ ```
312
+
313
+ Prefer the full `ollama/<model>` ref. If the same model is listed under `models.providers.ollama.models` with `input: ["text", "image"]` and no other configured image provider exposes that bare model ID, Nodmix also normalizes a bare `imageModel` ref such as `qwen2.5vl:7b` to `ollama/qwen2.5vl:7b`. If more than one configured image provider has the same bare ID, use the provider prefix explicitly.
314
+
315
+ Slow local vision models can need a longer image-understanding timeout than cloud models. They can also crash or stop when Ollama tries to allocate the full advertised vision context on constrained hardware. Set a capability timeout, and cap `num_ctx` on the model entry when you only need a normal image-description turn:
316
+
317
+ ```json5
318
+ {
319
+ models: {
320
+ providers: {
321
+ ollama: {
322
+ models: [
323
+ {
324
+ id: "qwen2.5vl:7b",
325
+ name: "qwen2.5vl:7b",
326
+ input: ["text", "image"],
327
+ params: { num_ctx: 2048, keep_alive: "1m" },
328
+ },
329
+ ],
330
+ },
331
+ },
332
+ },
333
+ tools: {
334
+ media: {
335
+ image: {
336
+ timeoutSeconds: 180,
337
+ models: [{ provider: "ollama", model: "qwen2.5vl:7b", timeoutSeconds: 300 }],
338
+ },
339
+ },
340
+ },
341
+ }
342
+ ```
343
+
344
+ This timeout applies to inbound image understanding and to the explicit `image` tool the agent can call during a turn. Provider-level `models.providers.ollama.timeoutSeconds` still controls the underlying Ollama HTTP request guard for normal model calls.
345
+
346
+ Live-verify the explicit image tool against local Ollama with:
347
+
348
+ ```bash
349
+ NODMIX_LIVE_TEST=1 NODMIX_LIVE_OLLAMA_IMAGE=1 \
350
+ pnpm test:live -- src/agents/tools/image-tool.ollama.live.test.ts
351
+ ```
352
+
353
+ If you define `models.providers.ollama.models` manually, mark vision models with image input support:
354
+
355
+ ```json5
356
+ {
357
+ id: "qwen2.5vl:7b",
358
+ name: "qwen2.5vl:7b",
359
+ input: ["text", "image"],
360
+ contextWindow: 128000,
361
+ maxTokens: 8192,
362
+ }
363
+ ```
364
+
365
+ Nodmix rejects image-description requests for models that are not marked image-capable. With implicit discovery, Nodmix reads this from Ollama when `/api/show` reports a vision capability.
366
+
367
+ ## Configuration
368
+
369
+ <Tabs>
370
+ <Tab title="Basic (implicit discovery)">
371
+ The simplest local-only enablement path is via environment variable:
372
+
373
+ ```bash
374
+ export OLLAMA_API_KEY="ollama-local"
375
+ ```
376
+
377
+ <Tip>
378
+ If `OLLAMA_API_KEY` is set, you can omit `apiKey` in the provider entry and Nodmix will fill it for availability checks.
379
+ </Tip>
380
+
381
+ </Tab>
382
+
383
+ <Tab title="Explicit (manual models)">
384
+ Use explicit config when you want hosted cloud setup, Ollama runs on another host/port, you want to force specific context windows or model lists, or you want fully manual model definitions.
385
+
386
+ ```json5
387
+ {
388
+ models: {
389
+ providers: {
390
+ ollama: {
391
+ baseUrl: "https://ollama.com",
392
+ apiKey: "OLLAMA_API_KEY",
393
+ api: "ollama",
394
+ models: [
395
+ {
396
+ id: "kimi-k2.5:cloud",
397
+ name: "kimi-k2.5:cloud",
398
+ reasoning: false,
399
+ input: ["text", "image"],
400
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
401
+ contextWindow: 128000,
402
+ maxTokens: 8192
403
+ }
404
+ ]
405
+ }
406
+ }
407
+ }
408
+ }
409
+ ```
410
+
411
+ </Tab>
412
+
413
+ <Tab title="Custom base URL">
414
+ If Ollama is running on a different host or port (explicit config disables auto-discovery, so define models manually):
415
+
416
+ ```json5
417
+ {
418
+ models: {
419
+ providers: {
420
+ ollama: {
421
+ apiKey: "ollama-local",
422
+ baseUrl: "http://ollama-host:11434", // No /v1 - use native Ollama API URL
423
+ api: "ollama", // Set explicitly to guarantee native tool-calling behavior
424
+ timeoutSeconds: 300, // Optional: give cold local models longer to connect and stream
425
+ models: [
426
+ {
427
+ id: "qwen3:32b",
428
+ name: "qwen3:32b",
429
+ params: {
430
+ keep_alive: "15m", // Optional: keep the model loaded between turns
431
+ },
432
+ },
433
+ ],
434
+ },
435
+ },
436
+ },
437
+ }
438
+ ```
439
+
440
+ <Warning>
441
+ Do not add `/v1` to the URL. The `/v1` path uses OpenAI-compatible mode, where tool calling is not reliable. Use the base Ollama URL without a path suffix.
442
+ </Warning>
443
+
444
+ </Tab>
445
+ </Tabs>
446
+
447
+ ## Common recipes
448
+
449
+ Use these as starting points and replace model IDs with the exact names from `ollama list` or `nodmix models list --provider ollama`.
450
+
451
+ <AccordionGroup>
452
+ <Accordion title="Local model with auto-discovery">
453
+ Use this when Ollama runs on the same machine as the Gateway and you want Nodmix to discover the installed models automatically.
454
+
455
+ ```bash
456
+ ollama serve
457
+ ollama pull gemma4
458
+ export OLLAMA_API_KEY="ollama-local"
459
+ nodmix models list --provider ollama
460
+ nodmix models set ollama/gemma4
461
+ ```
462
+
463
+ This path keeps config minimal. Do not add a `models.providers.ollama` block unless you want to define models manually.
464
+
465
+ </Accordion>
466
+
467
+ <Accordion title="LAN Ollama host with manual models">
468
+ Use native Ollama URLs for LAN hosts. Do not add `/v1`.
469
+
470
+ ```json5
471
+ {
472
+ models: {
473
+ providers: {
474
+ ollama: {
475
+ baseUrl: "http://gpu-box.local:11434",
476
+ apiKey: "ollama-local",
477
+ api: "ollama",
478
+ timeoutSeconds: 300,
479
+ contextWindow: 32768,
480
+ maxTokens: 8192,
481
+ models: [
482
+ {
483
+ id: "qwen3.5:9b",
484
+ name: "qwen3.5:9b",
485
+ reasoning: true,
486
+ input: ["text"],
487
+ params: {
488
+ num_ctx: 32768,
489
+ thinking: false,
490
+ keep_alive: "15m",
491
+ },
492
+ },
493
+ ],
494
+ },
495
+ },
496
+ },
497
+ agents: {
498
+ defaults: {
499
+ model: { primary: "ollama/qwen3.5:9b" },
500
+ },
501
+ },
502
+ }
503
+ ```
504
+
505
+ `contextWindow` is the Nodmix-side context budget. `params.num_ctx` is sent to Ollama for the request. Keep them aligned when your hardware cannot run the model's full advertised context.
506
+
507
+ </Accordion>
508
+
509
+ <Accordion title="Ollama Cloud only">
510
+ Use this when you do not run a local daemon and want hosted Ollama models directly.
511
+
512
+ ```bash
513
+ export OLLAMA_API_KEY="your-ollama-api-key"
514
+ ```
515
+
516
+ ```json5
517
+ {
518
+ models: {
519
+ providers: {
520
+ ollama: {
521
+ baseUrl: "https://ollama.com",
522
+ apiKey: "OLLAMA_API_KEY",
523
+ api: "ollama",
524
+ models: [
525
+ {
526
+ id: "kimi-k2.5:cloud",
527
+ name: "kimi-k2.5:cloud",
528
+ reasoning: false,
529
+ input: ["text", "image"],
530
+ contextWindow: 128000,
531
+ maxTokens: 8192,
532
+ },
533
+ ],
534
+ },
535
+ },
536
+ },
537
+ agents: {
538
+ defaults: {
539
+ model: { primary: "ollama/kimi-k2.5:cloud" },
540
+ },
541
+ },
542
+ }
543
+ ```
544
+
545
+ </Accordion>
546
+
547
+ <Accordion title="Cloud plus local through a signed-in daemon">
548
+ Use this when a local or LAN Ollama daemon is signed in with `ollama signin` and should serve both local models and `:cloud` models.
549
+
550
+ ```bash
551
+ ollama signin
552
+ ollama pull gemma4
553
+ ```
554
+
555
+ ```json5
556
+ {
557
+ models: {
558
+ providers: {
559
+ ollama: {
560
+ baseUrl: "http://127.0.0.1:11434",
561
+ apiKey: "ollama-local",
562
+ api: "ollama",
563
+ timeoutSeconds: 300,
564
+ models: [
565
+ { id: "gemma4", name: "gemma4", input: ["text"] },
566
+ { id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", input: ["text", "image"] },
567
+ ],
568
+ },
569
+ },
570
+ },
571
+ agents: {
572
+ defaults: {
573
+ model: {
574
+ primary: "ollama/gemma4",
575
+ fallbacks: ["ollama/kimi-k2.5:cloud"],
576
+ },
577
+ },
578
+ },
579
+ }
580
+ ```
581
+
582
+ </Accordion>
583
+
584
+ <Accordion title="Multiple Ollama hosts">
585
+ Use custom provider IDs when you have more than one Ollama server. Each provider gets its own host, models, auth, timeout, and model refs.
586
+
587
+ ```json5
588
+ {
589
+ models: {
590
+ providers: {
591
+ "ollama-fast": {
592
+ baseUrl: "http://mini.local:11434",
593
+ apiKey: "ollama-local",
594
+ api: "ollama",
595
+ contextWindow: 32768,
596
+ models: [{ id: "gemma4", name: "gemma4", input: ["text"] }],
597
+ },
598
+ "ollama-large": {
599
+ baseUrl: "http://gpu-box.local:11434",
600
+ apiKey: "ollama-local",
601
+ api: "ollama",
602
+ timeoutSeconds: 420,
603
+ contextWindow: 131072,
604
+ maxTokens: 16384,
605
+ models: [{ id: "qwen3.5:27b", name: "qwen3.5:27b", input: ["text"] }],
606
+ },
607
+ },
608
+ },
609
+ agents: {
610
+ defaults: {
611
+ model: {
612
+ primary: "ollama-fast/gemma4",
613
+ fallbacks: ["ollama-large/qwen3.5:27b"],
614
+ },
615
+ },
616
+ },
617
+ }
618
+ ```
619
+
620
+ When Nodmix sends the request, the active provider prefix is stripped so `ollama-large/qwen3.5:27b` reaches Ollama as `qwen3.5:27b`.
621
+
622
+ </Accordion>
623
+
624
+ <Accordion title="Lean local model profile">
625
+ Some local models can answer simple prompts but struggle with the full agent tool surface. Start by limiting tools and context before changing global runtime settings.
626
+
627
+ ```json5
628
+ {
629
+ agents: {
630
+ list: [
631
+ {
632
+ id: "local",
633
+ experimental: {
634
+ localModelLean: true,
635
+ },
636
+ model: { primary: "ollama/gemma4" },
637
+ },
638
+ ],
639
+ },
640
+ models: {
641
+ providers: {
642
+ ollama: {
643
+ baseUrl: "http://127.0.0.1:11434",
644
+ apiKey: "ollama-local",
645
+ api: "ollama",
646
+ contextWindow: 32768,
647
+ models: [
648
+ {
649
+ id: "gemma4",
650
+ name: "gemma4",
651
+ input: ["text"],
652
+ params: { num_ctx: 32768 },
653
+ compat: { supportsTools: false },
654
+ },
655
+ ],
656
+ },
657
+ },
658
+ },
659
+ }
660
+ ```
661
+
662
+ Use `compat.supportsTools: false` only when the model or server reliably fails on tool schemas. It trades agent capability for stability.
663
+ `localModelLean` removes the browser, cron, and message tools from the agent surface, but it does not change Ollama's runtime context or thinking mode. Pair it with explicit `params.num_ctx` and `params.thinking: false` for small Qwen-style thinking models that loop or spend their response budget on hidden reasoning.
664
+
665
+ </Accordion>
666
+ </AccordionGroup>
667
+
668
+ ### Model selection
669
+
670
+ Once configured, all your Ollama models are available:
671
+
672
+ ```json5
673
+ {
674
+ agents: {
675
+ defaults: {
676
+ model: {
677
+ primary: "ollama/gpt-oss:20b",
678
+ fallbacks: ["ollama/llama3.3", "ollama/qwen2.5-coder:32b"],
679
+ },
680
+ },
681
+ },
682
+ }
683
+ ```
684
+
685
+ Custom Ollama provider ids are also supported. When a model ref uses the active
686
+ provider prefix, such as `ollama-spark/qwen3:32b`, Nodmix strips only that
687
+ prefix before calling Ollama so the server receives `qwen3:32b`.
688
+
689
+ For slow local models, prefer provider-scoped request tuning before raising the
690
+ whole agent runtime timeout:
691
+
692
+ ```json5
693
+ {
694
+ models: {
695
+ providers: {
696
+ ollama: {
697
+ timeoutSeconds: 300,
698
+ models: [
699
+ {
700
+ id: "gemma4:26b",
701
+ name: "gemma4:26b",
702
+ params: { keep_alive: "15m" },
703
+ },
704
+ ],
705
+ },
706
+ },
707
+ },
708
+ }
709
+ ```
710
+
711
+ `timeoutSeconds` applies to the model HTTP request, including connection setup,
712
+ headers, body streaming, and the total guarded-fetch abort. `params.keep_alive`
713
+ is forwarded to Ollama as top-level `keep_alive` on native `/api/chat` requests;
714
+ set it per model when first-turn load time is the bottleneck.
715
+
716
+ ### Quick verification
717
+
718
+ ```bash
719
+ # Ollama daemon visible to this machine
720
+ curl http://127.0.0.1:11434/api/tags
721
+
722
+ # Nodmix catalog and selected model
723
+ nodmix models list --provider ollama
724
+ nodmix models status
725
+
726
+ # Direct model smoke
727
+ nodmix infer model run \
728
+ --model ollama/gemma4 \
729
+ --prompt "Reply with exactly: ok"
730
+ ```
731
+
732
+ For remote hosts, replace `127.0.0.1` with the host used in `baseUrl`. If `curl` works but Nodmix does not, check whether the Gateway runs on a different machine, container, or service account.
733
+
734
+ ## Ollama Web Search
735
+
736
+ Nodmix supports **Ollama Web Search** as a bundled `web_search` provider.
737
+
738
+ | Property | Detail |
739
+ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
740
+ | Host | Uses your configured Ollama host (`models.providers.ollama.baseUrl` when set, otherwise `http://127.0.0.1:11434`); `https://ollama.com` uses the hosted API directly |
741
+ | Auth | Key-free for signed-in local Ollama hosts; `OLLAMA_API_KEY` or configured provider auth for direct `https://ollama.com` search or auth-protected hosts |
742
+ | Requirement | Local/self-hosted hosts must be running and signed in with `ollama signin`; direct hosted search requires `baseUrl: "https://ollama.com"` plus a real Ollama API key |
743
+
744
+ Choose **Ollama Web Search** during `nodmix onboard` or `nodmix configure --section web`, or set:
745
+
746
+ ```json5
747
+ {
748
+ tools: {
749
+ web: {
750
+ search: {
751
+ provider: "ollama",
752
+ },
753
+ },
754
+ },
755
+ }
756
+ ```
757
+
758
+ For direct hosted search through Ollama Cloud:
759
+
760
+ ```json5
761
+ {
762
+ models: {
763
+ providers: {
764
+ ollama: {
765
+ baseUrl: "https://ollama.com",
766
+ apiKey: "OLLAMA_API_KEY",
767
+ api: "ollama",
768
+ models: [{ id: "kimi-k2.5:cloud", name: "kimi-k2.5:cloud", input: ["text"] }],
769
+ },
770
+ },
771
+ },
772
+ tools: {
773
+ web: {
774
+ search: { provider: "ollama" },
775
+ },
776
+ },
777
+ }
778
+ ```
779
+
780
+ For a signed-in local daemon, Nodmix uses the daemon's `/api/experimental/web_search` proxy. For `https://ollama.com`, it calls the hosted `/api/web_search` endpoint directly.
781
+
782
+ <Note>
783
+ For the full setup and behavior details, see [Ollama Web Search](/tools/ollama-search).
784
+ </Note>
785
+
786
+ ## Advanced configuration
787
+
788
+ <AccordionGroup>
789
+ <Accordion title="Legacy OpenAI-compatible mode">
790
+ <Warning>
791
+ **Tool calling is not reliable in OpenAI-compatible mode.** Use this mode only if you need OpenAI format for a proxy and do not depend on native tool calling behavior.
792
+ </Warning>
793
+
794
+ If you need to use the OpenAI-compatible endpoint instead (for example, behind a proxy that only supports OpenAI format), set `api: "openai-completions"` explicitly:
795
+
796
+ ```json5
797
+ {
798
+ models: {
799
+ providers: {
800
+ ollama: {
801
+ baseUrl: "http://ollama-host:11434/v1",
802
+ api: "openai-completions",
803
+ injectNumCtxForOpenAICompat: true, // default: true
804
+ apiKey: "ollama-local",
805
+ models: [...]
806
+ }
807
+ }
808
+ }
809
+ }
810
+ ```
811
+
812
+ This mode may not support streaming and tool calling simultaneously. You may need to disable streaming with `params: { streaming: false }` in model config.
813
+
814
+ When `api: "openai-completions"` is used with Ollama, Nodmix injects `options.num_ctx` by default so Ollama does not silently fall back to a 4096 context window. If your proxy/upstream rejects unknown `options` fields, disable this behavior:
815
+
816
+ ```json5
817
+ {
818
+ models: {
819
+ providers: {
820
+ ollama: {
821
+ baseUrl: "http://ollama-host:11434/v1",
822
+ api: "openai-completions",
823
+ injectNumCtxForOpenAICompat: false,
824
+ apiKey: "ollama-local",
825
+ models: [...]
826
+ }
827
+ }
828
+ }
829
+ }
830
+ ```
831
+
832
+ </Accordion>
833
+
834
+ <Accordion title="Context windows">
835
+ For auto-discovered models, Nodmix uses the context window reported by Ollama when available, including larger `PARAMETER num_ctx` values from custom Modelfiles. Otherwise it falls back to the default Ollama context window used by Nodmix.
836
+
837
+ You can set provider-level `contextWindow`, `contextTokens`, and `maxTokens` defaults for every model under that Ollama provider, then override them per model when needed. `contextWindow` is Nodmix's prompt and compaction budget. Native Ollama requests leave `options.num_ctx` unset unless you explicitly configure `params.num_ctx`, so Ollama can apply its own model, `OLLAMA_CONTEXT_LENGTH`, or VRAM-based default. To cap or force Ollama's per-request runtime context without rebuilding a Modelfile, set `params.num_ctx`; invalid, zero, negative, and non-finite values are ignored. If you upgraded an older config that used only `contextWindow` or `maxTokens` to force a native Ollama request context, run `nodmix doctor --fix` to copy those explicit provider or model budgets into `params.num_ctx`. The OpenAI-compatible Ollama adapter still injects `options.num_ctx` by default from the configured `params.num_ctx` or `contextWindow`; disable that with `injectNumCtxForOpenAICompat: false` if your upstream rejects `options`.
838
+
839
+ Native Ollama model entries also accept the common Ollama runtime options under `params`, including `temperature`, `top_p`, `top_k`, `min_p`, `num_predict`, `stop`, `repeat_penalty`, `num_batch`, `num_thread`, and `use_mmap`. Nodmix forwards only Ollama request keys, so Nodmix runtime params such as `streaming` are not leaked to Ollama. Use `params.think` or `params.thinking` to send top-level Ollama `think`; `false` disables API-level thinking for Qwen-style thinking models.
840
+
841
+ ```json5
842
+ {
843
+ models: {
844
+ providers: {
845
+ ollama: {
846
+ contextWindow: 32768,
847
+ models: [
848
+ {
849
+ id: "llama3.3",
850
+ contextWindow: 131072,
851
+ maxTokens: 65536,
852
+ params: {
853
+ num_ctx: 32768,
854
+ temperature: 0.7,
855
+ top_p: 0.9,
856
+ thinking: false,
857
+ },
858
+ }
859
+ ]
860
+ }
861
+ }
862
+ }
863
+ }
864
+ ```
865
+
866
+ Per-model `agents.defaults.models["ollama/<model>"].params.num_ctx` works too. If both are configured, the explicit provider model entry wins over the agent default.
867
+
868
+ </Accordion>
869
+
870
+ <Accordion title="Thinking control">
871
+ For native Ollama models, Nodmix forwards thinking control as Ollama expects it: top-level `think`, not `options.think`. Auto-discovered models whose `/api/show` response includes the `thinking` capability expose `/think low`, `/think medium`, `/think high`, and `/think max`; non-thinking models expose only `/think off`.
872
+
873
+ ```bash
874
+ nodmix agent --model ollama/gemma4 --thinking off
875
+ nodmix agent --model ollama/gemma4 --thinking low
876
+ ```
877
+
878
+ You can also set a model default:
879
+
880
+ ```json5
881
+ {
882
+ agents: {
883
+ defaults: {
884
+ models: {
885
+ "ollama/gemma4": {
886
+ thinking: "low",
887
+ },
888
+ },
889
+ },
890
+ },
891
+ }
892
+ ```
893
+
894
+ Per-model `params.think` or `params.thinking` can disable or force Ollama API thinking for a specific configured model. Nodmix preserves those explicit model params when the active run only has the implicit default `off`; non-off runtime commands such as `/think medium` still override the active run.
895
+
896
+ </Accordion>
897
+
898
+ <Accordion title="Reasoning models">
899
+ Nodmix treats models with names such as `deepseek-r1`, `reasoning`, or `think` as reasoning-capable by default.
900
+
901
+ ```bash
902
+ ollama pull deepseek-r1:32b
903
+ ```
904
+
905
+ No additional configuration is needed. Nodmix marks them automatically.
906
+
907
+ </Accordion>
908
+
909
+ <Accordion title="Model costs">
910
+ Ollama is free and runs locally, so all model costs are set to $0. This applies to both auto-discovered and manually defined models.
911
+ </Accordion>
912
+
913
+ <Accordion title="Memory embeddings">
914
+ The bundled Ollama plugin registers a memory embedding provider for
915
+ [memory search](/concepts/memory). It uses the configured Ollama base URL
916
+ and API key, calls Ollama's current `/api/embed` endpoint, and batches
917
+ multiple memory chunks into one `input` request when possible.
918
+
919
+ | Property | Value |
920
+ | ------------- | ------------------- |
921
+ | Default model | `nomic-embed-text` |
922
+ | Auto-pull | Yes — the embedding model is pulled automatically if not present locally |
923
+
924
+ Query-time embeddings use retrieval prefixes for models that require or recommend them, including `nomic-embed-text`, `qwen3-embedding`, and `mxbai-embed-large`. Memory document batches stay raw so existing indexes do not need a format migration.
925
+
926
+ To select Ollama as the memory search embedding provider:
927
+
928
+ ```json5
929
+ {
930
+ agents: {
931
+ defaults: {
932
+ memorySearch: {
933
+ provider: "ollama",
934
+ remote: {
935
+ // Default for Ollama. Raise on larger hosts if reindexing is too slow.
936
+ nonBatchConcurrency: 1,
937
+ },
938
+ },
939
+ },
940
+ },
941
+ }
942
+ ```
943
+
944
+ For a remote embedding host, keep auth scoped to that host:
945
+
946
+ ```json5
947
+ {
948
+ agents: {
949
+ defaults: {
950
+ memorySearch: {
951
+ provider: "ollama",
952
+ model: "nomic-embed-text",
953
+ remote: {
954
+ baseUrl: "http://gpu-box.local:11434",
955
+ apiKey: "ollama-local",
956
+ nonBatchConcurrency: 2,
957
+ },
958
+ },
959
+ },
960
+ },
961
+ }
962
+ ```
963
+
964
+ </Accordion>
965
+
966
+ <Accordion title="Streaming configuration">
967
+ Nodmix's Ollama integration uses the **native Ollama API** (`/api/chat`) by default, which fully supports streaming and tool calling simultaneously. No special configuration is needed.
968
+
969
+ For native `/api/chat` requests, Nodmix also forwards thinking control directly to Ollama: `/think off` and `nodmix agent --thinking off` send top-level `think: false` unless an explicit model `params.think`/`params.thinking` value is configured, while `/think low|medium|high` send the matching top-level `think` effort string. `/think max` maps to Ollama's highest native effort, `think: "high"`.
970
+
971
+ <Tip>
972
+ If you need to use the OpenAI-compatible endpoint, see the "Legacy OpenAI-compatible mode" section above. Streaming and tool calling may not work simultaneously in that mode.
973
+ </Tip>
974
+
975
+ </Accordion>
976
+ </AccordionGroup>
977
+
978
+ ## Troubleshooting
979
+
980
+ <AccordionGroup>
981
+ <Accordion title="WSL2 crash loop (repeated reboots)">
982
+ On WSL2 with NVIDIA/CUDA, the official Ollama Linux installer creates an `ollama.service` systemd unit with `Restart=always`. If that service autostarts and loads a GPU-backed model during WSL2 boot, Ollama can pin host memory while the model loads. Hyper-V memory reclaim cannot always reclaim those pinned pages, so Windows can terminate the WSL2 VM, systemd starts Ollama again, and the loop repeats.
983
+
984
+ Common evidence:
985
+
986
+ - repeated WSL2 reboots or terminations from the Windows side
987
+ - high CPU in `app.slice` or `ollama.service` shortly after WSL2 startup
988
+ - SIGTERM from systemd rather than a Linux OOM-killer event
989
+
990
+ Nodmix logs a startup warning when it detects WSL2, `ollama.service` enabled with `Restart=always`, and visible CUDA markers.
991
+
992
+ Mitigation:
993
+
994
+ ```bash
995
+ sudo systemctl disable ollama
996
+ ```
997
+
998
+ Add this to `%USERPROFILE%\.wslconfig` on the Windows side, then run `wsl --shutdown`:
999
+
1000
+ ```ini
1001
+ [experimental]
1002
+ autoMemoryReclaim=disabled
1003
+ ```
1004
+
1005
+ Set a shorter keep-alive in the Ollama service environment, or start Ollama manually only when you need it:
1006
+
1007
+ ```bash
1008
+ export OLLAMA_KEEP_ALIVE=5m
1009
+ ollama serve
1010
+ ```
1011
+
1012
+ See [ollama/ollama#11317](https://github.com/ollama/ollama/issues/11317).
1013
+
1014
+ </Accordion>
1015
+
1016
+ <Accordion title="Ollama not detected">
1017
+ Make sure Ollama is running and that you set `OLLAMA_API_KEY` (or an auth profile), and that you did **not** define an explicit `models.providers.ollama` entry:
1018
+
1019
+ ```bash
1020
+ ollama serve
1021
+ ```
1022
+
1023
+ Verify that the API is accessible:
1024
+
1025
+ ```bash
1026
+ curl http://localhost:11434/api/tags
1027
+ ```
1028
+
1029
+ </Accordion>
1030
+
1031
+ <Accordion title="No models available">
1032
+ If your model is not listed, either pull the model locally or define it explicitly in `models.providers.ollama`.
1033
+
1034
+ ```bash
1035
+ ollama list # See what's installed
1036
+ ollama pull gemma4
1037
+ ollama pull gpt-oss:20b
1038
+ ollama pull llama3.3 # Or another model
1039
+ ```
1040
+
1041
+ </Accordion>
1042
+
1043
+ <Accordion title="Connection refused">
1044
+ Check that Ollama is running on the correct port:
1045
+
1046
+ ```bash
1047
+ # Check if Ollama is running
1048
+ ps aux | grep ollama
1049
+
1050
+ # Or restart Ollama
1051
+ ollama serve
1052
+ ```
1053
+
1054
+ </Accordion>
1055
+
1056
+ <Accordion title="Remote host works with curl but not Nodmix">
1057
+ Verify from the same machine and runtime that runs the Gateway:
1058
+
1059
+ ```bash
1060
+ nodmix gateway status --deep
1061
+ curl http://ollama-host:11434/api/tags
1062
+ ```
1063
+
1064
+ Common causes:
1065
+
1066
+ - `baseUrl` points at `localhost`, but the Gateway runs in Docker or on another host.
1067
+ - The URL uses `/v1`, which selects OpenAI-compatible behavior instead of native Ollama.
1068
+ - The remote host needs firewall or LAN binding changes on the Ollama side.
1069
+ - The model is present on your laptop's daemon but not on the remote daemon.
1070
+
1071
+ </Accordion>
1072
+
1073
+ <Accordion title="Model outputs tool JSON as text">
1074
+ This usually means the provider is using OpenAI-compatible mode or the model cannot handle tool schemas.
1075
+
1076
+ Prefer native Ollama mode:
1077
+
1078
+ ```json5
1079
+ {
1080
+ models: {
1081
+ providers: {
1082
+ ollama: {
1083
+ baseUrl: "http://ollama-host:11434",
1084
+ api: "ollama",
1085
+ },
1086
+ },
1087
+ },
1088
+ }
1089
+ ```
1090
+
1091
+ If a small local model still fails on tool schemas, set `compat.supportsTools: false` on that model entry and retest.
1092
+
1093
+ </Accordion>
1094
+
1095
+ <Accordion title="Kimi or GLM returns garbled symbols">
1096
+ Hosted Kimi/GLM responses that are long, non-linguistic symbol runs are treated as failed provider output instead of a successful assistant answer. That lets normal retry, fallback, or error handling take over without persisting the corrupted text into the session.
1097
+
1098
+ If it happens repeatedly, capture the raw model name, the current session file, and whether the run used `Cloud + Local` or `Cloud only`, then try a fresh session and a fallback model:
1099
+
1100
+ ```bash
1101
+ nodmix infer model run --model ollama/kimi-k2.5:cloud --prompt "Reply with exactly: ok" --json
1102
+ nodmix models set ollama/gemma4
1103
+ ```
1104
+
1105
+ </Accordion>
1106
+
1107
+ <Accordion title="Cold local model times out">
1108
+ Large local models can need a long first load before streaming begins. Keep the timeout scoped to the Ollama provider, and optionally ask Ollama to keep the model loaded between turns:
1109
+
1110
+ ```json5
1111
+ {
1112
+ models: {
1113
+ providers: {
1114
+ ollama: {
1115
+ timeoutSeconds: 300,
1116
+ models: [
1117
+ {
1118
+ id: "gemma4:26b",
1119
+ name: "gemma4:26b",
1120
+ params: { keep_alive: "15m" },
1121
+ },
1122
+ ],
1123
+ },
1124
+ },
1125
+ },
1126
+ }
1127
+ ```
1128
+
1129
+ If the host itself is slow to accept connections, `timeoutSeconds` also extends the guarded Undici connect timeout for this provider.
1130
+
1131
+ </Accordion>
1132
+
1133
+ <Accordion title="Large-context model is too slow or runs out of memory">
1134
+ Many Ollama models advertise contexts that are larger than your hardware can run comfortably. Native Ollama uses Ollama's own runtime context default unless you set `params.num_ctx`. Cap both Nodmix's budget and Ollama's request context when you want predictable first-token latency:
1135
+
1136
+ ```json5
1137
+ {
1138
+ models: {
1139
+ providers: {
1140
+ ollama: {
1141
+ contextWindow: 32768,
1142
+ maxTokens: 8192,
1143
+ models: [
1144
+ {
1145
+ id: "qwen3.5:9b",
1146
+ name: "qwen3.5:9b",
1147
+ params: { num_ctx: 32768, thinking: false },
1148
+ },
1149
+ ],
1150
+ },
1151
+ },
1152
+ },
1153
+ }
1154
+ ```
1155
+
1156
+ Lower `contextWindow` first if Nodmix is sending too much prompt. Lower `params.num_ctx` if Ollama is loading a runtime context that is too large for the machine. Lower `maxTokens` if generation runs too long.
1157
+
1158
+ </Accordion>
1159
+ </AccordionGroup>
1160
+
1161
+ <Note>
1162
+ More help: [Troubleshooting](/help/troubleshooting) and [FAQ](/help/faq).
1163
+ </Note>
1164
+
1165
+ ## Related
1166
+
1167
+ <CardGroup cols={2}>
1168
+ <Card title="Model providers" href="/concepts/model-providers" icon="layers">
1169
+ Overview of all providers, model refs, and failover behavior.
1170
+ </Card>
1171
+ <Card title="Model selection" href="/concepts/models" icon="brain">
1172
+ How to choose and configure models.
1173
+ </Card>
1174
+ <Card title="Ollama Web Search" href="/tools/ollama-search" icon="magnifying-glass">
1175
+ Full setup and behavior details for Ollama-powered web search.
1176
+ </Card>
1177
+ <Card title="Configuration" href="/gateway/configuration" icon="gear">
1178
+ Full config reference.
1179
+ </Card>
1180
+ </CardGroup>