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.
- package/CHANGELOG.md +11573 -0
- package/LICENSE +21 -0
- package/README.md +486 -0
- package/docs/.i18n/README.md +81 -0
- package/docs/.i18n/ar-navigation.json +18 -0
- package/docs/.i18n/de-navigation.json +18 -0
- package/docs/.i18n/es-navigation.json +18 -0
- package/docs/.i18n/fr-navigation.json +18 -0
- package/docs/.i18n/glossary.ar.json +78 -0
- package/docs/.i18n/glossary.de.json +78 -0
- package/docs/.i18n/glossary.es.json +78 -0
- package/docs/.i18n/glossary.fa.json +78 -0
- package/docs/.i18n/glossary.fr.json +78 -0
- package/docs/.i18n/glossary.id.json +78 -0
- package/docs/.i18n/glossary.it.json +78 -0
- package/docs/.i18n/glossary.ja-JP.json +98 -0
- package/docs/.i18n/glossary.ko.json +78 -0
- package/docs/.i18n/glossary.nl.json +78 -0
- package/docs/.i18n/glossary.pl.json +78 -0
- package/docs/.i18n/glossary.pt-BR.json +78 -0
- package/docs/.i18n/glossary.th.json +78 -0
- package/docs/.i18n/glossary.tr.json +78 -0
- package/docs/.i18n/glossary.uk.json +78 -0
- package/docs/.i18n/glossary.vi.json +78 -0
- package/docs/.i18n/glossary.zh-CN.json +1002 -0
- package/docs/.i18n/glossary.zh-TW.json +78 -0
- package/docs/.i18n/id-navigation.json +18 -0
- package/docs/.i18n/it-navigation.json +18 -0
- package/docs/.i18n/ja-navigation.json +18 -0
- package/docs/.i18n/ko-navigation.json +18 -0
- package/docs/.i18n/pl-navigation.json +18 -0
- package/docs/.i18n/pt-BR-navigation.json +18 -0
- package/docs/.i18n/tr-navigation.json +18 -0
- package/docs/.i18n/translation-workflow.md +111 -0
- package/docs/.i18n/zh-Hans-navigation.json +542 -0
- package/docs/AGENTS.md +36 -0
- package/docs/announcements/bluebubbles-imessage.md +79 -0
- package/docs/assets/install-script.svg +1 -0
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.svg +418 -0
- package/docs/assets/openclaw-logo-text.png +0 -0
- package/docs/assets/openclaw-logo-text.svg +418 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/pr/quick-settings-browser-tools.png +0 -0
- package/docs/assets/showcase/agents-ui.jpg +0 -0
- package/docs/assets/showcase/bambu-cli.png +0 -0
- package/docs/assets/showcase/codexmonitor.png +0 -0
- package/docs/assets/showcase/gohome-grafana.png +0 -0
- package/docs/assets/showcase/ios-testflight.jpg +0 -0
- package/docs/assets/showcase/oura-health.png +0 -0
- package/docs/assets/showcase/padel-cli.svg +11 -0
- package/docs/assets/showcase/padel-screenshot.jpg +0 -0
- package/docs/assets/showcase/papla-tts.jpg +0 -0
- package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
- package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
- package/docs/assets/showcase/roborock-status.svg +13 -0
- package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
- package/docs/assets/showcase/snag.png +0 -0
- package/docs/assets/showcase/tesco-shop.jpg +0 -0
- package/docs/assets/showcase/wienerlinien.png +0 -0
- package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
- package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
- package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
- package/docs/assets/sponsors/blacksmith-light.svg +14 -0
- package/docs/assets/sponsors/blacksmith.svg +14 -0
- package/docs/assets/sponsors/convex-light.svg +16 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/github-light.svg +3 -0
- package/docs/assets/sponsors/github.svg +3 -0
- package/docs/assets/sponsors/nvidia-dark.svg +9 -0
- package/docs/assets/sponsors/nvidia.svg +9 -0
- package/docs/assets/sponsors/openai-light.svg +3 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel-light.svg +5 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +124 -0
- package/docs/automation/auth-monitoring.md +11 -0
- package/docs/automation/clawflow.md +12 -0
- package/docs/automation/cron-jobs.md +500 -0
- package/docs/automation/cron-vs-heartbeat.md +11 -0
- package/docs/automation/gmail-pubsub.md +11 -0
- package/docs/automation/hooks.md +365 -0
- package/docs/automation/index.md +135 -0
- package/docs/automation/poll.md +12 -0
- package/docs/automation/standing-orders.md +250 -0
- package/docs/automation/taskflow.md +155 -0
- package/docs/automation/tasks.md +374 -0
- package/docs/automation/troubleshooting.md +12 -0
- package/docs/automation/webhook.md +12 -0
- package/docs/brave-search.md +11 -0
- package/docs/channels/access-groups.md +201 -0
- package/docs/channels/ambient-room-events.md +214 -0
- package/docs/channels/bot-loop-protection.md +131 -0
- package/docs/channels/broadcast-groups.md +472 -0
- package/docs/channels/channel-routing.md +162 -0
- package/docs/channels/clickclack.md +138 -0
- package/docs/channels/discord.md +1762 -0
- package/docs/channels/feishu.md +502 -0
- package/docs/channels/googlechat.md +284 -0
- package/docs/channels/group-messages.md +95 -0
- package/docs/channels/groups.md +519 -0
- package/docs/channels/imessage-from-bluebubbles.md +259 -0
- package/docs/channels/imessage.md +813 -0
- package/docs/channels/index.md +64 -0
- package/docs/channels/irc.md +253 -0
- package/docs/channels/line.md +243 -0
- package/docs/channels/location.md +71 -0
- package/docs/channels/matrix-migration.md +370 -0
- package/docs/channels/matrix-presentation.md +77 -0
- package/docs/channels/matrix-push-rules.md +150 -0
- package/docs/channels/matrix.md +921 -0
- package/docs/channels/mattermost.md +542 -0
- package/docs/channels/msteams.md +1042 -0
- package/docs/channels/nextcloud-talk.md +176 -0
- package/docs/channels/nostr.md +253 -0
- package/docs/channels/pairing.md +214 -0
- package/docs/channels/qqbot.md +309 -0
- package/docs/channels/signal.md +400 -0
- package/docs/channels/slack.md +1564 -0
- package/docs/channels/synology-chat.md +187 -0
- package/docs/channels/telegram.md +1107 -0
- package/docs/channels/tlon.md +296 -0
- package/docs/channels/troubleshooting.md +161 -0
- package/docs/channels/twitch.md +431 -0
- package/docs/channels/wechat.md +171 -0
- package/docs/channels/whatsapp.md +739 -0
- package/docs/channels/yuanbao.md +416 -0
- package/docs/channels/zalo.md +253 -0
- package/docs/channels/zalouser.md +199 -0
- package/docs/ci.md +612 -0
- package/docs/clawhub/publishing.md +96 -0
- package/docs/cli/acp.md +370 -0
- package/docs/cli/agent.md +103 -0
- package/docs/cli/agents.md +232 -0
- package/docs/cli/approvals.md +190 -0
- package/docs/cli/backup.md +97 -0
- package/docs/cli/browser.md +307 -0
- package/docs/cli/channels.md +154 -0
- package/docs/cli/clawbot.md +25 -0
- package/docs/cli/commitments.md +90 -0
- package/docs/cli/completion.md +39 -0
- package/docs/cli/config.md +504 -0
- package/docs/cli/configure.md +77 -0
- package/docs/cli/crestodian.md +332 -0
- package/docs/cli/cron.md +281 -0
- package/docs/cli/daemon.md +67 -0
- package/docs/cli/dashboard.md +33 -0
- package/docs/cli/devices.md +204 -0
- package/docs/cli/directory.md +68 -0
- package/docs/cli/dns.md +53 -0
- package/docs/cli/docs.md +73 -0
- package/docs/cli/doctor.md +237 -0
- package/docs/cli/flows.md +52 -0
- package/docs/cli/gateway.md +567 -0
- package/docs/cli/health.md +43 -0
- package/docs/cli/hooks.md +345 -0
- package/docs/cli/index.md +396 -0
- package/docs/cli/infer.md +364 -0
- package/docs/cli/logs.md +65 -0
- package/docs/cli/mcp.md +529 -0
- package/docs/cli/memory.md +183 -0
- package/docs/cli/message.md +317 -0
- package/docs/cli/migrate.md +290 -0
- package/docs/cli/models.md +224 -0
- package/docs/cli/node.md +177 -0
- package/docs/cli/nodes.md +76 -0
- package/docs/cli/onboard.md +245 -0
- package/docs/cli/pairing.md +77 -0
- package/docs/cli/path.md +502 -0
- package/docs/cli/plugins.md +454 -0
- package/docs/cli/policy.md +418 -0
- package/docs/cli/proxy.md +89 -0
- package/docs/cli/qr.md +56 -0
- package/docs/cli/reset.md +39 -0
- package/docs/cli/sandbox.md +208 -0
- package/docs/cli/secrets.md +202 -0
- package/docs/cli/security.md +124 -0
- package/docs/cli/sessions.md +164 -0
- package/docs/cli/setup.md +59 -0
- package/docs/cli/skills.md +102 -0
- package/docs/cli/status.md +45 -0
- package/docs/cli/system.md +89 -0
- package/docs/cli/tasks.md +111 -0
- package/docs/cli/tui.md +89 -0
- package/docs/cli/uninstall.md +44 -0
- package/docs/cli/update.md +242 -0
- package/docs/cli/voicecall.md +204 -0
- package/docs/cli/webhooks.md +117 -0
- package/docs/cli/wiki.md +256 -0
- package/docs/concepts/active-memory.md +856 -0
- package/docs/concepts/agent-loop.md +185 -0
- package/docs/concepts/agent-runtimes.md +243 -0
- package/docs/concepts/agent-workspace.md +230 -0
- package/docs/concepts/agent.md +136 -0
- package/docs/concepts/architecture.md +154 -0
- package/docs/concepts/channel-docking.md +145 -0
- package/docs/concepts/commitments.md +150 -0
- package/docs/concepts/compaction.md +203 -0
- package/docs/concepts/context-engine.md +306 -0
- package/docs/concepts/context.md +199 -0
- package/docs/concepts/delegate-architecture.md +319 -0
- package/docs/concepts/dreaming.md +261 -0
- package/docs/concepts/experimental-features.md +108 -0
- package/docs/concepts/features.md +91 -0
- package/docs/concepts/mantis-slack-desktop-runbook.md +202 -0
- package/docs/concepts/mantis.md +740 -0
- package/docs/concepts/markdown-formatting.md +139 -0
- package/docs/concepts/memory-builtin.md +146 -0
- package/docs/concepts/memory-honcho.md +144 -0
- package/docs/concepts/memory-qmd.md +271 -0
- package/docs/concepts/memory-search.md +166 -0
- package/docs/concepts/memory.md +258 -0
- package/docs/concepts/message-lifecycle-refactor.md +1128 -0
- package/docs/concepts/messages.md +214 -0
- package/docs/concepts/model-failover.md +385 -0
- package/docs/concepts/model-providers.md +715 -0
- package/docs/concepts/models.md +370 -0
- package/docs/concepts/multi-agent.md +619 -0
- package/docs/concepts/oauth.md +198 -0
- package/docs/concepts/openclaw-sdk.md +323 -0
- package/docs/concepts/parallel-specialist-lanes.md +127 -0
- package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
- package/docs/concepts/presence.md +117 -0
- package/docs/concepts/progress-drafts.md +362 -0
- package/docs/concepts/qa-e2e-automation.md +820 -0
- package/docs/concepts/qa-matrix.md +139 -0
- package/docs/concepts/queue-steering.md +90 -0
- package/docs/concepts/queue.md +122 -0
- package/docs/concepts/retry.md +86 -0
- package/docs/concepts/session-pruning.md +104 -0
- package/docs/concepts/session-tool.md +190 -0
- package/docs/concepts/session.md +164 -0
- package/docs/concepts/soul.md +116 -0
- package/docs/concepts/streaming.md +251 -0
- package/docs/concepts/system-prompt.md +310 -0
- package/docs/concepts/timezone.md +47 -0
- package/docs/concepts/typebox.md +309 -0
- package/docs/concepts/typing-indicators.md +88 -0
- package/docs/concepts/usage-tracking.md +66 -0
- package/docs/date-time.md +126 -0
- package/docs/debug/node-issue.md +90 -0
- package/docs/diagnostics/flags.md +138 -0
- package/docs/docs.json +1832 -0
- package/docs/gateway/authentication.md +239 -0
- package/docs/gateway/background-process.md +147 -0
- package/docs/gateway/bonjour.md +303 -0
- package/docs/gateway/bridge-protocol.md +94 -0
- package/docs/gateway/cli-backends.md +420 -0
- package/docs/gateway/config-agents.md +1514 -0
- package/docs/gateway/config-channels.md +945 -0
- package/docs/gateway/config-tools.md +769 -0
- package/docs/gateway/configuration-examples.md +705 -0
- package/docs/gateway/configuration-reference.md +1393 -0
- package/docs/gateway/configuration.md +737 -0
- package/docs/gateway/diagnostics.md +213 -0
- package/docs/gateway/discovery.md +154 -0
- package/docs/gateway/doctor.md +574 -0
- package/docs/gateway/gateway-lock.md +37 -0
- package/docs/gateway/health.md +73 -0
- package/docs/gateway/heartbeat.md +493 -0
- package/docs/gateway/index.md +383 -0
- package/docs/gateway/local-model-services.md +205 -0
- package/docs/gateway/local-models.md +355 -0
- package/docs/gateway/logging.md +149 -0
- package/docs/gateway/multiple-gateways.md +178 -0
- package/docs/gateway/network-model.md +15 -0
- package/docs/gateway/openai-http-api.md +350 -0
- package/docs/gateway/openresponses-http-api.md +347 -0
- package/docs/gateway/openshell.md +316 -0
- package/docs/gateway/opentelemetry.md +404 -0
- package/docs/gateway/operator-scopes.md +111 -0
- package/docs/gateway/pairing.md +207 -0
- package/docs/gateway/prometheus.md +230 -0
- package/docs/gateway/protocol.md +803 -0
- package/docs/gateway/remote-gateway-readme.md +169 -0
- package/docs/gateway/remote.md +280 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +146 -0
- package/docs/gateway/sandboxing.md +545 -0
- package/docs/gateway/secrets-plan-contract.md +114 -0
- package/docs/gateway/secrets.md +609 -0
- package/docs/gateway/security/audit-checks.md +127 -0
- package/docs/gateway/security/index.md +1326 -0
- package/docs/gateway/security/secure-file-operations.md +76 -0
- package/docs/gateway/tailscale.md +156 -0
- package/docs/gateway/tools-invoke-http-api.md +169 -0
- package/docs/gateway/troubleshooting.md +772 -0
- package/docs/gateway/trusted-proxy-auth.md +451 -0
- package/docs/help/debugging.md +344 -0
- package/docs/help/environment.md +214 -0
- package/docs/help/faq-first-run.md +867 -0
- package/docs/help/faq-models.md +553 -0
- package/docs/help/faq.md +1975 -0
- package/docs/help/gpt55-codex-agentic-parity-maintainers.md +196 -0
- package/docs/help/gpt55-codex-agentic-parity.md +230 -0
- package/docs/help/index.md +39 -0
- package/docs/help/scripts.md +56 -0
- package/docs/help/testing-live.md +580 -0
- package/docs/help/testing-updates-plugins.md +291 -0
- package/docs/help/testing.md +928 -0
- package/docs/help/troubleshooting.md +424 -0
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-get-group-id.png +0 -0
- package/docs/images/groups-flow.svg +52 -0
- package/docs/images/mobile-ui-screenshot.png +0 -0
- package/docs/index.md +196 -0
- package/docs/install/ansible.md +233 -0
- package/docs/install/azure.md +315 -0
- package/docs/install/bun.md +59 -0
- package/docs/install/clawdock.md +112 -0
- package/docs/install/development-channels.md +135 -0
- package/docs/install/digitalocean.md +174 -0
- package/docs/install/docker-vm-runtime.md +154 -0
- package/docs/install/docker.md +562 -0
- package/docs/install/exe-dev.md +201 -0
- package/docs/install/fly.md +524 -0
- package/docs/install/gcp.md +418 -0
- package/docs/install/hetzner.md +285 -0
- package/docs/install/hostinger.md +98 -0
- package/docs/install/index.md +221 -0
- package/docs/install/installer.md +455 -0
- package/docs/install/kubernetes.md +196 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-claude.md +165 -0
- package/docs/install/migrating-hermes.md +177 -0
- package/docs/install/migrating.md +137 -0
- package/docs/install/nix.md +112 -0
- package/docs/install/node.md +142 -0
- package/docs/install/northflank.mdx +44 -0
- package/docs/install/oracle.md +218 -0
- package/docs/install/podman.md +210 -0
- package/docs/install/railway.mdx +92 -0
- package/docs/install/raspberry-pi.md +234 -0
- package/docs/install/render.mdx +167 -0
- package/docs/install/uninstall.md +131 -0
- package/docs/install/updating.md +280 -0
- package/docs/logging.md +318 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +72 -0
- package/docs/nodes/audio.md +215 -0
- package/docs/nodes/camera.md +166 -0
- package/docs/nodes/images.md +77 -0
- package/docs/nodes/index.md +439 -0
- package/docs/nodes/location-command.md +102 -0
- package/docs/nodes/media-understanding.md +469 -0
- package/docs/nodes/talk.md +154 -0
- package/docs/nodes/troubleshooting.md +123 -0
- package/docs/nodes/voicewake.md +93 -0
- package/docs/perplexity.md +11 -0
- package/docs/pi-dev.md +82 -0
- package/docs/pi.md +573 -0
- package/docs/plan/codex-context-engine-harness.md +624 -0
- package/docs/plan/ui-channels.md +284 -0
- package/docs/platforms/android.md +285 -0
- package/docs/platforms/digitalocean.md +12 -0
- package/docs/platforms/index.md +60 -0
- package/docs/platforms/ios.md +283 -0
- package/docs/platforms/linux.md +141 -0
- package/docs/platforms/mac/bundled-gateway.md +79 -0
- package/docs/platforms/mac/canvas.md +128 -0
- package/docs/platforms/mac/child-process.md +72 -0
- package/docs/platforms/mac/dev-setup.md +112 -0
- package/docs/platforms/mac/health.md +39 -0
- package/docs/platforms/mac/icon.md +36 -0
- package/docs/platforms/mac/logging.md +62 -0
- package/docs/platforms/mac/menu-bar.md +93 -0
- package/docs/platforms/mac/peekaboo.md +92 -0
- package/docs/platforms/mac/permissions.md +53 -0
- package/docs/platforms/mac/remote.md +123 -0
- package/docs/platforms/mac/signing.md +52 -0
- package/docs/platforms/mac/skills.md +43 -0
- package/docs/platforms/mac/voice-overlay.md +66 -0
- package/docs/platforms/mac/voicewake.md +73 -0
- package/docs/platforms/mac/webchat.md +54 -0
- package/docs/platforms/mac/xpc.md +66 -0
- package/docs/platforms/macos.md +226 -0
- package/docs/platforms/oracle.md +12 -0
- package/docs/platforms/raspberry-pi.md +13 -0
- package/docs/platforms/windows.md +286 -0
- package/docs/plugins/adding-capabilities.md +133 -0
- package/docs/plugins/admin-http-rpc.md +216 -0
- package/docs/plugins/agent-tools.md +13 -0
- package/docs/plugins/architecture-internals.md +1195 -0
- package/docs/plugins/architecture.md +481 -0
- package/docs/plugins/building-extensions.md +13 -0
- package/docs/plugins/building-plugins.md +330 -0
- package/docs/plugins/bundles.md +310 -0
- package/docs/plugins/cli-backend-plugins.md +310 -0
- package/docs/plugins/codex-computer-use.md +293 -0
- package/docs/plugins/codex-harness-reference.md +409 -0
- package/docs/plugins/codex-harness-runtime.md +247 -0
- package/docs/plugins/codex-harness.md +746 -0
- package/docs/plugins/codex-native-plugins.md +276 -0
- package/docs/plugins/community.md +77 -0
- package/docs/plugins/compatibility.md +164 -0
- package/docs/plugins/dependency-resolution.md +143 -0
- package/docs/plugins/google-meet.md +1737 -0
- package/docs/plugins/hooks.md +459 -0
- package/docs/plugins/install-overrides.md +80 -0
- package/docs/plugins/manage-plugins.md +210 -0
- package/docs/plugins/manifest.md +1359 -0
- package/docs/plugins/memory-lancedb.md +385 -0
- package/docs/plugins/memory-wiki.md +529 -0
- package/docs/plugins/message-presentation.md +473 -0
- package/docs/plugins/oc-path.md +166 -0
- package/docs/plugins/plugin-inventory.md +182 -0
- package/docs/plugins/reference/acpx.md +23 -0
- package/docs/plugins/reference/admin-http-rpc.md +23 -0
- package/docs/plugins/reference/alibaba.md +23 -0
- package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
- package/docs/plugins/reference/amazon-bedrock.md +23 -0
- package/docs/plugins/reference/anthropic-vertex.md +19 -0
- package/docs/plugins/reference/anthropic.md +23 -0
- package/docs/plugins/reference/arcee.md +23 -0
- package/docs/plugins/reference/azure-speech.md +23 -0
- package/docs/plugins/reference/bonjour.md +19 -0
- package/docs/plugins/reference/brave.md +23 -0
- package/docs/plugins/reference/browser.md +23 -0
- package/docs/plugins/reference/byteplus.md +19 -0
- package/docs/plugins/reference/canvas.md +19 -0
- package/docs/plugins/reference/cerebras.md +23 -0
- package/docs/plugins/reference/chutes.md +23 -0
- package/docs/plugins/reference/clickclack.md +23 -0
- package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
- package/docs/plugins/reference/codex.md +23 -0
- package/docs/plugins/reference/comfy.md +23 -0
- package/docs/plugins/reference/copilot-proxy.md +19 -0
- package/docs/plugins/reference/deepgram.md +23 -0
- package/docs/plugins/reference/deepinfra.md +23 -0
- package/docs/plugins/reference/deepseek.md +23 -0
- package/docs/plugins/reference/diagnostics-otel.md +19 -0
- package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
- package/docs/plugins/reference/diffs.md +19 -0
- package/docs/plugins/reference/discord.md +23 -0
- package/docs/plugins/reference/document-extract.md +23 -0
- package/docs/plugins/reference/duckduckgo.md +23 -0
- package/docs/plugins/reference/elevenlabs.md +23 -0
- package/docs/plugins/reference/exa.md +23 -0
- package/docs/plugins/reference/fal.md +23 -0
- package/docs/plugins/reference/feishu.md +23 -0
- package/docs/plugins/reference/file-transfer.md +19 -0
- package/docs/plugins/reference/firecrawl.md +23 -0
- package/docs/plugins/reference/fireworks.md +23 -0
- package/docs/plugins/reference/github-copilot.md +23 -0
- package/docs/plugins/reference/google-meet.md +23 -0
- package/docs/plugins/reference/google.md +23 -0
- package/docs/plugins/reference/googlechat.md +23 -0
- package/docs/plugins/reference/gradium.md +23 -0
- package/docs/plugins/reference/groq.md +23 -0
- package/docs/plugins/reference/huggingface.md +23 -0
- package/docs/plugins/reference/imessage.md +23 -0
- package/docs/plugins/reference/inworld.md +23 -0
- package/docs/plugins/reference/irc.md +23 -0
- package/docs/plugins/reference/kilocode.md +23 -0
- package/docs/plugins/reference/kimi.md +23 -0
- package/docs/plugins/reference/line.md +23 -0
- package/docs/plugins/reference/litellm.md +23 -0
- package/docs/plugins/reference/llm-task.md +19 -0
- package/docs/plugins/reference/lmstudio.md +23 -0
- package/docs/plugins/reference/lobster.md +19 -0
- package/docs/plugins/reference/matrix.md +23 -0
- package/docs/plugins/reference/mattermost.md +23 -0
- package/docs/plugins/reference/memory-core.md +19 -0
- package/docs/plugins/reference/memory-lancedb.md +23 -0
- package/docs/plugins/reference/memory-wiki.md +23 -0
- package/docs/plugins/reference/microsoft-foundry.md +19 -0
- package/docs/plugins/reference/microsoft.md +19 -0
- package/docs/plugins/reference/migrate-claude.md +19 -0
- package/docs/plugins/reference/migrate-hermes.md +19 -0
- package/docs/plugins/reference/minimax.md +23 -0
- package/docs/plugins/reference/mistral.md +23 -0
- package/docs/plugins/reference/moonshot.md +23 -0
- package/docs/plugins/reference/msteams.md +23 -0
- package/docs/plugins/reference/nextcloud-talk.md +23 -0
- package/docs/plugins/reference/nostr.md +23 -0
- package/docs/plugins/reference/nvidia.md +23 -0
- package/docs/plugins/reference/oc-path.md +23 -0
- package/docs/plugins/reference/ollama.md +23 -0
- package/docs/plugins/reference/open-prose.md +19 -0
- package/docs/plugins/reference/openai.md +23 -0
- package/docs/plugins/reference/opencode-go.md +23 -0
- package/docs/plugins/reference/opencode.md +23 -0
- package/docs/plugins/reference/openrouter.md +23 -0
- package/docs/plugins/reference/openshell.md +19 -0
- package/docs/plugins/reference/perplexity.md +23 -0
- package/docs/plugins/reference/policy.md +23 -0
- package/docs/plugins/reference/qa-channel.md +23 -0
- package/docs/plugins/reference/qa-lab.md +19 -0
- package/docs/plugins/reference/qa-matrix.md +19 -0
- package/docs/plugins/reference/qianfan.md +23 -0
- package/docs/plugins/reference/qqbot.md +23 -0
- package/docs/plugins/reference/qwen.md +23 -0
- package/docs/plugins/reference/runway.md +23 -0
- package/docs/plugins/reference/searxng.md +19 -0
- package/docs/plugins/reference/senseaudio.md +23 -0
- package/docs/plugins/reference/sglang.md +23 -0
- package/docs/plugins/reference/signal.md +23 -0
- package/docs/plugins/reference/skill-workshop.md +23 -0
- package/docs/plugins/reference/slack.md +23 -0
- package/docs/plugins/reference/stepfun.md +23 -0
- package/docs/plugins/reference/synology-chat.md +23 -0
- package/docs/plugins/reference/synthetic.md +23 -0
- package/docs/plugins/reference/tavily.md +23 -0
- package/docs/plugins/reference/telegram.md +23 -0
- package/docs/plugins/reference/tencent.md +23 -0
- package/docs/plugins/reference/tlon.md +23 -0
- package/docs/plugins/reference/together.md +23 -0
- package/docs/plugins/reference/tokenjuice.md +23 -0
- package/docs/plugins/reference/tts-local-cli.md +19 -0
- package/docs/plugins/reference/twitch.md +23 -0
- package/docs/plugins/reference/venice.md +23 -0
- package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
- package/docs/plugins/reference/vllm.md +23 -0
- package/docs/plugins/reference/voice-call.md +23 -0
- package/docs/plugins/reference/volcengine.md +23 -0
- package/docs/plugins/reference/voyage.md +19 -0
- package/docs/plugins/reference/vydra.md +23 -0
- package/docs/plugins/reference/web-readability.md +19 -0
- package/docs/plugins/reference/webhooks.md +23 -0
- package/docs/plugins/reference/whatsapp.md +23 -0
- package/docs/plugins/reference/xai.md +23 -0
- package/docs/plugins/reference/xiaomi.md +23 -0
- package/docs/plugins/reference/zai.md +23 -0
- package/docs/plugins/reference/zalo.md +23 -0
- package/docs/plugins/reference/zalouser.md +24 -0
- package/docs/plugins/reference.md +138 -0
- package/docs/plugins/sdk-agent-harness.md +339 -0
- package/docs/plugins/sdk-channel-ingress.md +137 -0
- package/docs/plugins/sdk-channel-message.md +458 -0
- package/docs/plugins/sdk-channel-plugins.md +762 -0
- package/docs/plugins/sdk-channel-turn.md +580 -0
- package/docs/plugins/sdk-entrypoints.md +333 -0
- package/docs/plugins/sdk-migration.md +949 -0
- package/docs/plugins/sdk-overview.md +501 -0
- package/docs/plugins/sdk-provider-plugins.md +807 -0
- package/docs/plugins/sdk-runtime.md +676 -0
- package/docs/plugins/sdk-setup.md +550 -0
- package/docs/plugins/sdk-subpaths.md +396 -0
- package/docs/plugins/sdk-testing.md +401 -0
- package/docs/plugins/skill-workshop.md +713 -0
- package/docs/plugins/tool-plugins.md +411 -0
- package/docs/plugins/voice-call.md +943 -0
- package/docs/plugins/webhooks.md +192 -0
- package/docs/plugins/zalouser.md +86 -0
- package/docs/prose.md +137 -0
- package/docs/providers/alibaba.md +158 -0
- package/docs/providers/anthropic.md +344 -0
- package/docs/providers/arcee.md +144 -0
- package/docs/providers/azure-speech.md +119 -0
- package/docs/providers/bedrock-mantle.md +211 -0
- package/docs/providers/bedrock.md +414 -0
- package/docs/providers/cerebras.md +130 -0
- package/docs/providers/chutes.md +153 -0
- package/docs/providers/claude-max-api-proxy.md +188 -0
- package/docs/providers/cloudflare-ai-gateway.md +119 -0
- package/docs/providers/comfy.md +362 -0
- package/docs/providers/deepgram.md +184 -0
- package/docs/providers/deepinfra.md +87 -0
- package/docs/providers/deepseek.md +146 -0
- package/docs/providers/ds4.md +309 -0
- package/docs/providers/elevenlabs.md +130 -0
- package/docs/providers/fal.md +204 -0
- package/docs/providers/fireworks.md +144 -0
- package/docs/providers/github-copilot.md +225 -0
- package/docs/providers/glm.md +137 -0
- package/docs/providers/google.md +472 -0
- package/docs/providers/gradium.md +123 -0
- package/docs/providers/groq.md +180 -0
- package/docs/providers/huggingface.md +235 -0
- package/docs/providers/index.md +102 -0
- package/docs/providers/inferrs.md +272 -0
- package/docs/providers/inworld.md +120 -0
- package/docs/providers/kilocode.md +135 -0
- package/docs/providers/litellm.md +234 -0
- package/docs/providers/lmstudio.md +224 -0
- package/docs/providers/minimax.md +505 -0
- package/docs/providers/mistral.md +235 -0
- package/docs/providers/models.md +65 -0
- package/docs/providers/moonshot.md +413 -0
- package/docs/providers/nvidia.md +140 -0
- package/docs/providers/ollama.md +1180 -0
- package/docs/providers/openai.md +1057 -0
- package/docs/providers/opencode-go.md +123 -0
- package/docs/providers/opencode.md +149 -0
- package/docs/providers/openrouter.md +349 -0
- package/docs/providers/perplexity-provider.md +123 -0
- package/docs/providers/qianfan.md +132 -0
- package/docs/providers/qwen.md +332 -0
- package/docs/providers/runway.md +103 -0
- package/docs/providers/senseaudio.md +68 -0
- package/docs/providers/sglang.md +161 -0
- package/docs/providers/stepfun.md +229 -0
- package/docs/providers/synthetic.md +154 -0
- package/docs/providers/tencent.md +130 -0
- package/docs/providers/together.md +141 -0
- package/docs/providers/venice.md +315 -0
- package/docs/providers/vercel-ai-gateway.md +128 -0
- package/docs/providers/vllm.md +383 -0
- package/docs/providers/volcengine.md +199 -0
- package/docs/providers/vydra.md +180 -0
- package/docs/providers/xai.md +560 -0
- package/docs/providers/xiaomi.md +188 -0
- package/docs/providers/zai.md +203 -0
- package/docs/refactor/access.md +9 -0
- package/docs/refactor/acp.md +298 -0
- package/docs/refactor/canvas.md +131 -0
- package/docs/refactor/ingress-core.md +341 -0
- package/docs/reference/AGENTS.default.md +129 -0
- package/docs/reference/RELEASING.md +767 -0
- package/docs/reference/api-usage-costs.md +202 -0
- package/docs/reference/application-modernization-plan.md +208 -0
- package/docs/reference/code-mode.md +757 -0
- package/docs/reference/credits.md +33 -0
- package/docs/reference/device-models.md +50 -0
- package/docs/reference/full-release-validation.md +202 -0
- package/docs/reference/memory-config.md +630 -0
- package/docs/reference/openclaw-sdk-api-design.md +390 -0
- package/docs/reference/prompt-caching.md +358 -0
- package/docs/reference/rich-output-protocol.md +79 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +159 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +663 -0
- package/docs/reference/session-management-compaction.md +461 -0
- package/docs/reference/templates/AGENTS.dev.md +89 -0
- package/docs/reference/templates/AGENTS.md +225 -0
- package/docs/reference/templates/BOOT.md +16 -0
- package/docs/reference/templates/BOOTSTRAP.md +66 -0
- package/docs/reference/templates/HEARTBEAT.md +16 -0
- package/docs/reference/templates/IDENTITY.dev.md +52 -0
- package/docs/reference/templates/IDENTITY.md +34 -0
- package/docs/reference/templates/SOUL.dev.md +82 -0
- package/docs/reference/templates/SOUL.md +49 -0
- package/docs/reference/templates/TOOLS.dev.md +29 -0
- package/docs/reference/templates/TOOLS.md +51 -0
- package/docs/reference/templates/USER.dev.md +23 -0
- package/docs/reference/templates/USER.md +28 -0
- package/docs/reference/test.md +239 -0
- package/docs/reference/token-use.md +233 -0
- package/docs/reference/transcript-hygiene.md +214 -0
- package/docs/reference/wizard.md +252 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +170 -0
- package/docs/security/incident-response.md +59 -0
- package/docs/security/network-proxy.md +268 -0
- package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
- package/docs/snippets/plugin-publish/minimal-package.json +16 -0
- package/docs/start/bootstrapping.md +49 -0
- package/docs/start/docs-directory.md +69 -0
- package/docs/start/getting-started.md +152 -0
- package/docs/start/hubs.md +201 -0
- package/docs/start/lore.md +223 -0
- package/docs/start/onboarding-overview.md +72 -0
- package/docs/start/onboarding.md +95 -0
- package/docs/start/openclaw.md +244 -0
- package/docs/start/quickstart.md +25 -0
- package/docs/start/setup.md +178 -0
- package/docs/start/showcase.md +383 -0
- package/docs/start/wizard-cli-automation.md +232 -0
- package/docs/start/wizard-cli-reference.md +331 -0
- package/docs/start/wizard.md +141 -0
- package/docs/style.css +184 -0
- package/docs/superpowers/specs/2026-04-22-tweakcn-custom-theme-import-design.md +316 -0
- package/docs/tools/acp-agents-setup.md +352 -0
- package/docs/tools/acp-agents.md +847 -0
- package/docs/tools/agent-send.md +112 -0
- package/docs/tools/apply-patch.md +64 -0
- package/docs/tools/brave-search.md +139 -0
- package/docs/tools/browser-control.md +391 -0
- package/docs/tools/browser-linux-troubleshooting.md +173 -0
- package/docs/tools/browser-login.md +77 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
- package/docs/tools/browser.md +769 -0
- package/docs/tools/btw.md +159 -0
- package/docs/tools/capability-cookbook.md +12 -0
- package/docs/tools/clawhub.md +5 -0
- package/docs/tools/code-execution.md +173 -0
- package/docs/tools/creating-skills.md +120 -0
- package/docs/tools/diffs.md +506 -0
- package/docs/tools/duckduckgo-search.md +109 -0
- package/docs/tools/elevated.md +128 -0
- package/docs/tools/exa-search.md +152 -0
- package/docs/tools/exec-approvals-advanced.md +360 -0
- package/docs/tools/exec-approvals.md +474 -0
- package/docs/tools/exec.md +282 -0
- package/docs/tools/firecrawl.md +155 -0
- package/docs/tools/gemini-search.md +114 -0
- package/docs/tools/grok-search.md +113 -0
- package/docs/tools/image-generation.md +433 -0
- package/docs/tools/index.md +178 -0
- package/docs/tools/kimi-search.md +105 -0
- package/docs/tools/llm-task.md +137 -0
- package/docs/tools/lobster.md +365 -0
- package/docs/tools/loop-detection.md +154 -0
- package/docs/tools/media-overview.md +157 -0
- package/docs/tools/minimax-search.md +102 -0
- package/docs/tools/multi-agent-sandbox-tools.md +409 -0
- package/docs/tools/music-generation.md +371 -0
- package/docs/tools/ollama-search.md +153 -0
- package/docs/tools/pdf.md +195 -0
- package/docs/tools/perplexity-search.md +220 -0
- package/docs/tools/plugin.md +327 -0
- package/docs/tools/reactions.md +100 -0
- package/docs/tools/searxng-search.md +141 -0
- package/docs/tools/skills-config.md +195 -0
- package/docs/tools/skills.md +535 -0
- package/docs/tools/slash-commands.md +488 -0
- package/docs/tools/steer.md +84 -0
- package/docs/tools/subagents.md +650 -0
- package/docs/tools/tavily.md +162 -0
- package/docs/tools/thinking.md +140 -0
- package/docs/tools/tokenjuice.md +81 -0
- package/docs/tools/tool-search.md +269 -0
- package/docs/tools/trajectory.md +229 -0
- package/docs/tools/tts.md +1004 -0
- package/docs/tools/video-generation.md +552 -0
- package/docs/tools/web-fetch.md +195 -0
- package/docs/tools/web.md +459 -0
- package/docs/tts.md +11 -0
- package/docs/vps.md +139 -0
- package/docs/web/control-ui.md +503 -0
- package/docs/web/dashboard.md +107 -0
- package/docs/web/index.md +133 -0
- package/docs/web/tui.md +246 -0
- package/docs/web/webchat.md +99 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/nodmix.mjs +487 -0
- package/package.json +1852 -0
- package/patches/.gitkeep +0 -0
- package/patches/@agentclientprotocol__claude-agent-acp@0.36.1.patch +41 -0
- package/pnpm-workspace.yaml +63 -0
- package/scripts/crabbox-wrapper.mjs +353 -0
- package/scripts/lib/official-external-channel-catalog.json +559 -0
- package/scripts/lib/official-external-plugin-catalog.json +192 -0
- package/scripts/lib/official-external-provider-catalog.json +117 -0
- package/scripts/lib/package-dist-imports.mjs +171 -0
- package/scripts/npm-runner.mjs +91 -0
- package/scripts/postinstall-bundled-plugins.mjs +978 -0
- package/scripts/preinstall-package-manager-warning.mjs +64 -0
- package/scripts/windows-cmd-helpers.mjs +20 -0
- package/skills/1password/SKILL.md +70 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/apple-notes/SKILL.md +77 -0
- package/skills/apple-reminders/SKILL.md +118 -0
- package/skills/bear-notes/SKILL.md +107 -0
- package/skills/blogwatcher/SKILL.md +69 -0
- package/skills/blucli/SKILL.md +47 -0
- package/skills/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +78 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +149 -0
- package/skills/diagram-maker/SKILL.md +53 -0
- package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
- package/skills/diagram-maker/references/svg-template.md +112 -0
- package/skills/discord/SKILL.md +136 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +47 -0
- package/skills/gh-issues/SKILL.md +213 -0
- package/skills/gifgrep/SKILL.md +85 -0
- package/skills/github/SKILL.md +84 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +105 -0
- package/skills/himalaya/SKILL.md +80 -0
- package/skills/himalaya/references/configuration.md +184 -0
- package/skills/himalaya/references/message-composition.md +199 -0
- package/skills/imsg/SKILL.md +122 -0
- package/skills/mcporter/SKILL.md +61 -0
- package/skills/meme-maker/SKILL.md +42 -0
- package/skills/meme-maker/references/templates.json +358 -0
- package/skills/meme-maker/scripts/meme.mjs +398 -0
- package/skills/model-usage/SKILL.md +69 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +319 -0
- package/skills/model-usage/scripts/test_model_usage.py +40 -0
- package/skills/nano-pdf/SKILL.md +38 -0
- package/skills/node-connect/SKILL.md +142 -0
- package/skills/node-inspect-debugger/SKILL.md +85 -0
- package/skills/notion/SKILL.md +150 -0
- package/skills/obsidian/SKILL.md +119 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +71 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +126 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/pyproject.toml +10 -0
- package/skills/python-debugpy/SKILL.md +73 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/session-logs/SKILL.md +151 -0
- package/skills/sherpa-onnx-tts/SKILL.md +109 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +78 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/scripts/init_skill.py +378 -0
- package/skills/skill-creator/scripts/package_skill.py +139 -0
- package/skills/skill-creator/scripts/quick_validate.py +169 -0
- package/skills/skill-creator/scripts/test_package_skill.py +161 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
- package/skills/slack/SKILL.md +78 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spike/SKILL.md +51 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/taskflow/SKILL.md +149 -0
- package/skills/taskflow/examples/inbox-triage.lobster +33 -0
- package/skills/taskflow/examples/pr-intake.lobster +32 -0
- package/skills/taskflow-inbox-triage/SKILL.md +119 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +91 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +108 -0
- package/skills/video-frames/SKILL.md +46 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +45 -0
- package/skills/wacli/SKILL.md +72 -0
- package/skills/weather/SKILL.md +64 -0
- package/skills/xurl/SKILL.md +120 -0
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How the installer scripts work (install.sh, install-cli.sh, install.ps1), flags, and automation"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to understand `nodmix.ai/install.sh`
|
|
5
|
+
- You want to automate installs (CI / headless)
|
|
6
|
+
- You want to install from a GitHub checkout
|
|
7
|
+
title: "Installer internals"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Nodmix ships three installer scripts, served from `nodmix.ai`.
|
|
11
|
+
|
|
12
|
+
| Script | Platform | What it does |
|
|
13
|
+
| ---------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
14
|
+
| [`install.sh`](#installsh) | macOS / Linux / WSL | Installs Node if needed, installs Nodmix via npm (default) or git, and can run onboarding. |
|
|
15
|
+
| [`install-cli.sh`](#install-clish) | macOS / Linux / WSL | Installs Node + Nodmix into a local prefix (`~/.nodmix`) with npm or git checkout modes. No root required. |
|
|
16
|
+
| [`install.ps1`](#installps1) | Windows (PowerShell) | Installs Node if needed, installs Nodmix via npm (default) or git, and can run onboarding. |
|
|
17
|
+
|
|
18
|
+
## Quick commands
|
|
19
|
+
|
|
20
|
+
<Tabs>
|
|
21
|
+
<Tab title="install.sh">
|
|
22
|
+
```bash
|
|
23
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash -s -- --help
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
</Tab>
|
|
31
|
+
<Tab title="install-cli.sh">
|
|
32
|
+
```bash
|
|
33
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install-cli.sh | bash
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install-cli.sh | bash -s -- --help
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
</Tab>
|
|
41
|
+
<Tab title="install.ps1">
|
|
42
|
+
```powershell
|
|
43
|
+
iwr -useb https://nodmix.ai/install.ps1 | iex
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
```powershell
|
|
47
|
+
& ([scriptblock]::Create((iwr -useb https://nodmix.ai/install.ps1))) -Tag beta -NoOnboard -DryRun
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
</Tab>
|
|
51
|
+
</Tabs>
|
|
52
|
+
|
|
53
|
+
<Note>
|
|
54
|
+
If install succeeds but `nodmix` is not found in a new terminal, see [Node.js troubleshooting](/install/node#troubleshooting).
|
|
55
|
+
</Note>
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
<a id="installsh"></a>
|
|
60
|
+
|
|
61
|
+
## install.sh
|
|
62
|
+
|
|
63
|
+
<Tip>
|
|
64
|
+
Recommended for most interactive installs on macOS/Linux/WSL.
|
|
65
|
+
</Tip>
|
|
66
|
+
|
|
67
|
+
### Flow (install.sh)
|
|
68
|
+
|
|
69
|
+
<Steps>
|
|
70
|
+
<Step title="Detect OS">
|
|
71
|
+
Supports macOS and Linux (including WSL). If macOS is detected, installs Homebrew if missing.
|
|
72
|
+
</Step>
|
|
73
|
+
<Step title="Ensure Node.js 24 by default">
|
|
74
|
+
Checks Node version and installs Node 24 if needed (Homebrew on macOS, NodeSource setup scripts on Linux apt/dnf/yum). Nodmix still supports Node 22 LTS, currently `22.19+`, for compatibility.
|
|
75
|
+
</Step>
|
|
76
|
+
<Step title="Ensure Git">
|
|
77
|
+
Installs Git if missing.
|
|
78
|
+
</Step>
|
|
79
|
+
<Step title="Install Nodmix">
|
|
80
|
+
- `npm` method (default): global npm install
|
|
81
|
+
- `git` method: clone/update repo, install deps with pnpm, build, then install wrapper at `~/.local/bin/nodmix`
|
|
82
|
+
|
|
83
|
+
</Step>
|
|
84
|
+
<Step title="Post-install tasks">
|
|
85
|
+
- Refreshes a loaded gateway service best-effort (`nodmix gateway install --force`, then restart)
|
|
86
|
+
- Runs `nodmix doctor --non-interactive` on upgrades and git installs (best effort)
|
|
87
|
+
- Attempts onboarding when appropriate (TTY available, onboarding not disabled, and bootstrap/config checks pass)
|
|
88
|
+
- Defaults `SHARP_IGNORE_GLOBAL_LIBVIPS=1`
|
|
89
|
+
|
|
90
|
+
</Step>
|
|
91
|
+
</Steps>
|
|
92
|
+
|
|
93
|
+
### Source checkout detection
|
|
94
|
+
|
|
95
|
+
If run inside an Nodmix checkout (`package.json` + `pnpm-workspace.yaml`), the script offers:
|
|
96
|
+
|
|
97
|
+
- use checkout (`git`), or
|
|
98
|
+
- use global install (`npm`)
|
|
99
|
+
|
|
100
|
+
If no TTY is available and no install method is set, it defaults to `npm` and warns.
|
|
101
|
+
|
|
102
|
+
The script exits with code `2` for invalid method selection or invalid `--install-method` values.
|
|
103
|
+
|
|
104
|
+
### Examples (install.sh)
|
|
105
|
+
|
|
106
|
+
<Tabs>
|
|
107
|
+
<Tab title="Default">
|
|
108
|
+
```bash
|
|
109
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash
|
|
110
|
+
```
|
|
111
|
+
</Tab>
|
|
112
|
+
<Tab title="Skip onboarding">
|
|
113
|
+
```bash
|
|
114
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash -s -- --no-onboard
|
|
115
|
+
```
|
|
116
|
+
</Tab>
|
|
117
|
+
<Tab title="Git install">
|
|
118
|
+
```bash
|
|
119
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash -s -- --install-method git
|
|
120
|
+
```
|
|
121
|
+
</Tab>
|
|
122
|
+
<Tab title="GitHub main via npm">
|
|
123
|
+
```bash
|
|
124
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash -s -- --version main
|
|
125
|
+
```
|
|
126
|
+
</Tab>
|
|
127
|
+
<Tab title="Dry run">
|
|
128
|
+
```bash
|
|
129
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash -s -- --dry-run
|
|
130
|
+
```
|
|
131
|
+
</Tab>
|
|
132
|
+
</Tabs>
|
|
133
|
+
|
|
134
|
+
<AccordionGroup>
|
|
135
|
+
<Accordion title="Flags reference">
|
|
136
|
+
|
|
137
|
+
| Flag | Description |
|
|
138
|
+
| ------------------------------------- | ---------------------------------------------------------- |
|
|
139
|
+
| `--install-method npm\|git` | Choose install method (default: `npm`). Alias: `--method` |
|
|
140
|
+
| `--npm` | Shortcut for npm method |
|
|
141
|
+
| `--git` | Shortcut for git method. Alias: `--github` |
|
|
142
|
+
| `--version <version\|dist-tag\|spec>` | npm version, dist-tag, or package spec (default: `latest`) |
|
|
143
|
+
| `--beta` | Use beta dist-tag if available, else fallback to `latest` |
|
|
144
|
+
| `--git-dir <path>` | Checkout directory (default: `~/nodmix`). Alias: `--dir` |
|
|
145
|
+
| `--no-git-update` | Skip `git pull` for existing checkout |
|
|
146
|
+
| `--no-prompt` | Disable prompts |
|
|
147
|
+
| `--no-onboard` | Skip onboarding |
|
|
148
|
+
| `--onboard` | Enable onboarding |
|
|
149
|
+
| `--dry-run` | Print actions without applying changes |
|
|
150
|
+
| `--verbose` | Enable debug output (`set -x`, npm notice-level logs) |
|
|
151
|
+
| `--help` | Show usage (`-h`) |
|
|
152
|
+
|
|
153
|
+
</Accordion>
|
|
154
|
+
|
|
155
|
+
<Accordion title="Environment variables reference">
|
|
156
|
+
|
|
157
|
+
| Variable | Description |
|
|
158
|
+
| ------------------------------------------------------- | --------------------------------------------- |
|
|
159
|
+
| `NODMIX_INSTALL_METHOD=git\|npm` | Install method |
|
|
160
|
+
| `NODMIX_VERSION=latest\|next\|main\|<semver>\|<spec>` | npm version, dist-tag, or package spec |
|
|
161
|
+
| `NODMIX_BETA=0\|1` | Use beta if available |
|
|
162
|
+
| `NODMIX_GIT_DIR=<path>` | Checkout directory |
|
|
163
|
+
| `NODMIX_GIT_UPDATE=0\|1` | Toggle git updates |
|
|
164
|
+
| `NODMIX_NO_PROMPT=1` | Disable prompts |
|
|
165
|
+
| `NODMIX_NO_ONBOARD=1` | Skip onboarding |
|
|
166
|
+
| `NODMIX_DRY_RUN=1` | Dry run mode |
|
|
167
|
+
| `NODMIX_VERBOSE=1` | Debug mode |
|
|
168
|
+
| `NODMIX_NPM_LOGLEVEL=error\|warn\|notice` | npm log level |
|
|
169
|
+
| `SHARP_IGNORE_GLOBAL_LIBVIPS=0\|1` | Control sharp/libvips behavior (default: `1`) |
|
|
170
|
+
|
|
171
|
+
</Accordion>
|
|
172
|
+
</AccordionGroup>
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
<a id="install-clish"></a>
|
|
177
|
+
|
|
178
|
+
## install-cli.sh
|
|
179
|
+
|
|
180
|
+
<Info>
|
|
181
|
+
Designed for environments where you want everything under a local prefix
|
|
182
|
+
(default `~/.nodmix`) and no system Node dependency. Supports npm installs
|
|
183
|
+
by default, plus git-checkout installs under the same prefix flow.
|
|
184
|
+
</Info>
|
|
185
|
+
|
|
186
|
+
### Flow (install-cli.sh)
|
|
187
|
+
|
|
188
|
+
<Steps>
|
|
189
|
+
<Step title="Install local Node runtime">
|
|
190
|
+
Downloads a pinned supported Node LTS tarball (the version is embedded in the script and updated independently) to `<prefix>/tools/node-v<version>` and verifies SHA-256.
|
|
191
|
+
</Step>
|
|
192
|
+
<Step title="Ensure Git">
|
|
193
|
+
If Git is missing, attempts install via apt/dnf/yum on Linux or Homebrew on macOS.
|
|
194
|
+
</Step>
|
|
195
|
+
<Step title="Install Nodmix under prefix">
|
|
196
|
+
- `npm` method (default): installs under the prefix with npm, then writes wrapper to `<prefix>/bin/nodmix`
|
|
197
|
+
- `git` method: clones/updates a checkout (default `~/nodmix`) and still writes the wrapper to `<prefix>/bin/nodmix`
|
|
198
|
+
|
|
199
|
+
</Step>
|
|
200
|
+
<Step title="Refresh loaded gateway service">
|
|
201
|
+
If a gateway service is already loaded from that same prefix, the script runs
|
|
202
|
+
`nodmix gateway install --force`, then `nodmix gateway restart`, and
|
|
203
|
+
probes gateway health best-effort.
|
|
204
|
+
</Step>
|
|
205
|
+
</Steps>
|
|
206
|
+
|
|
207
|
+
### Examples (install-cli.sh)
|
|
208
|
+
|
|
209
|
+
<Tabs>
|
|
210
|
+
<Tab title="Default">
|
|
211
|
+
```bash
|
|
212
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install-cli.sh | bash
|
|
213
|
+
```
|
|
214
|
+
</Tab>
|
|
215
|
+
<Tab title="Custom prefix + version">
|
|
216
|
+
```bash
|
|
217
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install-cli.sh | bash -s -- --prefix /opt/nodmix --version latest
|
|
218
|
+
```
|
|
219
|
+
</Tab>
|
|
220
|
+
<Tab title="Git install">
|
|
221
|
+
```bash
|
|
222
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install-cli.sh | bash -s -- --install-method git --git-dir ~/nodmix
|
|
223
|
+
```
|
|
224
|
+
</Tab>
|
|
225
|
+
<Tab title="Automation JSON output">
|
|
226
|
+
```bash
|
|
227
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install-cli.sh | bash -s -- --json --prefix /opt/nodmix
|
|
228
|
+
```
|
|
229
|
+
</Tab>
|
|
230
|
+
<Tab title="Run onboarding">
|
|
231
|
+
```bash
|
|
232
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install-cli.sh | bash -s -- --onboard
|
|
233
|
+
```
|
|
234
|
+
</Tab>
|
|
235
|
+
</Tabs>
|
|
236
|
+
|
|
237
|
+
<AccordionGroup>
|
|
238
|
+
<Accordion title="Flags reference">
|
|
239
|
+
|
|
240
|
+
| Flag | Description |
|
|
241
|
+
| --------------------------- | ------------------------------------------------------------------------------- |
|
|
242
|
+
| `--prefix <path>` | Install prefix (default: `~/.nodmix`) |
|
|
243
|
+
| `--install-method npm\|git` | Choose install method (default: `npm`). Alias: `--method` |
|
|
244
|
+
| `--npm` | Shortcut for npm method |
|
|
245
|
+
| `--git`, `--github` | Shortcut for git method |
|
|
246
|
+
| `--git-dir <path>` | Git checkout directory (default: `~/nodmix`). Alias: `--dir` |
|
|
247
|
+
| `--version <ver>` | Nodmix version or dist-tag (default: `latest`) |
|
|
248
|
+
| `--node-version <ver>` | Node version (default: `22.22.0`) |
|
|
249
|
+
| `--json` | Emit NDJSON events |
|
|
250
|
+
| `--onboard` | Run `nodmix onboard` after install |
|
|
251
|
+
| `--no-onboard` | Skip onboarding (default) |
|
|
252
|
+
| `--set-npm-prefix` | On Linux, force npm prefix to `~/.npm-global` if current prefix is not writable |
|
|
253
|
+
| `--help` | Show usage (`-h`) |
|
|
254
|
+
|
|
255
|
+
</Accordion>
|
|
256
|
+
|
|
257
|
+
<Accordion title="Environment variables reference">
|
|
258
|
+
|
|
259
|
+
| Variable | Description |
|
|
260
|
+
| ------------------------------------------- | --------------------------------------------- |
|
|
261
|
+
| `NODMIX_PREFIX=<path>` | Install prefix |
|
|
262
|
+
| `NODMIX_INSTALL_METHOD=git\|npm` | Install method |
|
|
263
|
+
| `NODMIX_VERSION=<ver>` | Nodmix version or dist-tag |
|
|
264
|
+
| `NODMIX_NODE_VERSION=<ver>` | Node version |
|
|
265
|
+
| `NODMIX_GIT_DIR=<path>` | Git checkout directory for git installs |
|
|
266
|
+
| `NODMIX_GIT_UPDATE=0\|1` | Toggle git updates for existing checkouts |
|
|
267
|
+
| `NODMIX_NO_ONBOARD=1` | Skip onboarding |
|
|
268
|
+
| `NODMIX_NPM_LOGLEVEL=error\|warn\|notice` | npm log level |
|
|
269
|
+
| `SHARP_IGNORE_GLOBAL_LIBVIPS=0\|1` | Control sharp/libvips behavior (default: `1`) |
|
|
270
|
+
|
|
271
|
+
</Accordion>
|
|
272
|
+
</AccordionGroup>
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
<a id="installps1"></a>
|
|
277
|
+
|
|
278
|
+
## install.ps1
|
|
279
|
+
|
|
280
|
+
### Flow (install.ps1)
|
|
281
|
+
|
|
282
|
+
<Steps>
|
|
283
|
+
<Step title="Ensure PowerShell + Windows environment">
|
|
284
|
+
Requires PowerShell 5+.
|
|
285
|
+
</Step>
|
|
286
|
+
<Step title="Ensure Node.js 24 by default">
|
|
287
|
+
If missing, attempts install via winget, then Chocolatey, then Scoop. Node 22 LTS, currently `22.19+`, remains supported for compatibility.
|
|
288
|
+
</Step>
|
|
289
|
+
<Step title="Install Nodmix">
|
|
290
|
+
- `npm` method (default): global npm install using selected `-Tag`, launched from a writable installer temp directory so shells opened in protected folders such as `C:\` still work
|
|
291
|
+
- `git` method: clone/update repo, install/build with pnpm, and install wrapper at `%USERPROFILE%\.local\bin\nodmix.cmd`
|
|
292
|
+
|
|
293
|
+
</Step>
|
|
294
|
+
<Step title="Post-install tasks">
|
|
295
|
+
- Adds needed bin directory to user PATH when possible
|
|
296
|
+
- Refreshes a loaded gateway service best-effort (`nodmix gateway install --force`, then restart)
|
|
297
|
+
- Runs `nodmix doctor --non-interactive` on upgrades and git installs (best effort)
|
|
298
|
+
|
|
299
|
+
</Step>
|
|
300
|
+
<Step title="Handle failures">
|
|
301
|
+
`iwr ... | iex` and scriptblock installs report a terminating error without closing the current PowerShell session. Direct `powershell -File` / `pwsh -File` installs still exit non-zero for automation.
|
|
302
|
+
</Step>
|
|
303
|
+
</Steps>
|
|
304
|
+
|
|
305
|
+
### Examples (install.ps1)
|
|
306
|
+
|
|
307
|
+
<Tabs>
|
|
308
|
+
<Tab title="Default">
|
|
309
|
+
```powershell
|
|
310
|
+
iwr -useb https://nodmix.ai/install.ps1 | iex
|
|
311
|
+
```
|
|
312
|
+
</Tab>
|
|
313
|
+
<Tab title="Git install">
|
|
314
|
+
```powershell
|
|
315
|
+
& ([scriptblock]::Create((iwr -useb https://nodmix.ai/install.ps1))) -InstallMethod git
|
|
316
|
+
```
|
|
317
|
+
</Tab>
|
|
318
|
+
<Tab title="GitHub main via npm">
|
|
319
|
+
```powershell
|
|
320
|
+
& ([scriptblock]::Create((iwr -useb https://nodmix.ai/install.ps1))) -Tag main
|
|
321
|
+
```
|
|
322
|
+
</Tab>
|
|
323
|
+
<Tab title="Custom git directory">
|
|
324
|
+
```powershell
|
|
325
|
+
& ([scriptblock]::Create((iwr -useb https://nodmix.ai/install.ps1))) -InstallMethod git -GitDir "C:\nodmix"
|
|
326
|
+
```
|
|
327
|
+
</Tab>
|
|
328
|
+
<Tab title="Dry run">
|
|
329
|
+
```powershell
|
|
330
|
+
& ([scriptblock]::Create((iwr -useb https://nodmix.ai/install.ps1))) -DryRun
|
|
331
|
+
```
|
|
332
|
+
</Tab>
|
|
333
|
+
<Tab title="Debug trace">
|
|
334
|
+
```powershell
|
|
335
|
+
# install.ps1 has no dedicated -Verbose flag yet.
|
|
336
|
+
Set-PSDebug -Trace 1
|
|
337
|
+
& ([scriptblock]::Create((iwr -useb https://nodmix.ai/install.ps1))) -NoOnboard
|
|
338
|
+
Set-PSDebug -Trace 0
|
|
339
|
+
```
|
|
340
|
+
</Tab>
|
|
341
|
+
</Tabs>
|
|
342
|
+
|
|
343
|
+
<AccordionGroup>
|
|
344
|
+
<Accordion title="Flags reference">
|
|
345
|
+
|
|
346
|
+
| Flag | Description |
|
|
347
|
+
| --------------------------- | ---------------------------------------------------------- |
|
|
348
|
+
| `-InstallMethod npm\|git` | Install method (default: `npm`) |
|
|
349
|
+
| `-Tag <tag\|version\|spec>` | npm dist-tag, version, or package spec (default: `latest`) |
|
|
350
|
+
| `-GitDir <path>` | Checkout directory (default: `%USERPROFILE%\nodmix`) |
|
|
351
|
+
| `-NoOnboard` | Skip onboarding |
|
|
352
|
+
| `-NoGitUpdate` | Skip `git pull` |
|
|
353
|
+
| `-DryRun` | Print actions only |
|
|
354
|
+
|
|
355
|
+
</Accordion>
|
|
356
|
+
|
|
357
|
+
<Accordion title="Environment variables reference">
|
|
358
|
+
|
|
359
|
+
| Variable | Description |
|
|
360
|
+
| ---------------------------------- | ------------------ |
|
|
361
|
+
| `NODMIX_INSTALL_METHOD=git\|npm` | Install method |
|
|
362
|
+
| `NODMIX_GIT_DIR=<path>` | Checkout directory |
|
|
363
|
+
| `NODMIX_NO_ONBOARD=1` | Skip onboarding |
|
|
364
|
+
| `NODMIX_GIT_UPDATE=0` | Disable git pull |
|
|
365
|
+
| `NODMIX_DRY_RUN=1` | Dry run mode |
|
|
366
|
+
|
|
367
|
+
</Accordion>
|
|
368
|
+
</AccordionGroup>
|
|
369
|
+
|
|
370
|
+
<Note>
|
|
371
|
+
If `-InstallMethod git` is used and Git is missing, the script exits and prints the Git for Windows link.
|
|
372
|
+
</Note>
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## CI and automation
|
|
377
|
+
|
|
378
|
+
Use non-interactive flags/env vars for predictable runs.
|
|
379
|
+
|
|
380
|
+
<Tabs>
|
|
381
|
+
<Tab title="install.sh (non-interactive npm)">
|
|
382
|
+
```bash
|
|
383
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash -s -- --no-prompt --no-onboard
|
|
384
|
+
```
|
|
385
|
+
</Tab>
|
|
386
|
+
<Tab title="install.sh (non-interactive git)">
|
|
387
|
+
```bash
|
|
388
|
+
NODMIX_INSTALL_METHOD=git NODMIX_NO_PROMPT=1 \
|
|
389
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash
|
|
390
|
+
```
|
|
391
|
+
</Tab>
|
|
392
|
+
<Tab title="install-cli.sh (JSON)">
|
|
393
|
+
```bash
|
|
394
|
+
curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install-cli.sh | bash -s -- --json --prefix /opt/nodmix
|
|
395
|
+
```
|
|
396
|
+
</Tab>
|
|
397
|
+
<Tab title="install.ps1 (skip onboarding)">
|
|
398
|
+
```powershell
|
|
399
|
+
& ([scriptblock]::Create((iwr -useb https://nodmix.ai/install.ps1))) -NoOnboard
|
|
400
|
+
```
|
|
401
|
+
</Tab>
|
|
402
|
+
</Tabs>
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## Troubleshooting
|
|
407
|
+
|
|
408
|
+
<AccordionGroup>
|
|
409
|
+
<Accordion title="Why is Git required?">
|
|
410
|
+
Git is required for `git` install method. For `npm` installs, Git is still checked/installed to avoid `spawn git ENOENT` failures when dependencies use git URLs.
|
|
411
|
+
</Accordion>
|
|
412
|
+
|
|
413
|
+
<Accordion title="Why does npm hit EACCES on Linux?">
|
|
414
|
+
Some Linux setups point npm global prefix to root-owned paths. `install.sh` can switch prefix to `~/.npm-global` and append PATH exports to shell rc files (when those files exist).
|
|
415
|
+
</Accordion>
|
|
416
|
+
|
|
417
|
+
<Accordion title="sharp/libvips issues">
|
|
418
|
+
The scripts default `SHARP_IGNORE_GLOBAL_LIBVIPS=1` to avoid sharp building against system libvips. To override:
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
SHARP_IGNORE_GLOBAL_LIBVIPS=0 curl -fsSL --proto '=https' --tlsv1.2 https://nodmix.ai/install.sh | bash
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
</Accordion>
|
|
425
|
+
|
|
426
|
+
<Accordion title='Windows: "npm error spawn git / ENOENT"'>
|
|
427
|
+
Install Git for Windows, reopen PowerShell, rerun installer.
|
|
428
|
+
</Accordion>
|
|
429
|
+
|
|
430
|
+
<Accordion title='Windows: "nodmix is not recognized"'>
|
|
431
|
+
Run `npm config get prefix` and add that directory to your user PATH (no `\bin` suffix needed on Windows), then reopen PowerShell.
|
|
432
|
+
</Accordion>
|
|
433
|
+
|
|
434
|
+
<Accordion title="Windows: how to get verbose installer output">
|
|
435
|
+
`install.ps1` does not currently expose a `-Verbose` switch.
|
|
436
|
+
Use PowerShell tracing for script-level diagnostics:
|
|
437
|
+
|
|
438
|
+
```powershell
|
|
439
|
+
Set-PSDebug -Trace 1
|
|
440
|
+
& ([scriptblock]::Create((iwr -useb https://nodmix.ai/install.ps1))) -NoOnboard
|
|
441
|
+
Set-PSDebug -Trace 0
|
|
442
|
+
```
|
|
443
|
+
|
|
444
|
+
</Accordion>
|
|
445
|
+
|
|
446
|
+
<Accordion title="nodmix not found after install">
|
|
447
|
+
Usually a PATH issue. See [Node.js troubleshooting](/install/node#troubleshooting).
|
|
448
|
+
</Accordion>
|
|
449
|
+
</AccordionGroup>
|
|
450
|
+
|
|
451
|
+
## Related
|
|
452
|
+
|
|
453
|
+
- [Install overview](/install)
|
|
454
|
+
- [Updating](/install/updating)
|
|
455
|
+
- [Uninstall](/install/uninstall)
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Deploy Nodmix Gateway to a Kubernetes cluster with Kustomize"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to run Nodmix on a Kubernetes cluster
|
|
5
|
+
- You want to test Nodmix in a Kubernetes environment
|
|
6
|
+
title: "Kubernetes"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
A minimal starting point for running Nodmix on Kubernetes — not a production-ready deployment. It covers the core resources and is meant to be adapted to your environment.
|
|
10
|
+
|
|
11
|
+
## Why not Helm?
|
|
12
|
+
|
|
13
|
+
Nodmix is a single container with some config files. The interesting customization is in agent content (markdown files, skills, config overrides), not infrastructure templating. Kustomize handles overlays without the overhead of a Helm chart. If your deployment grows more complex, a Helm chart can be layered on top of these manifests.
|
|
14
|
+
|
|
15
|
+
## What you need
|
|
16
|
+
|
|
17
|
+
- A running Kubernetes cluster (AKS, EKS, GKE, k3s, kind, OpenShift, etc.)
|
|
18
|
+
- `kubectl` connected to your cluster
|
|
19
|
+
- An API key for at least one model provider
|
|
20
|
+
|
|
21
|
+
## Quick start
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Replace with your provider: ANTHROPIC, GEMINI, OPENAI, or OPENROUTER
|
|
25
|
+
export <PROVIDER>_API_KEY="..."
|
|
26
|
+
./scripts/k8s/deploy.sh
|
|
27
|
+
|
|
28
|
+
kubectl port-forward svc/nodmix 18789:18789 -n nodmix
|
|
29
|
+
open http://localhost:18789
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Retrieve the configured shared secret for the Control UI. This deploy script
|
|
33
|
+
creates token auth by default:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
kubectl get secret nodmix-secrets -n nodmix -o jsonpath='{.data.NODMIX_GATEWAY_TOKEN}' | base64 -d
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
For local debugging, `./scripts/k8s/deploy.sh --show-token` prints the token after deploy.
|
|
40
|
+
|
|
41
|
+
## Local testing with Kind
|
|
42
|
+
|
|
43
|
+
If you don't have a cluster, create one locally with [Kind](https://kind.sigs.k8s.io/):
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
./scripts/k8s/create-kind.sh # auto-detects docker or podman
|
|
47
|
+
./scripts/k8s/create-kind.sh --delete # tear down
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Then deploy as usual with `./scripts/k8s/deploy.sh`.
|
|
51
|
+
|
|
52
|
+
## Step by step
|
|
53
|
+
|
|
54
|
+
### 1) Deploy
|
|
55
|
+
|
|
56
|
+
**Option A** — API key in environment (one step):
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Replace with your provider: ANTHROPIC, GEMINI, OPENAI, or OPENROUTER
|
|
60
|
+
export <PROVIDER>_API_KEY="..."
|
|
61
|
+
./scripts/k8s/deploy.sh
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The script creates a Kubernetes Secret with the API key and an auto-generated gateway token, then deploys. If the Secret already exists, it preserves the current gateway token and any provider keys not being changed.
|
|
65
|
+
|
|
66
|
+
**Option B** — create the secret separately:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
export <PROVIDER>_API_KEY="..."
|
|
70
|
+
./scripts/k8s/deploy.sh --create-secret
|
|
71
|
+
./scripts/k8s/deploy.sh
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Use `--show-token` with either command if you want the token printed to stdout for local testing.
|
|
75
|
+
|
|
76
|
+
### 2) Access the gateway
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
kubectl port-forward svc/nodmix 18789:18789 -n nodmix
|
|
80
|
+
open http://localhost:18789
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## What gets deployed
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Namespace: nodmix (configurable via NODMIX_NAMESPACE)
|
|
87
|
+
├── Deployment/nodmix # Single pod, init container + gateway
|
|
88
|
+
├── Service/nodmix # ClusterIP on port 18789
|
|
89
|
+
├── PersistentVolumeClaim # 10Gi for agent state and config
|
|
90
|
+
├── ConfigMap/nodmix-config # nodmix.json + AGENTS.md
|
|
91
|
+
└── Secret/nodmix-secrets # Gateway token + API keys
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Customization
|
|
95
|
+
|
|
96
|
+
### Agent instructions
|
|
97
|
+
|
|
98
|
+
Edit the `AGENTS.md` in `scripts/k8s/manifests/configmap.yaml` and redeploy:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
./scripts/k8s/deploy.sh
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Gateway config
|
|
105
|
+
|
|
106
|
+
Edit `nodmix.json` in `scripts/k8s/manifests/configmap.yaml`. See [Gateway configuration](/gateway/configuration) for the full reference.
|
|
107
|
+
|
|
108
|
+
### Add providers
|
|
109
|
+
|
|
110
|
+
Re-run with additional keys exported:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
export ANTHROPIC_API_KEY="..."
|
|
114
|
+
export OPENAI_API_KEY="..."
|
|
115
|
+
./scripts/k8s/deploy.sh --create-secret
|
|
116
|
+
./scripts/k8s/deploy.sh
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Existing provider keys stay in the Secret unless you overwrite them.
|
|
120
|
+
|
|
121
|
+
Or patch the Secret directly:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
kubectl patch secret nodmix-secrets -n nodmix \
|
|
125
|
+
-p '{"stringData":{"<PROVIDER>_API_KEY":"..."}}'
|
|
126
|
+
kubectl rollout restart deployment/nodmix -n nodmix
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Custom namespace
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
NODMIX_NAMESPACE=my-namespace ./scripts/k8s/deploy.sh
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Custom image
|
|
136
|
+
|
|
137
|
+
Edit the `image` field in `scripts/k8s/manifests/deployment.yaml`:
|
|
138
|
+
|
|
139
|
+
```yaml
|
|
140
|
+
image: ghcr.io/nodmix/nodmix:latest # or pin to a specific version from https://github.com/nodmix/nodmix/releases
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Expose beyond port-forward
|
|
144
|
+
|
|
145
|
+
The default manifests bind the gateway to loopback inside the pod. That works with `kubectl port-forward`, but it does not work with a Kubernetes `Service` or Ingress path that needs to reach the pod IP.
|
|
146
|
+
|
|
147
|
+
If you want to expose the gateway through an Ingress or load balancer:
|
|
148
|
+
|
|
149
|
+
- Change the gateway bind in `scripts/k8s/manifests/configmap.yaml` from `loopback` to a non-loopback bind that matches your deployment model
|
|
150
|
+
- Keep gateway auth enabled and use a proper TLS-terminated entrypoint
|
|
151
|
+
- Configure the Control UI for remote access using the supported web security model (for example HTTPS/Tailscale Serve and explicit allowed origins when needed)
|
|
152
|
+
|
|
153
|
+
## Re-deploy
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
./scripts/k8s/deploy.sh
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
This applies all manifests and restarts the pod to pick up any config or secret changes.
|
|
160
|
+
|
|
161
|
+
## Teardown
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
./scripts/k8s/deploy.sh --delete
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
This deletes the namespace and all resources in it, including the PVC.
|
|
168
|
+
|
|
169
|
+
## Architecture notes
|
|
170
|
+
|
|
171
|
+
- The gateway binds to loopback inside the pod by default, so the included setup is for `kubectl port-forward`
|
|
172
|
+
- No cluster-scoped resources — everything lives in a single namespace
|
|
173
|
+
- Security: `readOnlyRootFilesystem`, `drop: ALL` capabilities, non-root user (UID 1000)
|
|
174
|
+
- The default config keeps the Control UI on the safer local-access path: loopback bind plus `kubectl port-forward` to `http://127.0.0.1:18789`
|
|
175
|
+
- If you move beyond localhost access, use the supported remote model: HTTPS/Tailscale plus the appropriate gateway bind and Control UI origin settings
|
|
176
|
+
- Secrets are generated in a temp directory and applied directly to the cluster — no secret material is written to the repo checkout
|
|
177
|
+
|
|
178
|
+
## File structure
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
scripts/k8s/
|
|
182
|
+
├── deploy.sh # Creates namespace + secret, deploys via kustomize
|
|
183
|
+
├── create-kind.sh # Local Kind cluster (auto-detects docker/podman)
|
|
184
|
+
└── manifests/
|
|
185
|
+
├── kustomization.yaml # Kustomize base
|
|
186
|
+
├── configmap.yaml # nodmix.json + AGENTS.md
|
|
187
|
+
├── deployment.yaml # Pod spec with security hardening
|
|
188
|
+
├── pvc.yaml # 10Gi persistent storage
|
|
189
|
+
└── service.yaml # ClusterIP on 18789
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Related
|
|
193
|
+
|
|
194
|
+
- [Docker](/install/docker)
|
|
195
|
+
- [Docker VM runtime](/install/docker-vm-runtime)
|
|
196
|
+
- [Install overview](/install)
|