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,418 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `nodmix policy` conformance checks"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to check Nodmix settings against an authored policy.jsonc
|
|
5
|
+
- You want policy findings in doctor lint
|
|
6
|
+
- You need a policy attestation hash for audit evidence
|
|
7
|
+
title: "Policy"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# `nodmix policy`
|
|
11
|
+
|
|
12
|
+
`nodmix policy` is provided by the bundled Policy plugin. Policy is an
|
|
13
|
+
enterprise conformance layer over existing Nodmix settings. It does not add a
|
|
14
|
+
second configuration system. `policy.jsonc` defines authored requirements,
|
|
15
|
+
Nodmix observes the active workspace as evidence, and policy health checks
|
|
16
|
+
report drift through `doctor --lint`. The final conformance signal is a clean
|
|
17
|
+
`doctor --lint` run; policy contributes findings to that shared lint surface
|
|
18
|
+
instead of creating a separate health gate.
|
|
19
|
+
|
|
20
|
+
Policy currently manages configured channels, MCP servers, model providers,
|
|
21
|
+
network SSRF posture, and governed tool declarations. For example, IT or a
|
|
22
|
+
workspace operator can record that Telegram is not an approved channel
|
|
23
|
+
provider, restrict MCP servers and model refs to approved entries, require
|
|
24
|
+
private-network fetch/browser access to remain disabled, require governed tools
|
|
25
|
+
to carry risk and sensitivity metadata, then use `doctor --lint` as the shared
|
|
26
|
+
conformance gate.
|
|
27
|
+
|
|
28
|
+
Use policy when a workspace needs a durable statement such as "these channels
|
|
29
|
+
must not be enabled" or "governed tools must declare approval metadata" and a
|
|
30
|
+
repeatable way to prove that Nodmix still conforms to that statement. Use
|
|
31
|
+
regular config and workspace docs alone when you only need local behavior and
|
|
32
|
+
do not need policy findings or attestation output.
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
Enable the bundled Policy plugin before first use:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
nodmix plugins enable policy
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
When policy is enabled, doctor can load policy health checks without activating
|
|
43
|
+
arbitrary plugins. The plugin remains enabled if `policy.jsonc` is missing, so
|
|
44
|
+
doctor can report the missing artifact.
|
|
45
|
+
|
|
46
|
+
Policy is authored, not generated from the user's current settings. A minimal
|
|
47
|
+
policy for channels, MCP servers, model providers, network posture, and tool
|
|
48
|
+
metadata looks like this:
|
|
49
|
+
|
|
50
|
+
```jsonc
|
|
51
|
+
{
|
|
52
|
+
"channels": {
|
|
53
|
+
"denyRules": [
|
|
54
|
+
{
|
|
55
|
+
"id": "no-telegram",
|
|
56
|
+
"when": { "provider": "telegram" },
|
|
57
|
+
"reason": "Telegram is not approved for this workspace.",
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
"mcp": {
|
|
62
|
+
"servers": {
|
|
63
|
+
"allow": ["docs"],
|
|
64
|
+
"deny": ["untrusted"],
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
"models": {
|
|
68
|
+
"providers": {
|
|
69
|
+
"allow": ["openai", "anthropic"],
|
|
70
|
+
"deny": ["openrouter"],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
"network": {
|
|
74
|
+
"privateNetwork": {
|
|
75
|
+
"allow": false,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
"tools": {
|
|
79
|
+
"requireMetadata": ["risk", "sensitivity", "owner"],
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The rules are the authority. A category block is only a namespace; checks run
|
|
85
|
+
when a concrete rule is present. Nodmix reads current `channels.*` settings
|
|
86
|
+
`mcp.servers.*`, `models.providers.*`, selected agent model refs, network SSRF
|
|
87
|
+
settings, and `TOOLS.md` declarations as evidence, then reports observed state
|
|
88
|
+
that does not conform.
|
|
89
|
+
|
|
90
|
+
Run policy-only checks during authoring:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
nodmix policy check
|
|
94
|
+
nodmix policy check --json
|
|
95
|
+
nodmix policy check --severity-min error
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
`policy check` runs only the policy check set and emits evidence, findings, and
|
|
99
|
+
attestation hashes. The same findings also appear in `nodmix doctor --lint`
|
|
100
|
+
when the Policy plugin is enabled.
|
|
101
|
+
|
|
102
|
+
Example clean JSON output includes stable hashes that can be recorded by an
|
|
103
|
+
operator or supervisor:
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
{
|
|
107
|
+
"ok": true,
|
|
108
|
+
"attestation": {
|
|
109
|
+
"policy": {
|
|
110
|
+
"path": "policy.jsonc",
|
|
111
|
+
"hash": "sha256:..."
|
|
112
|
+
},
|
|
113
|
+
"workspace": {
|
|
114
|
+
"scope": "policy",
|
|
115
|
+
"hash": "sha256:..."
|
|
116
|
+
},
|
|
117
|
+
"findingsHash": "sha256:...",
|
|
118
|
+
"attestationHash": "sha256:..."
|
|
119
|
+
},
|
|
120
|
+
"checksRun": 5,
|
|
121
|
+
"checksSkipped": 0,
|
|
122
|
+
"findings": []
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Configure policy
|
|
127
|
+
|
|
128
|
+
Policy config lives under `plugins.entries.policy.config`.
|
|
129
|
+
|
|
130
|
+
```jsonc
|
|
131
|
+
{
|
|
132
|
+
"plugins": {
|
|
133
|
+
"entries": {
|
|
134
|
+
"policy": {
|
|
135
|
+
"enabled": true,
|
|
136
|
+
"config": {
|
|
137
|
+
"enabled": true,
|
|
138
|
+
"path": "policy.jsonc",
|
|
139
|
+
"workspaceRepairs": false,
|
|
140
|
+
"expectedHash": "sha256:...",
|
|
141
|
+
"expectedAttestationHash": "sha256:...",
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
| Setting | Purpose |
|
|
150
|
+
| ------------------------- | --------------------------------------------------------------- |
|
|
151
|
+
| `enabled` | Enable policy checks even before `policy.jsonc` exists. |
|
|
152
|
+
| `workspaceRepairs` | Allow `doctor --fix` to edit policy-managed workspace settings. |
|
|
153
|
+
| `expectedHash` | Optional hash-lock for the approved policy artifact. |
|
|
154
|
+
| `expectedAttestationHash` | Optional hash-lock for the last accepted clean policy check. |
|
|
155
|
+
| `path` | Workspace-relative location of the policy artifact. |
|
|
156
|
+
|
|
157
|
+
Set `plugins.entries.policy.config.enabled` to `false` to disable policy checks
|
|
158
|
+
for a workspace while leaving the plugin installed.
|
|
159
|
+
|
|
160
|
+
Tool metadata requirements are authored in `policy.jsonc` with
|
|
161
|
+
`tools.requireMetadata`, for example `["risk", "sensitivity", "owner"]`.
|
|
162
|
+
|
|
163
|
+
## Accept policy state
|
|
164
|
+
|
|
165
|
+
Example JSON output:
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"ok": true,
|
|
170
|
+
"attestation": {
|
|
171
|
+
"checkedAt": "2026-05-10T20:00:00.000Z",
|
|
172
|
+
"policy": {
|
|
173
|
+
"path": "policy.jsonc",
|
|
174
|
+
"hash": "sha256:..."
|
|
175
|
+
},
|
|
176
|
+
"workspace": {
|
|
177
|
+
"scope": "policy",
|
|
178
|
+
"hash": "sha256:..."
|
|
179
|
+
},
|
|
180
|
+
"findingsHash": "sha256:...",
|
|
181
|
+
"attestationHash": "sha256:..."
|
|
182
|
+
},
|
|
183
|
+
"evidence": {
|
|
184
|
+
"channels": [
|
|
185
|
+
{
|
|
186
|
+
"id": "telegram",
|
|
187
|
+
"provider": "telegram",
|
|
188
|
+
"source": "oc://nodmix.config/channels/telegram",
|
|
189
|
+
"enabled": false
|
|
190
|
+
}
|
|
191
|
+
],
|
|
192
|
+
"mcpServers": [
|
|
193
|
+
{
|
|
194
|
+
"id": "docs",
|
|
195
|
+
"transport": "stdio",
|
|
196
|
+
"source": "oc://nodmix.config/mcp/servers/docs",
|
|
197
|
+
"command": "npx"
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"modelProviders": [
|
|
201
|
+
{
|
|
202
|
+
"id": "openai",
|
|
203
|
+
"source": "oc://nodmix.config/models/providers/openai"
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
"modelRefs": [
|
|
207
|
+
{
|
|
208
|
+
"ref": "openai/gpt-5.5",
|
|
209
|
+
"provider": "openai",
|
|
210
|
+
"model": "gpt-5.5",
|
|
211
|
+
"source": "oc://nodmix.config/agents/defaults/model"
|
|
212
|
+
}
|
|
213
|
+
],
|
|
214
|
+
"network": [
|
|
215
|
+
{
|
|
216
|
+
"id": "browser-private-network",
|
|
217
|
+
"source": "oc://nodmix.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork",
|
|
218
|
+
"value": false
|
|
219
|
+
}
|
|
220
|
+
],
|
|
221
|
+
"tools": [
|
|
222
|
+
{
|
|
223
|
+
"id": "deploy",
|
|
224
|
+
"source": "oc://TOOLS.md/tools/deploy",
|
|
225
|
+
"line": 12,
|
|
226
|
+
"risk": "critical",
|
|
227
|
+
"sensitivity": "restricted",
|
|
228
|
+
"capabilities": ["IRREVERSIBLE_EXTERNAL"]
|
|
229
|
+
}
|
|
230
|
+
]
|
|
231
|
+
},
|
|
232
|
+
"checksRun": 15,
|
|
233
|
+
"checksSkipped": 0,
|
|
234
|
+
"findings": []
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
The policy hash identifies the authored rule artifact. The evidence block
|
|
239
|
+
records the observed Nodmix state used by the policy checks. The
|
|
240
|
+
`workspace.hash` value identifies that evidence payload for the checked scope.
|
|
241
|
+
The findings hash identifies the exact finding set returned by the check.
|
|
242
|
+
`checkedAt` records when the evaluation ran. The attestation hash identifies
|
|
243
|
+
the stable claim: policy hash, evidence hash, findings hash, and whether the
|
|
244
|
+
result was clean. It intentionally does not include `checkedAt`, so the same
|
|
245
|
+
policy state produces the same attestation across repeated checks. Together,
|
|
246
|
+
these form the audit tuple for this policy check.
|
|
247
|
+
|
|
248
|
+
If a later gateway or supervisor uses policy to block, approve, or annotate a
|
|
249
|
+
runtime action, it should record the attestation hash from the last clean policy
|
|
250
|
+
check. `checkedAt` stays in JSON output for audit logs, but is not part of the
|
|
251
|
+
stable attestation hash.
|
|
252
|
+
|
|
253
|
+
Use this lifecycle when accepting policy state:
|
|
254
|
+
|
|
255
|
+
1. Author or review `policy.jsonc`.
|
|
256
|
+
2. Run `nodmix policy check --json`.
|
|
257
|
+
3. If the result is clean, record `attestation.policy.hash` as `expectedHash`.
|
|
258
|
+
4. Record `attestation.attestationHash` as `expectedAttestationHash`.
|
|
259
|
+
5. Re-run `nodmix doctor --lint` in CI or release gates.
|
|
260
|
+
|
|
261
|
+
If policy rules change intentionally, update both accepted hashes from a clean
|
|
262
|
+
check. If workspace settings change intentionally but policy stays the same,
|
|
263
|
+
only `expectedAttestationHash` usually changes.
|
|
264
|
+
|
|
265
|
+
`nodmix policy watch` runs the same check repeatedly and reports when the
|
|
266
|
+
current evidence no longer matches `expectedAttestationHash`:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
nodmix policy watch --json
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Use `--once` in CI or scripts that only need one drift evaluation. Without
|
|
273
|
+
`--once`, the command polls every two seconds by default; use `--interval-ms` to
|
|
274
|
+
choose a different interval.
|
|
275
|
+
|
|
276
|
+
## Findings
|
|
277
|
+
|
|
278
|
+
Policy currently verifies:
|
|
279
|
+
|
|
280
|
+
| Check id | Finding |
|
|
281
|
+
| ---------------------------------------- | --------------------------------------------------------------------- |
|
|
282
|
+
| `policy/policy-jsonc-missing` | Policy is enabled but `policy.jsonc` is missing. |
|
|
283
|
+
| `policy/policy-jsonc-invalid` | Policy cannot be parsed or contains malformed rule entries. |
|
|
284
|
+
| `policy/policy-hash-mismatch` | Policy does not match configured `expectedHash`. |
|
|
285
|
+
| `policy/attestation-hash-mismatch` | Current policy evidence no longer matches the accepted attestation. |
|
|
286
|
+
| `policy/channels-denied-provider` | An enabled channel matches a channel deny rule. |
|
|
287
|
+
| `policy/mcp-denied-server` | A configured MCP server is denied by policy. |
|
|
288
|
+
| `policy/mcp-unapproved-server` | A configured MCP server is outside the allowlist. |
|
|
289
|
+
| `policy/models-denied-provider` | A configured model provider or model ref uses a denied provider. |
|
|
290
|
+
| `policy/models-unapproved-provider` | A configured model provider or model ref is outside the allowlist. |
|
|
291
|
+
| `policy/network-private-access-enabled` | A private-network SSRF escape hatch is enabled when policy denies it. |
|
|
292
|
+
| `policy/tools-missing-risk-level` | A governed tool declaration is missing risk metadata. |
|
|
293
|
+
| `policy/tools-unknown-risk-level` | A governed tool declaration uses an unknown risk value. |
|
|
294
|
+
| `policy/tools-missing-sensitivity-token` | A governed tool declaration is missing sensitivity metadata. |
|
|
295
|
+
| `policy/tools-missing-owner` | A governed tool declaration is missing owner metadata. |
|
|
296
|
+
| `policy/tools-unknown-sensitivity-token` | A governed tool declaration uses an unknown sensitivity value. |
|
|
297
|
+
|
|
298
|
+
Policy findings can include both `target` and `requirement`. `target` is the
|
|
299
|
+
observed workspace thing that does not conform. `requirement` is the authored
|
|
300
|
+
policy rule that made it a finding. Both values are addresses today, usually
|
|
301
|
+
`oc://` paths, but the field names describe their policy role rather than the
|
|
302
|
+
address format.
|
|
303
|
+
|
|
304
|
+
Example JSON finding:
|
|
305
|
+
|
|
306
|
+
```json
|
|
307
|
+
{
|
|
308
|
+
"checkId": "policy/channels-denied-provider",
|
|
309
|
+
"severity": "error",
|
|
310
|
+
"message": "Channel 'telegram' uses denied provider 'telegram'.",
|
|
311
|
+
"source": "policy",
|
|
312
|
+
"path": "nodmix config",
|
|
313
|
+
"ocPath": "oc://nodmix.config/channels/telegram",
|
|
314
|
+
"target": "oc://nodmix.config/channels/telegram",
|
|
315
|
+
"requirement": "oc://policy.jsonc/channels/denyRules/#0",
|
|
316
|
+
"fixHint": "Telegram is not approved for this workspace."
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Example tool finding:
|
|
321
|
+
|
|
322
|
+
```json
|
|
323
|
+
{
|
|
324
|
+
"checkId": "policy/tools-missing-risk-level",
|
|
325
|
+
"severity": "error",
|
|
326
|
+
"message": "TOOLS.md tool 'deploy' has no explicit risk classification.",
|
|
327
|
+
"source": "policy",
|
|
328
|
+
"path": "TOOLS.md",
|
|
329
|
+
"line": 12,
|
|
330
|
+
"ocPath": "oc://TOOLS.md/tools/deploy",
|
|
331
|
+
"target": "oc://TOOLS.md/tools/deploy",
|
|
332
|
+
"requirement": "oc://policy.jsonc/tools/requireMetadata"
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
Example MCP finding:
|
|
337
|
+
|
|
338
|
+
```json
|
|
339
|
+
{
|
|
340
|
+
"checkId": "policy/mcp-unapproved-server",
|
|
341
|
+
"severity": "error",
|
|
342
|
+
"message": "MCP server 'remote' is not in the policy allowlist.",
|
|
343
|
+
"source": "policy",
|
|
344
|
+
"path": "nodmix config",
|
|
345
|
+
"ocPath": "oc://nodmix.config/mcp/servers/remote",
|
|
346
|
+
"target": "oc://nodmix.config/mcp/servers/remote",
|
|
347
|
+
"requirement": "oc://policy.jsonc/mcp/servers/allow"
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
Example model-provider finding:
|
|
352
|
+
|
|
353
|
+
```json
|
|
354
|
+
{
|
|
355
|
+
"checkId": "policy/models-unapproved-provider",
|
|
356
|
+
"severity": "error",
|
|
357
|
+
"message": "Model ref 'anthropic/claude-sonnet-4.7' uses unapproved provider 'anthropic'.",
|
|
358
|
+
"source": "policy",
|
|
359
|
+
"path": "nodmix config",
|
|
360
|
+
"ocPath": "oc://nodmix.config/agents/defaults/model/fallbacks/#0",
|
|
361
|
+
"target": "oc://nodmix.config/agents/defaults/model/fallbacks/#0",
|
|
362
|
+
"requirement": "oc://policy.jsonc/models/providers/allow"
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
Example network finding:
|
|
367
|
+
|
|
368
|
+
```json
|
|
369
|
+
{
|
|
370
|
+
"checkId": "policy/network-private-access-enabled",
|
|
371
|
+
"severity": "error",
|
|
372
|
+
"message": "Network setting 'browser-private-network' allows private-network access.",
|
|
373
|
+
"source": "policy",
|
|
374
|
+
"path": "nodmix config",
|
|
375
|
+
"ocPath": "oc://nodmix.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork",
|
|
376
|
+
"target": "oc://nodmix.config/browser/ssrfPolicy/dangerouslyAllowPrivateNetwork",
|
|
377
|
+
"requirement": "oc://policy.jsonc/network/privateNetwork/allow"
|
|
378
|
+
}
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
## Repair
|
|
382
|
+
|
|
383
|
+
`doctor --lint` and `policy check` are read-only.
|
|
384
|
+
|
|
385
|
+
`doctor --fix` only edits policy-managed workspace settings when
|
|
386
|
+
`workspaceRepairs` is explicitly enabled. Without that opt-in, policy checks
|
|
387
|
+
report what they would repair and leave settings unchanged.
|
|
388
|
+
|
|
389
|
+
In this version, repair can disable channels that are enabled in Nodmix config
|
|
390
|
+
but denied by `channels.denyRules`. Enable `workspaceRepairs` only after the
|
|
391
|
+
policy file has been reviewed, because a valid deny rule can turn off a
|
|
392
|
+
configured channel:
|
|
393
|
+
|
|
394
|
+
```jsonc
|
|
395
|
+
{
|
|
396
|
+
"plugins": {
|
|
397
|
+
"entries": {
|
|
398
|
+
"policy": {
|
|
399
|
+
"config": {
|
|
400
|
+
"workspaceRepairs": true,
|
|
401
|
+
},
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
## Exit codes
|
|
409
|
+
|
|
410
|
+
| Command | `0` | `1` | `2` |
|
|
411
|
+
| -------------- | ----------------------------------------- | ------------------------------------------------ | ---------------------------- |
|
|
412
|
+
| `policy check` | No findings at the threshold. | One or more findings met the threshold. | Argument or runtime failure. |
|
|
413
|
+
| `policy watch` | No findings and accepted hash is current. | Findings exist or accepted attestation is stale. | Argument or runtime failure. |
|
|
414
|
+
|
|
415
|
+
## Related
|
|
416
|
+
|
|
417
|
+
- [Doctor lint mode](/cli/doctor#lint-mode)
|
|
418
|
+
- [Path CLI](/cli/path)
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `nodmix proxy`, including operator-managed proxy validation and the local debug proxy capture inspector"
|
|
3
|
+
read_when:
|
|
4
|
+
- You need to validate operator-managed proxy routing before deployment
|
|
5
|
+
- You need to capture Nodmix transport traffic locally for debugging
|
|
6
|
+
- You want to inspect debug proxy sessions, blobs, or built-in query presets
|
|
7
|
+
title: "Proxy"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# `nodmix proxy`
|
|
11
|
+
|
|
12
|
+
Validate operator-managed proxy routing, or run the local explicit debug proxy
|
|
13
|
+
and inspect captured traffic.
|
|
14
|
+
|
|
15
|
+
Use `validate` to preflight an operator-managed forward proxy before enabling
|
|
16
|
+
Nodmix proxy routing. The other commands are debugging tools for
|
|
17
|
+
transport-level investigation: they can start a local proxy, run a child command
|
|
18
|
+
with capture enabled, list capture sessions, query common traffic patterns, read
|
|
19
|
+
captured blobs, and purge local capture data.
|
|
20
|
+
|
|
21
|
+
## Commands
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
nodmix proxy start [--host <host>] [--port <port>]
|
|
25
|
+
nodmix proxy run [--host <host>] [--port <port>] -- <cmd...>
|
|
26
|
+
nodmix proxy validate [--json] [--proxy-url <url>] [--proxy-ca-file <path>] [--allowed-url <url>] [--denied-url <url>] [--apns-reachable] [--apns-authority <url>] [--timeout-ms <ms>]
|
|
27
|
+
nodmix proxy coverage
|
|
28
|
+
nodmix proxy sessions [--limit <count>]
|
|
29
|
+
nodmix proxy query --preset <name> [--session <id>]
|
|
30
|
+
nodmix proxy blob --id <blobId>
|
|
31
|
+
nodmix proxy purge
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Validate
|
|
35
|
+
|
|
36
|
+
`nodmix proxy validate` checks the effective operator-managed proxy URL from
|
|
37
|
+
`--proxy-url`, config, or `NODMIX_PROXY_URL`. Managed proxy URLs can use
|
|
38
|
+
`http://` for a plain forward-proxy listener or `https://` when Nodmix must
|
|
39
|
+
open TLS to the proxy endpoint before sending proxy requests. It reports a
|
|
40
|
+
config problem when no proxy is enabled and configured; use `--proxy-url` for a
|
|
41
|
+
one-off preflight before changing config. Add `--proxy-ca-file` to trust a
|
|
42
|
+
private CA for the TLS connection to an HTTPS proxy endpoint. By default it
|
|
43
|
+
verifies that a public destination succeeds through the proxy and that the proxy
|
|
44
|
+
cannot reach a temporary loopback canary. Custom denied destinations are
|
|
45
|
+
fail-closed: HTTP responses and ambiguous transport failures both fail unless
|
|
46
|
+
you can verify a deployment-specific denial signal separately. Add
|
|
47
|
+
`--apns-reachable` to also open an APNs HTTP/2 CONNECT tunnel through the proxy
|
|
48
|
+
and confirm sandbox APNs responds; the probe uses an intentionally invalid
|
|
49
|
+
provider token, so an APNs `403 InvalidProviderToken` response is a successful
|
|
50
|
+
reachability signal.
|
|
51
|
+
|
|
52
|
+
Options:
|
|
53
|
+
|
|
54
|
+
- `--json`: print machine-readable JSON.
|
|
55
|
+
- `--proxy-url <url>`: validate this `http://` or `https://` proxy URL instead of config or env.
|
|
56
|
+
- `--proxy-ca-file <path>`: trust this PEM CA file for TLS verification of an HTTPS proxy endpoint.
|
|
57
|
+
- `--allowed-url <url>`: add a destination expected to succeed through the proxy. Repeat to check multiple destinations.
|
|
58
|
+
- `--denied-url <url>`: add a destination expected to be blocked by the proxy. Repeat to check multiple destinations.
|
|
59
|
+
- `--apns-reachable`: also verify sandbox APNs HTTP/2 is reachable through the proxy.
|
|
60
|
+
- `--apns-authority <url>`: APNs authority to probe with `--apns-reachable` (`https://api.sandbox.push.apple.com` by default; production is `https://api.push.apple.com`).
|
|
61
|
+
- `--timeout-ms <ms>`: per-request timeout in milliseconds.
|
|
62
|
+
|
|
63
|
+
See [Network Proxy](/security/network-proxy) for deployment guidance and denial
|
|
64
|
+
semantics.
|
|
65
|
+
|
|
66
|
+
## Query presets
|
|
67
|
+
|
|
68
|
+
`nodmix proxy query --preset <name>` accepts:
|
|
69
|
+
|
|
70
|
+
- `double-sends`
|
|
71
|
+
- `retry-storms`
|
|
72
|
+
- `cache-busting`
|
|
73
|
+
- `ws-duplicate-frames`
|
|
74
|
+
- `missing-ack`
|
|
75
|
+
- `error-bursts`
|
|
76
|
+
|
|
77
|
+
## Notes
|
|
78
|
+
|
|
79
|
+
- `start` defaults to `127.0.0.1` unless `--host` is set.
|
|
80
|
+
- `run` starts a local debug proxy and then runs the command after `--`.
|
|
81
|
+
- The debug proxy's direct upstream forwarding opens upstream sockets for diagnostics. When Nodmix managed proxy mode is active, direct forwarding for proxy requests and CONNECT tunnels is disabled by default; set `NODMIX_DEBUG_PROXY_ALLOW_DIRECT_CONNECT_WITH_MANAGED_PROXY=1` only for approved local diagnostics.
|
|
82
|
+
- `validate` exits with code 1 when proxy config or destination checks fail.
|
|
83
|
+
- Captures are local debugging data; use `nodmix proxy purge` when finished.
|
|
84
|
+
|
|
85
|
+
## Related
|
|
86
|
+
|
|
87
|
+
- [CLI reference](/cli)
|
|
88
|
+
- [Network Proxy](/security/network-proxy)
|
|
89
|
+
- [Trusted proxy auth](/gateway/trusted-proxy-auth)
|
package/docs/cli/qr.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `nodmix qr` (generate mobile pairing QR + setup code)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to pair a mobile node app with a gateway quickly
|
|
5
|
+
- You need setup-code output for remote/manual sharing
|
|
6
|
+
title: "QR"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# `nodmix qr`
|
|
10
|
+
|
|
11
|
+
Generate a mobile pairing QR and setup code from your current Gateway configuration.
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
nodmix qr
|
|
17
|
+
nodmix qr --setup-code-only
|
|
18
|
+
nodmix qr --json
|
|
19
|
+
nodmix qr --remote
|
|
20
|
+
nodmix qr --url wss://gateway.example/ws
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Options
|
|
24
|
+
|
|
25
|
+
- `--remote`: prefer `gateway.remote.url`; if it is unset, `gateway.tailscale.mode=serve|funnel` can still provide the remote public URL
|
|
26
|
+
- `--url <url>`: override gateway URL used in payload
|
|
27
|
+
- `--public-url <url>`: override public URL used in payload
|
|
28
|
+
- `--token <token>`: override which gateway token the bootstrap flow authenticates against
|
|
29
|
+
- `--password <password>`: override which gateway password the bootstrap flow authenticates against
|
|
30
|
+
- `--setup-code-only`: print only setup code
|
|
31
|
+
- `--no-ascii`: skip ASCII QR rendering
|
|
32
|
+
- `--json`: emit JSON (`setupCode`, `gatewayUrl`, `auth`, `urlSource`)
|
|
33
|
+
|
|
34
|
+
## Notes
|
|
35
|
+
|
|
36
|
+
- `--token` and `--password` are mutually exclusive.
|
|
37
|
+
- The setup code itself now carries an opaque short-lived `bootstrapToken`, not the shared gateway token/password.
|
|
38
|
+
- Built-in setup-code bootstrap returns a primary `node` token with `scopes: []` plus a bounded `operator` handoff token for trusted mobile onboarding.
|
|
39
|
+
- The handed-off operator token is limited to `operator.approvals`, `operator.read`, and `operator.write`; `operator.admin`, `operator.pairing`, and `operator.talk.secrets` require a separate approved operator pairing or token flow.
|
|
40
|
+
- Mobile pairing fails closed for Tailscale/public `ws://` gateway URLs. Private LAN addresses and `.local` Bonjour hosts remain supported over `ws://`, but Tailscale/public mobile routes should use Tailscale Serve/Funnel or a `wss://` gateway URL.
|
|
41
|
+
- With `--remote`, Nodmix requires either `gateway.remote.url` or
|
|
42
|
+
`gateway.tailscale.mode=serve|funnel`.
|
|
43
|
+
- With `--remote`, if effectively active remote credentials are configured as SecretRefs and you do not pass `--token` or `--password`, the command resolves them from the active gateway snapshot. If gateway is unavailable, the command fails fast.
|
|
44
|
+
- Without `--remote`, local gateway auth SecretRefs are resolved when no CLI auth override is passed:
|
|
45
|
+
- `gateway.auth.token` resolves when token auth can win (explicit `gateway.auth.mode="token"` or inferred mode where no password source wins).
|
|
46
|
+
- `gateway.auth.password` resolves when password auth can win (explicit `gateway.auth.mode="password"` or inferred mode with no winning token from auth/env).
|
|
47
|
+
- If both `gateway.auth.token` and `gateway.auth.password` are configured (including SecretRefs) and `gateway.auth.mode` is unset, setup-code resolution fails until mode is set explicitly.
|
|
48
|
+
- Gateway version skew note: this command path requires a gateway that supports `secrets.resolve`; older gateways return an unknown-method error.
|
|
49
|
+
- After scanning, approve device pairing with:
|
|
50
|
+
- `nodmix devices list`
|
|
51
|
+
- `nodmix devices approve <requestId>`
|
|
52
|
+
|
|
53
|
+
## Related
|
|
54
|
+
|
|
55
|
+
- [CLI reference](/cli)
|
|
56
|
+
- [Pairing](/cli/pairing)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `nodmix reset` (reset local state/config)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to wipe local state while keeping the CLI installed
|
|
5
|
+
- You want a dry-run of what would be removed
|
|
6
|
+
title: "Reset"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# `nodmix reset`
|
|
10
|
+
|
|
11
|
+
Reset local config/state (keeps the CLI installed).
|
|
12
|
+
|
|
13
|
+
Options:
|
|
14
|
+
|
|
15
|
+
- `--scope <scope>`: `config`, `config+creds+sessions`, or `full`
|
|
16
|
+
- `--yes`: skip confirmation prompts
|
|
17
|
+
- `--non-interactive`: disable prompts; requires `--scope` and `--yes`
|
|
18
|
+
- `--dry-run`: print actions without removing files
|
|
19
|
+
|
|
20
|
+
Examples:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
nodmix backup create
|
|
24
|
+
nodmix reset
|
|
25
|
+
nodmix reset --dry-run
|
|
26
|
+
nodmix reset --scope config --yes --non-interactive
|
|
27
|
+
nodmix reset --scope config+creds+sessions --yes --non-interactive
|
|
28
|
+
nodmix reset --scope full --yes --non-interactive
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Notes:
|
|
32
|
+
|
|
33
|
+
- Run `nodmix backup create` first if you want a restorable snapshot before removing local state.
|
|
34
|
+
- If you omit `--scope`, `nodmix reset` uses an interactive prompt to choose what to remove.
|
|
35
|
+
- `--non-interactive` is only valid when both `--scope` and `--yes` are set.
|
|
36
|
+
|
|
37
|
+
## Related
|
|
38
|
+
|
|
39
|
+
- [CLI reference](/cli)
|