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,286 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Windows support: native and WSL2 install paths, daemon, and current caveats"
|
|
3
|
+
read_when:
|
|
4
|
+
- Installing Nodmix on Windows
|
|
5
|
+
- Choosing between native Windows and WSL2
|
|
6
|
+
- Looking for Windows companion app status
|
|
7
|
+
title: "Windows"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Nodmix supports both **native Windows** and **WSL2**. WSL2 is the more
|
|
11
|
+
stable path and recommended for the full experience — the CLI, Gateway, and
|
|
12
|
+
tooling run inside Linux with full compatibility. Native Windows works for
|
|
13
|
+
core CLI and Gateway use, with some caveats noted below.
|
|
14
|
+
|
|
15
|
+
Native Windows companion apps are planned.
|
|
16
|
+
|
|
17
|
+
## WSL2 (recommended)
|
|
18
|
+
|
|
19
|
+
- [Getting Started](/start/getting-started) (use inside WSL)
|
|
20
|
+
- [Install & updates](/install/updating)
|
|
21
|
+
- Official WSL2 guide (Microsoft): [https://learn.microsoft.com/windows/wsl/install](https://learn.microsoft.com/windows/wsl/install)
|
|
22
|
+
|
|
23
|
+
## Native Windows status
|
|
24
|
+
|
|
25
|
+
Native Windows CLI flows are improving, but WSL2 is still the recommended path.
|
|
26
|
+
|
|
27
|
+
What works well on native Windows today:
|
|
28
|
+
|
|
29
|
+
- website installer via `install.ps1`
|
|
30
|
+
- local CLI use such as `nodmix --version`, `nodmix doctor`, and `nodmix plugins list --json`
|
|
31
|
+
- embedded local-agent/provider smoke such as:
|
|
32
|
+
|
|
33
|
+
```powershell
|
|
34
|
+
nodmix agent --local --agent main --thinking low -m "Reply with exactly WINDOWS-HATCH-OK."
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Current caveats:
|
|
38
|
+
|
|
39
|
+
- `nodmix onboard --non-interactive` still expects a reachable local gateway unless you pass `--skip-health`
|
|
40
|
+
- `nodmix onboard --non-interactive --install-daemon` and `nodmix gateway install` try Windows Scheduled Tasks first
|
|
41
|
+
- if Scheduled Task creation is denied, Nodmix falls back to a per-user Startup-folder login item and starts the gateway immediately
|
|
42
|
+
- if `schtasks` itself wedges or stops responding, Nodmix now aborts that path quickly and falls back instead of hanging forever
|
|
43
|
+
- Scheduled Tasks are still preferred when available because they provide better supervisor status
|
|
44
|
+
|
|
45
|
+
If you want the native CLI only, without gateway service install, use one of these:
|
|
46
|
+
|
|
47
|
+
```powershell
|
|
48
|
+
nodmix onboard --non-interactive --skip-health
|
|
49
|
+
nodmix gateway run
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If you do want managed startup on native Windows:
|
|
53
|
+
|
|
54
|
+
```powershell
|
|
55
|
+
nodmix gateway install
|
|
56
|
+
nodmix gateway status --json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If Scheduled Task creation is blocked, the fallback service mode still auto-starts after login through the current user's Startup folder.
|
|
60
|
+
|
|
61
|
+
## Gateway
|
|
62
|
+
|
|
63
|
+
- [Gateway runbook](/gateway)
|
|
64
|
+
- [Configuration](/gateway/configuration)
|
|
65
|
+
|
|
66
|
+
## Gateway service install (CLI)
|
|
67
|
+
|
|
68
|
+
Inside WSL2:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
nodmix onboard --install-daemon
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Or:
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
nodmix gateway install
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Or:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
nodmix configure
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Select **Gateway service** when prompted.
|
|
87
|
+
|
|
88
|
+
Repair/migrate:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
nodmix doctor
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Gateway auto-start before Windows login
|
|
95
|
+
|
|
96
|
+
For headless setups, ensure the full boot chain runs even when no one logs into
|
|
97
|
+
Windows.
|
|
98
|
+
|
|
99
|
+
### 1) Keep user services running without login
|
|
100
|
+
|
|
101
|
+
Inside WSL:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
sudo loginctl enable-linger "$(whoami)"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### 2) Install the Nodmix gateway user service
|
|
108
|
+
|
|
109
|
+
Inside WSL:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
nodmix gateway install
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 3) Start WSL automatically at Windows boot
|
|
116
|
+
|
|
117
|
+
In PowerShell as Administrator:
|
|
118
|
+
|
|
119
|
+
```powershell
|
|
120
|
+
schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEM
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Replace `Ubuntu` with your distro name from:
|
|
124
|
+
|
|
125
|
+
```powershell
|
|
126
|
+
wsl --list --verbose
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Verify startup chain
|
|
130
|
+
|
|
131
|
+
After a reboot (before Windows sign-in), check from WSL:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
systemctl --user is-enabled nodmix-gateway.service
|
|
135
|
+
systemctl --user status nodmix-gateway.service --no-pager
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Advanced: expose WSL services over LAN (portproxy)
|
|
139
|
+
|
|
140
|
+
WSL has its own virtual network. If another machine needs to reach a service
|
|
141
|
+
running **inside WSL** (SSH, a local TTS server, or the Gateway), you must
|
|
142
|
+
forward a Windows port to the current WSL IP. The WSL IP changes after restarts,
|
|
143
|
+
so you may need to refresh the forwarding rule.
|
|
144
|
+
|
|
145
|
+
Example (PowerShell **as Administrator**):
|
|
146
|
+
|
|
147
|
+
```powershell
|
|
148
|
+
$Distro = "Ubuntu-24.04"
|
|
149
|
+
$ListenPort = 2222
|
|
150
|
+
$TargetPort = 22
|
|
151
|
+
|
|
152
|
+
$WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]
|
|
153
|
+
if (-not $WslIp) { throw "WSL IP not found." }
|
|
154
|
+
|
|
155
|
+
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort `
|
|
156
|
+
connectaddress=$WslIp connectport=$TargetPort
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Allow the port through Windows Firewall (one-time):
|
|
160
|
+
|
|
161
|
+
```powershell
|
|
162
|
+
New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound `
|
|
163
|
+
-Protocol TCP -LocalPort $ListenPort -Action Allow
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Refresh the portproxy after WSL restarts:
|
|
167
|
+
|
|
168
|
+
```powershell
|
|
169
|
+
netsh interface portproxy delete v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 | Out-Null
|
|
170
|
+
netsh interface portproxy add v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 `
|
|
171
|
+
connectaddress=$WslIp connectport=$TargetPort | Out-Null
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Notes:
|
|
175
|
+
|
|
176
|
+
- SSH from another machine targets the **Windows host IP** (example: `ssh user@windows-host -p 2222`).
|
|
177
|
+
- Remote nodes must point at a **reachable** Gateway URL (not `127.0.0.1`); use
|
|
178
|
+
`nodmix status --all` to confirm.
|
|
179
|
+
- Use `listenaddress=0.0.0.0` for LAN access; `127.0.0.1` keeps it local only.
|
|
180
|
+
- If you want this automatic, register a Scheduled Task to run the refresh
|
|
181
|
+
step at login.
|
|
182
|
+
|
|
183
|
+
## Step-by-step WSL2 install
|
|
184
|
+
|
|
185
|
+
### 1) Install WSL2 + Ubuntu
|
|
186
|
+
|
|
187
|
+
Open PowerShell (Admin):
|
|
188
|
+
|
|
189
|
+
```powershell
|
|
190
|
+
wsl --install
|
|
191
|
+
# Or pick a distro explicitly:
|
|
192
|
+
wsl --list --online
|
|
193
|
+
wsl --install -d Ubuntu-24.04
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Reboot if Windows asks.
|
|
197
|
+
|
|
198
|
+
### 2) Enable systemd (required for gateway install)
|
|
199
|
+
|
|
200
|
+
In your WSL terminal:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
|
|
204
|
+
[boot]
|
|
205
|
+
systemd=true
|
|
206
|
+
EOF
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Then from PowerShell:
|
|
210
|
+
|
|
211
|
+
```powershell
|
|
212
|
+
wsl --shutdown
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Re-open Ubuntu, then verify:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
systemctl --user status
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 3) Install Nodmix (inside WSL)
|
|
222
|
+
|
|
223
|
+
For a normal first-time setup inside WSL, follow the Linux Getting Started flow:
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
git clone https://github.com/nodmix/nodmix.git
|
|
227
|
+
cd nodmix
|
|
228
|
+
pnpm install
|
|
229
|
+
pnpm build
|
|
230
|
+
pnpm ui:build
|
|
231
|
+
pnpm nodmix onboard --install-daemon
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
If you are developing from source instead of doing first-time onboarding, use the
|
|
235
|
+
source dev loop from [Setup](/start/setup):
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
pnpm install
|
|
239
|
+
# First run only (or after resetting local Nodmix config/workspace)
|
|
240
|
+
pnpm nodmix setup
|
|
241
|
+
pnpm gateway:watch
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Full guide: [Getting Started](/start/getting-started)
|
|
245
|
+
|
|
246
|
+
## Windows companion app
|
|
247
|
+
|
|
248
|
+
We do not have a Windows companion app yet. Contributions are welcome if you want to
|
|
249
|
+
help make it happen.
|
|
250
|
+
|
|
251
|
+
## Git and GitHub connectivity (contributors)
|
|
252
|
+
|
|
253
|
+
Some networks block or throttle HTTPS to GitHub. If `git clone` fails with timeouts
|
|
254
|
+
or connection resets, try another network, a VPN, or an HTTP/HTTPS proxy your
|
|
255
|
+
organization provides.
|
|
256
|
+
|
|
257
|
+
If `gh auth login` fails during the browser device flow (for example a timeout
|
|
258
|
+
reaching `github.com:443`), authenticate with a personal access token instead:
|
|
259
|
+
|
|
260
|
+
1. Create a token with at least the `repo` scope (classic PAT) or equivalent
|
|
261
|
+
fine-grained access.
|
|
262
|
+
2. In PowerShell for the current session:
|
|
263
|
+
|
|
264
|
+
```powershell
|
|
265
|
+
$env:GH_TOKEN="<your-token>"
|
|
266
|
+
gh auth status
|
|
267
|
+
gh auth setup-git
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
3. If `gh auth status` warns about missing `read:org`, mint a token that includes
|
|
271
|
+
that scope and re-assign the variable:
|
|
272
|
+
|
|
273
|
+
```powershell
|
|
274
|
+
$env:GH_TOKEN="<your-token-with-repo-and-read:org>"
|
|
275
|
+
gh auth status
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
`gh auth refresh -s read:org` only applies when you authenticated via `gh auth login`
|
|
279
|
+
and have stored credentials to refresh (not when using `GH_TOKEN`).
|
|
280
|
+
|
|
281
|
+
Never commit tokens or paste them into issues or pull requests.
|
|
282
|
+
|
|
283
|
+
## Related
|
|
284
|
+
|
|
285
|
+
- [Install overview](/install)
|
|
286
|
+
- [Platforms](/platforms)
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Contributor guide for adding a new shared capability to the Nodmix plugin system"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding a new core capability and plugin registration surface
|
|
5
|
+
- Deciding whether code belongs in core, a vendor plugin, or a feature plugin
|
|
6
|
+
- Wiring a new runtime helper for channels or tools
|
|
7
|
+
title: "Adding capabilities (contributor guide)"
|
|
8
|
+
sidebarTitle: "Adding capabilities"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<Info>
|
|
12
|
+
This is a **contributor guide** for Nodmix core developers. If you are
|
|
13
|
+
building an external plugin, see [Building plugins](/plugins/building-plugins)
|
|
14
|
+
instead. For the deep architecture reference (capability model, ownership,
|
|
15
|
+
load pipeline, runtime helpers), see [Plugin internals](/plugins/architecture).
|
|
16
|
+
</Info>
|
|
17
|
+
|
|
18
|
+
Use this when Nodmix needs a new shared domain such as image generation, video generation, or some future vendor-backed feature area.
|
|
19
|
+
|
|
20
|
+
The rule:
|
|
21
|
+
|
|
22
|
+
- **plugin** = ownership boundary
|
|
23
|
+
- **capability** = shared core contract
|
|
24
|
+
|
|
25
|
+
Do not start by wiring a vendor directly into a channel or a tool. Start by defining the capability.
|
|
26
|
+
|
|
27
|
+
## When to create a capability
|
|
28
|
+
|
|
29
|
+
Create a new capability when **all** of these are true:
|
|
30
|
+
|
|
31
|
+
1. More than one vendor could plausibly implement it.
|
|
32
|
+
2. Channels, tools, or feature plugins should consume it without caring about the vendor.
|
|
33
|
+
3. Core needs to own fallback, policy, config, or delivery behavior.
|
|
34
|
+
|
|
35
|
+
If the work is vendor-only and no shared contract exists yet, stop and define the contract first.
|
|
36
|
+
|
|
37
|
+
## The standard sequence
|
|
38
|
+
|
|
39
|
+
1. Define the typed core contract.
|
|
40
|
+
2. Add plugin registration for that contract.
|
|
41
|
+
3. Add a shared runtime helper.
|
|
42
|
+
4. Wire one real vendor plugin as proof.
|
|
43
|
+
5. Move feature/channel consumers onto the runtime helper.
|
|
44
|
+
6. Add contract tests.
|
|
45
|
+
7. Document the operator-facing config and ownership model.
|
|
46
|
+
|
|
47
|
+
## What goes where
|
|
48
|
+
|
|
49
|
+
**Core:**
|
|
50
|
+
|
|
51
|
+
- Request/response types.
|
|
52
|
+
- Provider registry + resolution.
|
|
53
|
+
- Fallback behavior.
|
|
54
|
+
- Config schema with propagated `title` / `description` docs metadata on nested object, wildcard, array-item, and composition nodes.
|
|
55
|
+
- Runtime helper surface.
|
|
56
|
+
|
|
57
|
+
**Vendor plugin:**
|
|
58
|
+
|
|
59
|
+
- Vendor API calls.
|
|
60
|
+
- Vendor auth handling.
|
|
61
|
+
- Vendor-specific request normalization.
|
|
62
|
+
- Registration of the capability implementation.
|
|
63
|
+
|
|
64
|
+
**Feature/channel plugin:**
|
|
65
|
+
|
|
66
|
+
- Calls `api.runtime.*` or the matching `plugin-sdk/*-runtime` helper.
|
|
67
|
+
- Never calls a vendor implementation directly.
|
|
68
|
+
|
|
69
|
+
## Provider and harness seams
|
|
70
|
+
|
|
71
|
+
Use **provider hooks** when the behavior belongs to the model provider contract rather than the generic agent loop. Examples include provider-specific request params after transport selection, auth-profile preference, prompt overlays, and follow-up fallback routing after model/profile failover.
|
|
72
|
+
|
|
73
|
+
Use **agent harness hooks** when the behavior belongs to the runtime that is executing a turn. Harnesses can classify successful-but-unusable attempt results such as empty, reasoning-only, or planning-only responses so the outer model fallback policy can make the retry decision.
|
|
74
|
+
|
|
75
|
+
Keep both seams narrow:
|
|
76
|
+
|
|
77
|
+
- Core owns the retry/fallback policy.
|
|
78
|
+
- Provider plugins own provider-specific request/auth/routing hints.
|
|
79
|
+
- Harness plugins own runtime-specific attempt classification.
|
|
80
|
+
- Third-party plugins return hints, not direct mutations of core state.
|
|
81
|
+
|
|
82
|
+
## File checklist
|
|
83
|
+
|
|
84
|
+
For a new capability, expect to touch these areas:
|
|
85
|
+
|
|
86
|
+
- `src/<capability>/types.ts`
|
|
87
|
+
- `src/<capability>/...registry/runtime.ts`
|
|
88
|
+
- `src/plugins/types.ts`
|
|
89
|
+
- `src/plugins/registry.ts`
|
|
90
|
+
- `src/plugins/captured-registration.ts`
|
|
91
|
+
- `src/plugins/contracts/registry.ts`
|
|
92
|
+
- `src/plugins/runtime/types-core.ts`
|
|
93
|
+
- `src/plugins/runtime/index.ts`
|
|
94
|
+
- `src/plugin-sdk/<capability>.ts`
|
|
95
|
+
- `src/plugin-sdk/<capability>-runtime.ts`
|
|
96
|
+
- One or more bundled plugin packages.
|
|
97
|
+
- Config, docs, tests.
|
|
98
|
+
|
|
99
|
+
## Worked example: image generation
|
|
100
|
+
|
|
101
|
+
Image generation follows the standard shape:
|
|
102
|
+
|
|
103
|
+
1. Core defines `ImageGenerationProvider`.
|
|
104
|
+
2. Core exposes `registerImageGenerationProvider(...)`.
|
|
105
|
+
3. Core exposes `runtime.imageGeneration.generate(...)`.
|
|
106
|
+
4. The `openai`, `google`, `fal`, and `minimax` plugins register vendor-backed implementations.
|
|
107
|
+
5. Future vendors register the same contract without changing channels/tools.
|
|
108
|
+
|
|
109
|
+
The config key is intentionally separate from vision-analysis routing:
|
|
110
|
+
|
|
111
|
+
- `agents.defaults.imageModel` analyzes images.
|
|
112
|
+
- `agents.defaults.imageGenerationModel` generates images.
|
|
113
|
+
|
|
114
|
+
Keep those separate so fallback and policy remain explicit.
|
|
115
|
+
|
|
116
|
+
## Review checklist
|
|
117
|
+
|
|
118
|
+
Before shipping a new capability, verify:
|
|
119
|
+
|
|
120
|
+
- No channel/tool imports vendor code directly.
|
|
121
|
+
- The runtime helper is the shared path.
|
|
122
|
+
- At least one contract test asserts bundled ownership.
|
|
123
|
+
- Config docs name the new model/config key.
|
|
124
|
+
- Plugin docs explain the ownership boundary.
|
|
125
|
+
|
|
126
|
+
If a PR skips the capability layer and hardcodes vendor behavior into a channel/tool, send it back and define the contract first.
|
|
127
|
+
|
|
128
|
+
## Related
|
|
129
|
+
|
|
130
|
+
- [Plugin internals](/plugins/architecture) — capability model, ownership, load pipeline, runtime helpers.
|
|
131
|
+
- [Building plugins](/plugins/building-plugins) — first-plugin tutorial.
|
|
132
|
+
- [SDK overview](/plugins/sdk-overview) — import map and registration API reference.
|
|
133
|
+
- [Creating skills](/tools/creating-skills) — companion contributor surface.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Expose selected Gateway control-plane methods through the bundled, opt-in admin-http-rpc plugin"
|
|
3
|
+
read_when:
|
|
4
|
+
- Building host tooling that cannot use the Gateway WebSocket RPC client
|
|
5
|
+
- Exposing Gateway admin automation behind a private trusted ingress
|
|
6
|
+
- Auditing the security model for HTTP access to Gateway methods
|
|
7
|
+
title: "Admin HTTP RPC plugin"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
The bundled `admin-http-rpc` plugin exposes selected Gateway control-plane methods over HTTP for trusted host automation that cannot use the normal Gateway WebSocket RPC client.
|
|
11
|
+
|
|
12
|
+
The plugin is included with Nodmix, but it is off by default. When disabled, the route is not registered. When enabled, it adds:
|
|
13
|
+
|
|
14
|
+
- `POST /api/v1/admin/rpc`
|
|
15
|
+
- same listener as the Gateway: `http://<gateway-host>:<port>/api/v1/admin/rpc`
|
|
16
|
+
|
|
17
|
+
Enable it only for private host tooling, tailnet automation, or a trusted internal ingress. Do not expose this route directly to the public internet.
|
|
18
|
+
|
|
19
|
+
## Before you enable it
|
|
20
|
+
|
|
21
|
+
Admin HTTP RPC is a full operator control-plane surface. Any caller that passes Gateway HTTP auth can invoke the allowlisted methods on this page.
|
|
22
|
+
|
|
23
|
+
Use it when all of these are true:
|
|
24
|
+
|
|
25
|
+
- The caller is trusted to operate the Gateway.
|
|
26
|
+
- The caller cannot use the WebSocket RPC client.
|
|
27
|
+
- The route is reachable only on loopback, a tailnet, or a private authenticated ingress.
|
|
28
|
+
- You have reviewed the allowed methods and they match the automation you plan to run.
|
|
29
|
+
|
|
30
|
+
Use the WebSocket RPC path for Nodmix clients and interactive tools that can keep a Gateway WebSocket connection open.
|
|
31
|
+
|
|
32
|
+
## Enable
|
|
33
|
+
|
|
34
|
+
Enable the bundled plugin:
|
|
35
|
+
|
|
36
|
+
<Tabs>
|
|
37
|
+
<Tab title="CLI">
|
|
38
|
+
```bash
|
|
39
|
+
nodmix plugins enable admin-http-rpc
|
|
40
|
+
nodmix gateway restart
|
|
41
|
+
```
|
|
42
|
+
</Tab>
|
|
43
|
+
<Tab title="Config">
|
|
44
|
+
```json5
|
|
45
|
+
{
|
|
46
|
+
plugins: {
|
|
47
|
+
entries: {
|
|
48
|
+
"admin-http-rpc": { enabled: true },
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
</Tab>
|
|
54
|
+
</Tabs>
|
|
55
|
+
|
|
56
|
+
The route is registered during plugin startup. Restart the Gateway after changing plugin config.
|
|
57
|
+
|
|
58
|
+
Disable it when you no longer need the HTTP surface:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
nodmix plugins disable admin-http-rpc
|
|
62
|
+
nodmix gateway restart
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Verify the route
|
|
66
|
+
|
|
67
|
+
Use `health` as the smallest safe request:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
curl -sS http://<gateway-host>:<port>/api/v1/admin/rpc \
|
|
71
|
+
-H 'Authorization: Bearer <gateway-token>' \
|
|
72
|
+
-H 'Content-Type: application/json' \
|
|
73
|
+
-d '{"method":"health","params":{}}'
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
A successful response has `ok: true`:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"id": "generated-request-id",
|
|
81
|
+
"ok": true,
|
|
82
|
+
"payload": {
|
|
83
|
+
"status": "ok"
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
When the plugin is disabled, the route returns `404` because it is not registered.
|
|
89
|
+
|
|
90
|
+
## Authentication
|
|
91
|
+
|
|
92
|
+
The plugin route uses Gateway HTTP auth.
|
|
93
|
+
|
|
94
|
+
Common authentication paths:
|
|
95
|
+
|
|
96
|
+
- shared-secret auth (`gateway.auth.mode="token"` or `"password"`): `Authorization: Bearer <token-or-password>`
|
|
97
|
+
- trusted identity-bearing HTTP auth (`gateway.auth.mode="trusted-proxy"`): route through the configured identity-aware proxy and let it inject the required identity headers
|
|
98
|
+
- private-ingress open auth (`gateway.auth.mode="none"`): no auth header required
|
|
99
|
+
|
|
100
|
+
## Security model
|
|
101
|
+
|
|
102
|
+
Treat this plugin as a full Gateway operator surface.
|
|
103
|
+
|
|
104
|
+
- Enabling the plugin intentionally offers access to the allowlisted admin RPC methods at `/api/v1/admin/rpc`.
|
|
105
|
+
- The plugin declares the reserved `contracts.gatewayMethodDispatch: ["authenticated-request"]` manifest contract so its Gateway-authenticated HTTP route can dispatch control-plane methods in process.
|
|
106
|
+
- Shared-secret bearer auth proves possession of the gateway operator secret.
|
|
107
|
+
- For `token` and `password` auth, narrower `x-nodmix-scopes` headers are ignored and the normal full operator defaults are restored.
|
|
108
|
+
- Trusted identity-bearing HTTP modes honor `x-nodmix-scopes` when present.
|
|
109
|
+
- `gateway.auth.mode="none"` means this route is unauthenticated if the plugin is enabled. Use that only behind a private ingress you fully trust.
|
|
110
|
+
- Requests dispatch through the same Gateway method handlers and scope checks as WebSocket RPC after the plugin route auth passes.
|
|
111
|
+
- Keep this route on loopback, tailnet, or a private trusted ingress. Do not expose it directly to the public internet.
|
|
112
|
+
- Plugin manifest contracts are not a sandbox. They prevent accidental use of reserved SDK helpers; trusted plugins still run in the Gateway process.
|
|
113
|
+
|
|
114
|
+
Use separate gateways when callers cross trust boundaries.
|
|
115
|
+
|
|
116
|
+
## Request
|
|
117
|
+
|
|
118
|
+
```http
|
|
119
|
+
POST /api/v1/admin/rpc
|
|
120
|
+
Authorization: Bearer <gateway-token>
|
|
121
|
+
Content-Type: application/json
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"id": "optional-request-id",
|
|
127
|
+
"method": "health",
|
|
128
|
+
"params": {}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Fields:
|
|
133
|
+
|
|
134
|
+
- `id` (string, optional): copied into the response. A UUID is generated when omitted.
|
|
135
|
+
- `method` (string, required): allowed Gateway method name.
|
|
136
|
+
- `params` (any, optional): method-specific params.
|
|
137
|
+
|
|
138
|
+
The default max request body size is 1 MB.
|
|
139
|
+
|
|
140
|
+
## Response
|
|
141
|
+
|
|
142
|
+
Success responses use the Gateway RPC shape:
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"id": "optional-request-id",
|
|
147
|
+
"ok": true,
|
|
148
|
+
"payload": {}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Gateway method errors use:
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"id": "optional-request-id",
|
|
157
|
+
"ok": false,
|
|
158
|
+
"error": {
|
|
159
|
+
"code": "INVALID_REQUEST",
|
|
160
|
+
"message": "bad params"
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
HTTP status follows the Gateway error when possible. For example, `INVALID_REQUEST` returns `400`, and `UNAVAILABLE` returns `503`.
|
|
166
|
+
|
|
167
|
+
## Allowed methods
|
|
168
|
+
|
|
169
|
+
- discovery: `commands.list`
|
|
170
|
+
Returns the HTTP RPC method names allowed by this plugin.
|
|
171
|
+
- gateway: `health`, `status`, `logs.tail`, `usage.status`, `usage.cost`, `gateway.restart.request`
|
|
172
|
+
- config: `config.get`, `config.schema`, `config.schema.lookup`, `config.set`, `config.patch`, `config.apply`
|
|
173
|
+
- channels: `channels.status`, `channels.start`, `channels.stop`, `channels.logout`
|
|
174
|
+
- web: `web.login.start`, `web.login.wait`
|
|
175
|
+
- models: `models.list`, `models.authStatus`
|
|
176
|
+
- agents: `agents.list`, `agents.create`, `agents.update`, `agents.delete`
|
|
177
|
+
- approvals: `exec.approvals.get`, `exec.approvals.set`, `exec.approvals.node.get`, `exec.approvals.node.set`
|
|
178
|
+
- cron: `cron.status`, `cron.list`, `cron.get`, `cron.runs`, `cron.add`, `cron.update`, `cron.remove`, `cron.run`
|
|
179
|
+
- devices: `device.pair.list`, `device.pair.approve`, `device.pair.reject`, `device.pair.remove`
|
|
180
|
+
- nodes: `node.list`, `node.describe`, `node.pair.list`, `node.pair.approve`, `node.pair.reject`, `node.pair.remove`, `node.rename`
|
|
181
|
+
- tasks: `tasks.list`, `tasks.get`, `tasks.cancel`
|
|
182
|
+
- diagnostics: `doctor.memory.status`, `update.status`
|
|
183
|
+
|
|
184
|
+
Other Gateway methods are blocked until they are intentionally added.
|
|
185
|
+
|
|
186
|
+
## WebSocket comparison
|
|
187
|
+
|
|
188
|
+
The normal Gateway WebSocket RPC path remains the preferred control-plane API for Nodmix clients. Use admin HTTP RPC only for host tooling that needs a request/response HTTP surface.
|
|
189
|
+
|
|
190
|
+
Shared-token WebSocket clients without a trusted device identity cannot self-declare admin scopes during connect. Admin HTTP RPC deliberately follows the existing trusted HTTP operator model: when the plugin is enabled, shared-secret bearer auth is treated as full operator access for this admin surface.
|
|
191
|
+
|
|
192
|
+
## Troubleshooting
|
|
193
|
+
|
|
194
|
+
`404 Not Found`
|
|
195
|
+
|
|
196
|
+
: The plugin is disabled, the Gateway has not restarted since enabling it, or the request is going to a different Gateway process.
|
|
197
|
+
|
|
198
|
+
`401 Unauthorized`
|
|
199
|
+
|
|
200
|
+
: The request did not satisfy Gateway HTTP auth. Check the bearer token or the trusted-proxy identity headers.
|
|
201
|
+
|
|
202
|
+
`400 INVALID_REQUEST`
|
|
203
|
+
|
|
204
|
+
: The request body is not valid JSON, the `method` field is missing, or the method is not in the plugin allowlist.
|
|
205
|
+
|
|
206
|
+
`503 UNAVAILABLE`
|
|
207
|
+
|
|
208
|
+
: The Gateway method handler is unavailable. Check Gateway logs and retry after the Gateway finishes startup.
|
|
209
|
+
|
|
210
|
+
## Related
|
|
211
|
+
|
|
212
|
+
- [Operator scopes](/gateway/operator-scopes)
|
|
213
|
+
- [Gateway security](/gateway/security)
|
|
214
|
+
- [Remote access](/gateway/remote)
|
|
215
|
+
- [Plugin manifest](/plugins/manifest#contracts)
|
|
216
|
+
- [SDK subpaths](/plugins/sdk-subpaths)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Redirects to Building Plugins (registering tools section)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Legacy link to agent-tools
|
|
5
|
+
title: "Registering tools"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
This page has moved. See [Building Plugins: Registering agent tools](/plugins/building-plugins#registering-agent-tools).
|
|
9
|
+
|
|
10
|
+
## Related
|
|
11
|
+
|
|
12
|
+
- [Building plugins](/plugins/building-plugins)
|
|
13
|
+
- [Plugin SDK setup](/plugins/sdk-setup)
|