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,207 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Gateway-owned node pairing (Option B) for iOS and other remote nodes"
|
|
3
|
+
read_when:
|
|
4
|
+
- Implementing node pairing approvals without macOS UI
|
|
5
|
+
- Adding CLI flows for approving remote nodes
|
|
6
|
+
- Extending gateway protocol with node management
|
|
7
|
+
title: "Gateway-owned pairing"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
In Gateway-owned pairing, the **Gateway** is the source of truth for which nodes
|
|
11
|
+
are allowed to join. UIs (macOS app, future clients) are just frontends that
|
|
12
|
+
approve or reject pending requests.
|
|
13
|
+
|
|
14
|
+
**Important:** WS nodes use **device pairing** (role `node`) during `connect`.
|
|
15
|
+
`node.pair.*` is a separate pairing store and does **not** gate the WS handshake.
|
|
16
|
+
Only clients that explicitly call `node.pair.*` use this flow.
|
|
17
|
+
|
|
18
|
+
## Concepts
|
|
19
|
+
|
|
20
|
+
- **Pending request**: a node asked to join; requires approval.
|
|
21
|
+
- **Paired node**: approved node with an issued auth token.
|
|
22
|
+
- **Transport**: the Gateway WS endpoint forwards requests but does not decide
|
|
23
|
+
membership. (Legacy TCP bridge support has been removed.)
|
|
24
|
+
|
|
25
|
+
## How pairing works
|
|
26
|
+
|
|
27
|
+
1. A node connects to the Gateway WS and requests pairing.
|
|
28
|
+
2. The Gateway stores a **pending request** and emits `node.pair.requested`.
|
|
29
|
+
3. You approve or reject the request (CLI or UI).
|
|
30
|
+
4. On approval, the Gateway issues a **new token** (tokens are rotated on re-pair).
|
|
31
|
+
5. The node reconnects using the token and is now "paired".
|
|
32
|
+
|
|
33
|
+
Pending requests expire automatically after **5 minutes**.
|
|
34
|
+
|
|
35
|
+
## CLI workflow (headless friendly)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
nodmix nodes pending
|
|
39
|
+
nodmix nodes approve <requestId>
|
|
40
|
+
nodmix nodes reject <requestId>
|
|
41
|
+
nodmix nodes status
|
|
42
|
+
nodmix nodes remove --node <id|name|ip>
|
|
43
|
+
nodmix nodes rename --node <id|name|ip> --name "Living Room iPad"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`nodes status` shows paired/connected nodes and their capabilities.
|
|
47
|
+
|
|
48
|
+
## API surface (gateway protocol)
|
|
49
|
+
|
|
50
|
+
Events:
|
|
51
|
+
|
|
52
|
+
- `node.pair.requested` - emitted when a new pending request is created.
|
|
53
|
+
- `node.pair.resolved` - emitted when a request is approved/rejected/expired.
|
|
54
|
+
|
|
55
|
+
Methods:
|
|
56
|
+
|
|
57
|
+
- `node.pair.request` - create or reuse a pending request.
|
|
58
|
+
- `node.pair.list` - list pending + paired nodes (`operator.pairing`).
|
|
59
|
+
- `node.pair.approve` - approve a pending request (issues token).
|
|
60
|
+
- `node.pair.reject` - reject a pending request.
|
|
61
|
+
- `node.pair.remove` - remove a stale paired node entry.
|
|
62
|
+
- `node.pair.verify` - verify `{ nodeId, token }`.
|
|
63
|
+
|
|
64
|
+
Notes:
|
|
65
|
+
|
|
66
|
+
- `node.pair.request` is idempotent per node: repeated calls return the same
|
|
67
|
+
pending request.
|
|
68
|
+
- Repeated requests for the same pending node also refresh the stored node
|
|
69
|
+
metadata and the latest allowlisted declared command snapshot for operator visibility.
|
|
70
|
+
- Approval **always** generates a fresh token; no token is ever returned from
|
|
71
|
+
`node.pair.request`.
|
|
72
|
+
- Operator scope levels and approval-time checks are summarized in
|
|
73
|
+
[Operator scopes](/gateway/operator-scopes).
|
|
74
|
+
- Requests may include `silent: true` as a hint for auto-approval flows.
|
|
75
|
+
- `node.pair.approve` uses the pending request's declared commands to enforce
|
|
76
|
+
extra approval scopes:
|
|
77
|
+
- commandless request: `operator.pairing`
|
|
78
|
+
- non-exec command request: `operator.pairing` + `operator.write`
|
|
79
|
+
- `system.run` / `system.run.prepare` / `system.which` request:
|
|
80
|
+
`operator.pairing` + `operator.admin`
|
|
81
|
+
|
|
82
|
+
<Warning>
|
|
83
|
+
Node pairing is a trust and identity flow plus token issuance. It does **not** pin the live node command surface per node.
|
|
84
|
+
|
|
85
|
+
- Live node commands come from what the node declares on connect after the gateway's global node command policy (`gateway.nodes.allowCommands` and `denyCommands`) is applied.
|
|
86
|
+
- Per-node `system.run` allow and ask policy lives on the node in `exec.approvals.node.*`, not in the pairing record.
|
|
87
|
+
|
|
88
|
+
</Warning>
|
|
89
|
+
|
|
90
|
+
## Node command gating (2026.3.31+)
|
|
91
|
+
|
|
92
|
+
<Warning>
|
|
93
|
+
**Breaking change:** Starting with `2026.3.31`, node commands are disabled until node pairing is approved. Device pairing alone is no longer enough to expose declared node commands.
|
|
94
|
+
</Warning>
|
|
95
|
+
|
|
96
|
+
When a node connects for the first time, pairing is requested automatically. Until the pairing request is approved, all pending node commands from that node are filtered and will not execute. Once trust is established through pairing approval, the node's declared commands become available subject to the normal command policy.
|
|
97
|
+
|
|
98
|
+
This means:
|
|
99
|
+
|
|
100
|
+
- Nodes that were previously relying on device pairing alone to expose commands must now complete node pairing.
|
|
101
|
+
- Commands queued before pairing approval are dropped, not deferred.
|
|
102
|
+
|
|
103
|
+
## Node event trust boundaries (2026.3.31+)
|
|
104
|
+
|
|
105
|
+
<Warning>
|
|
106
|
+
**Breaking change:** Node-originated runs now stay on a reduced trusted surface.
|
|
107
|
+
</Warning>
|
|
108
|
+
|
|
109
|
+
Node-originated summaries and related session events are restricted to the intended trusted surface. Notification-driven or node-triggered flows that previously relied on broader host or session tool access may need adjustment. This hardening ensures that node events cannot escalate into host-level tool access beyond what the node's trust boundary permits.
|
|
110
|
+
|
|
111
|
+
Durable node presence updates follow the same identity boundary. The `node.presence.alive` event is
|
|
112
|
+
accepted only from authenticated node device sessions and updates pairing metadata only when the
|
|
113
|
+
device/node identity is already paired. Self-declared `client.id` values are not enough to write
|
|
114
|
+
last-seen state.
|
|
115
|
+
|
|
116
|
+
## Auto-approval (macOS app)
|
|
117
|
+
|
|
118
|
+
The macOS app can optionally attempt a **silent approval** when:
|
|
119
|
+
|
|
120
|
+
- the request is marked `silent`, and
|
|
121
|
+
- the app can verify an SSH connection to the gateway host using the same user.
|
|
122
|
+
|
|
123
|
+
If silent approval fails, it falls back to the normal "Approve/Reject" prompt.
|
|
124
|
+
|
|
125
|
+
## Trusted-CIDR device auto-approval
|
|
126
|
+
|
|
127
|
+
WS device pairing for `role: node` remains manual by default. For private
|
|
128
|
+
node networks where the Gateway already trusts the network path, operators can
|
|
129
|
+
opt in with explicit CIDRs or exact IPs:
|
|
130
|
+
|
|
131
|
+
```json5
|
|
132
|
+
{
|
|
133
|
+
gateway: {
|
|
134
|
+
nodes: {
|
|
135
|
+
pairing: {
|
|
136
|
+
autoApproveCidrs: ["192.168.1.0/24"],
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Security boundary:
|
|
144
|
+
|
|
145
|
+
- Disabled when `gateway.nodes.pairing.autoApproveCidrs` is unset.
|
|
146
|
+
- No blanket LAN or private-network auto-approve mode exists.
|
|
147
|
+
- Only fresh `role: node` device pairing with no requested scopes is eligible.
|
|
148
|
+
- Operator, browser, Control UI, and WebChat clients stay manual.
|
|
149
|
+
- Role, scope, metadata, and public-key upgrades stay manual.
|
|
150
|
+
- Same-host loopback trusted-proxy header paths are not eligible because that
|
|
151
|
+
path can be spoofed by local callers.
|
|
152
|
+
|
|
153
|
+
## Metadata-upgrade auto-approval
|
|
154
|
+
|
|
155
|
+
When an already paired device reconnects with only non-sensitive metadata
|
|
156
|
+
changes (for example, display name or client platform hints), Nodmix treats
|
|
157
|
+
that as a `metadata-upgrade`. Silent auto-approval is narrow: it applies only
|
|
158
|
+
to trusted non-browser local reconnects that already proved possession of local
|
|
159
|
+
or shared credentials, including same-host native app reconnects after OS
|
|
160
|
+
version metadata changes. Browser/Control UI clients and remote clients still
|
|
161
|
+
use the explicit re-approval flow. Scope upgrades (read to write/admin) and
|
|
162
|
+
public key changes are **not** eligible for metadata-upgrade auto-approval -
|
|
163
|
+
they stay as explicit re-approval requests.
|
|
164
|
+
|
|
165
|
+
## QR pairing helpers
|
|
166
|
+
|
|
167
|
+
`/pair qr` renders the pairing payload as structured media so mobile and
|
|
168
|
+
browser clients can scan it directly.
|
|
169
|
+
|
|
170
|
+
Deleting a device also sweeps any stale pending pairing requests for that
|
|
171
|
+
device id, so `nodes pending` does not show orphaned rows after a revoke.
|
|
172
|
+
|
|
173
|
+
## Locality and forwarded headers
|
|
174
|
+
|
|
175
|
+
Gateway pairing treats a connection as loopback only when both the raw socket
|
|
176
|
+
and any upstream proxy evidence agree. If a request arrives on loopback but
|
|
177
|
+
carries `Forwarded`, any `X-Forwarded-*`, or `X-Real-IP` header evidence, that
|
|
178
|
+
forwarded-header evidence disqualifies the loopback locality claim. The pairing
|
|
179
|
+
path then requires explicit approval instead of silently treating the request as
|
|
180
|
+
a same-host connect. See [Trusted Proxy Auth](/gateway/trusted-proxy-auth) for
|
|
181
|
+
the equivalent rule on operator auth.
|
|
182
|
+
|
|
183
|
+
## Storage (local, private)
|
|
184
|
+
|
|
185
|
+
Pairing state is stored under the Gateway state directory (default `~/.nodmix`):
|
|
186
|
+
|
|
187
|
+
- `~/.nodmix/nodes/paired.json`
|
|
188
|
+
- `~/.nodmix/nodes/pending.json`
|
|
189
|
+
|
|
190
|
+
If you override `NODMIX_STATE_DIR`, the `nodes/` folder moves with it.
|
|
191
|
+
|
|
192
|
+
Security notes:
|
|
193
|
+
|
|
194
|
+
- Tokens are secrets; treat `paired.json` as sensitive.
|
|
195
|
+
- Rotating a token requires re-approval (or deleting the node entry).
|
|
196
|
+
|
|
197
|
+
## Transport behavior
|
|
198
|
+
|
|
199
|
+
- The transport is **stateless**; it does not store membership.
|
|
200
|
+
- If the Gateway is offline or pairing is disabled, nodes cannot pair.
|
|
201
|
+
- If the Gateway is in remote mode, pairing still happens against the remote Gateway's store.
|
|
202
|
+
|
|
203
|
+
## Related
|
|
204
|
+
|
|
205
|
+
- [Channel pairing](/channels/pairing)
|
|
206
|
+
- [Nodes](/nodes)
|
|
207
|
+
- [Devices CLI](/cli/devices)
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Expose Nodmix diagnostics as Prometheus text metrics through the diagnostics-prometheus plugin"
|
|
3
|
+
title: "Prometheus metrics"
|
|
4
|
+
sidebarTitle: "Prometheus"
|
|
5
|
+
read_when:
|
|
6
|
+
- You want Prometheus, Grafana, VictoriaMetrics, or another scraper to collect Nodmix Gateway metrics
|
|
7
|
+
- You need the Prometheus metric names and label policy for dashboards or alerts
|
|
8
|
+
- You want metrics without running an OpenTelemetry collector
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Nodmix can expose diagnostics metrics through the official `diagnostics-prometheus` plugin. It listens to trusted internal diagnostics and renders a Prometheus text endpoint at:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
GET /api/diagnostics/prometheus
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Content type is `text/plain; version=0.0.4; charset=utf-8`, the standard Prometheus exposition format.
|
|
18
|
+
|
|
19
|
+
<Warning>
|
|
20
|
+
The route uses Gateway authentication (operator scope). Do not expose it as a public unauthenticated `/metrics` endpoint. Scrape it through the same auth path you use for other operator APIs.
|
|
21
|
+
</Warning>
|
|
22
|
+
|
|
23
|
+
For traces, logs, OTLP push, and OpenTelemetry GenAI semantic attributes, see [OpenTelemetry export](/gateway/opentelemetry).
|
|
24
|
+
|
|
25
|
+
## Quick start
|
|
26
|
+
|
|
27
|
+
<Steps>
|
|
28
|
+
<Step title="Install the plugin">
|
|
29
|
+
```bash
|
|
30
|
+
nodmix plugins install clawhub:@nodmix/diagnostics-prometheus
|
|
31
|
+
```
|
|
32
|
+
</Step>
|
|
33
|
+
<Step title="Enable the plugin">
|
|
34
|
+
<Tabs>
|
|
35
|
+
<Tab title="Config">
|
|
36
|
+
```json5
|
|
37
|
+
{
|
|
38
|
+
plugins: {
|
|
39
|
+
allow: ["diagnostics-prometheus"],
|
|
40
|
+
entries: {
|
|
41
|
+
"diagnostics-prometheus": { enabled: true },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
diagnostics: {
|
|
45
|
+
enabled: true,
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
</Tab>
|
|
50
|
+
<Tab title="CLI">
|
|
51
|
+
```bash
|
|
52
|
+
nodmix plugins enable diagnostics-prometheus
|
|
53
|
+
```
|
|
54
|
+
</Tab>
|
|
55
|
+
</Tabs>
|
|
56
|
+
</Step>
|
|
57
|
+
<Step title="Restart the Gateway">
|
|
58
|
+
The HTTP route is registered at plugin startup, so reload after enabling.
|
|
59
|
+
</Step>
|
|
60
|
+
<Step title="Scrape the protected route">
|
|
61
|
+
Send the same gateway auth your operator clients use:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
curl -H "Authorization: Bearer $NODMIX_GATEWAY_TOKEN" \
|
|
65
|
+
http://127.0.0.1:18789/api/diagnostics/prometheus
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
</Step>
|
|
69
|
+
<Step title="Wire Prometheus">
|
|
70
|
+
```yaml
|
|
71
|
+
# prometheus.yml
|
|
72
|
+
scrape_configs:
|
|
73
|
+
- job_name: nodmix
|
|
74
|
+
scrape_interval: 30s
|
|
75
|
+
metrics_path: /api/diagnostics/prometheus
|
|
76
|
+
authorization:
|
|
77
|
+
credentials_file: /etc/prometheus/nodmix-gateway-token
|
|
78
|
+
static_configs:
|
|
79
|
+
- targets: ["nodmix-gateway:18789"]
|
|
80
|
+
```
|
|
81
|
+
</Step>
|
|
82
|
+
</Steps>
|
|
83
|
+
|
|
84
|
+
<Note>
|
|
85
|
+
`diagnostics.enabled: true` is required. Without it, the plugin still registers the HTTP route but no diagnostic events flow into the exporter, so the response is empty.
|
|
86
|
+
</Note>
|
|
87
|
+
|
|
88
|
+
## Metrics exported
|
|
89
|
+
|
|
90
|
+
| Metric | Type | Labels |
|
|
91
|
+
| --------------------------------------------- | --------- | ----------------------------------------------------------------------------------------- |
|
|
92
|
+
| `nodmix_run_completed_total` | counter | `channel`, `model`, `outcome`, `provider`, `trigger` |
|
|
93
|
+
| `nodmix_run_duration_seconds` | histogram | `channel`, `model`, `outcome`, `provider`, `trigger` |
|
|
94
|
+
| `nodmix_model_call_total` | counter | `api`, `error_category`, `model`, `outcome`, `provider`, `transport` |
|
|
95
|
+
| `nodmix_model_call_duration_seconds` | histogram | `api`, `error_category`, `model`, `outcome`, `provider`, `transport` |
|
|
96
|
+
| `nodmix_model_tokens_total` | counter | `agent`, `channel`, `model`, `provider`, `token_type` |
|
|
97
|
+
| `nodmix_gen_ai_client_token_usage` | histogram | `model`, `provider`, `token_type` |
|
|
98
|
+
| `nodmix_model_cost_usd_total` | counter | `agent`, `channel`, `model`, `provider` |
|
|
99
|
+
| `nodmix_tool_execution_total` | counter | `error_category`, `outcome`, `params_kind`, `tool` |
|
|
100
|
+
| `nodmix_tool_execution_duration_seconds` | histogram | `error_category`, `outcome`, `params_kind`, `tool` |
|
|
101
|
+
| `nodmix_harness_run_total` | counter | `channel`, `error_category`, `harness`, `model`, `outcome`, `phase`, `plugin`, `provider` |
|
|
102
|
+
| `nodmix_harness_run_duration_seconds` | histogram | `channel`, `error_category`, `harness`, `model`, `outcome`, `phase`, `plugin`, `provider` |
|
|
103
|
+
| `nodmix_message_received_total` | counter | `channel`, `source` |
|
|
104
|
+
| `nodmix_message_dispatch_started_total` | counter | `channel`, `source` |
|
|
105
|
+
| `nodmix_message_dispatch_completed_total` | counter | `channel`, `outcome`, `reason`, `source` |
|
|
106
|
+
| `nodmix_message_dispatch_duration_seconds` | histogram | `channel`, `outcome`, `reason`, `source` |
|
|
107
|
+
| `nodmix_message_processed_total` | counter | `channel`, `outcome`, `reason` |
|
|
108
|
+
| `nodmix_message_processed_duration_seconds` | histogram | `channel`, `outcome`, `reason` |
|
|
109
|
+
| `nodmix_message_delivery_started_total` | counter | `channel`, `delivery_kind` |
|
|
110
|
+
| `nodmix_message_delivery_total` | counter | `channel`, `delivery_kind`, `error_category`, `outcome` |
|
|
111
|
+
| `nodmix_message_delivery_duration_seconds` | histogram | `channel`, `delivery_kind`, `error_category`, `outcome` |
|
|
112
|
+
| `nodmix_talk_event_total` | counter | `brain`, `event_type`, `mode`, `provider`, `transport` |
|
|
113
|
+
| `nodmix_talk_event_duration_seconds` | histogram | `brain`, `event_type`, `mode`, `provider`, `transport` |
|
|
114
|
+
| `nodmix_talk_audio_bytes` | histogram | `brain`, `event_type`, `mode`, `provider`, `transport` |
|
|
115
|
+
| `nodmix_queue_lane_size` | gauge | `lane` |
|
|
116
|
+
| `nodmix_queue_lane_wait_seconds` | histogram | `lane` |
|
|
117
|
+
| `nodmix_session_state_total` | counter | `reason`, `state` |
|
|
118
|
+
| `nodmix_session_queue_depth` | gauge | `state` |
|
|
119
|
+
| `nodmix_session_turn_created_total` | counter | `agent`, `channel`, `trigger` |
|
|
120
|
+
| `nodmix_session_recovery_total` | counter | `action`, `active_work_kind`, `state`, `status` |
|
|
121
|
+
| `nodmix_session_recovery_age_seconds` | histogram | `action`, `active_work_kind`, `state`, `status` |
|
|
122
|
+
| `nodmix_memory_bytes` | gauge | `kind` |
|
|
123
|
+
| `nodmix_memory_rss_bytes` | histogram | none |
|
|
124
|
+
| `nodmix_memory_pressure_total` | counter | `level`, `reason` |
|
|
125
|
+
| `nodmix_telemetry_exporter_total` | counter | `exporter`, `reason`, `signal`, `status` |
|
|
126
|
+
| `nodmix_prometheus_series_dropped_total` | counter | none |
|
|
127
|
+
|
|
128
|
+
## Label policy
|
|
129
|
+
|
|
130
|
+
<AccordionGroup>
|
|
131
|
+
<Accordion title="Bounded, low-cardinality labels">
|
|
132
|
+
Prometheus labels stay bounded and low-cardinality. The exporter does not emit raw diagnostic identifiers such as `runId`, `sessionKey`, `sessionId`, `callId`, `toolCallId`, message IDs, chat IDs, or provider request IDs.
|
|
133
|
+
|
|
134
|
+
Label values are redacted and must match Nodmix's low-cardinality character policy. Values that fail the policy are replaced with `unknown`, `other`, or `none`, depending on the metric.
|
|
135
|
+
|
|
136
|
+
</Accordion>
|
|
137
|
+
<Accordion title="Series cap and overflow accounting">
|
|
138
|
+
The exporter caps retained time series in memory at **2048** series across counters, gauges, and histograms combined. New series beyond that cap are dropped, and `nodmix_prometheus_series_dropped_total` increments by one each time.
|
|
139
|
+
|
|
140
|
+
Watch this counter as a hard signal that an attribute upstream is leaking high-cardinality values. The exporter never lifts the cap automatically; if it climbs, fix the source rather than disabling the cap.
|
|
141
|
+
|
|
142
|
+
</Accordion>
|
|
143
|
+
<Accordion title="What never appears in Prometheus output">
|
|
144
|
+
- prompt text, response text, tool inputs, tool outputs, system prompts
|
|
145
|
+
- Talk transcripts, audio payloads, call ids, room ids, handoff tokens, turn ids, and raw session ids
|
|
146
|
+
- raw provider request IDs (only bounded hashes, where applicable, on spans — never on metrics)
|
|
147
|
+
- session keys and session IDs
|
|
148
|
+
- hostnames, file paths, secret values
|
|
149
|
+
|
|
150
|
+
</Accordion>
|
|
151
|
+
</AccordionGroup>
|
|
152
|
+
|
|
153
|
+
## PromQL recipes
|
|
154
|
+
|
|
155
|
+
```promql
|
|
156
|
+
# Tokens per minute, split by provider
|
|
157
|
+
sum by (provider) (rate(nodmix_model_tokens_total[1m]))
|
|
158
|
+
|
|
159
|
+
# Spend (USD) over the last hour, by model
|
|
160
|
+
sum by (model) (increase(nodmix_model_cost_usd_total[1h]))
|
|
161
|
+
|
|
162
|
+
# 95th percentile model run duration
|
|
163
|
+
histogram_quantile(
|
|
164
|
+
0.95,
|
|
165
|
+
sum by (le, provider, model)
|
|
166
|
+
(rate(nodmix_run_duration_seconds_bucket[5m]))
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
# Queue wait time SLO (95p under 2s)
|
|
170
|
+
histogram_quantile(
|
|
171
|
+
0.95,
|
|
172
|
+
sum by (le, lane) (rate(nodmix_queue_lane_wait_seconds_bucket[5m]))
|
|
173
|
+
) < 2
|
|
174
|
+
|
|
175
|
+
# Dropped Prometheus series (cardinality alarm)
|
|
176
|
+
increase(nodmix_prometheus_series_dropped_total[15m]) > 0
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
<Tip>
|
|
180
|
+
Prefer `gen_ai_client_token_usage` for cross-provider dashboards: it follows the OpenTelemetry GenAI semantic conventions and is consistent with metrics from non-Nodmix GenAI services.
|
|
181
|
+
</Tip>
|
|
182
|
+
|
|
183
|
+
## Choosing between Prometheus and OpenTelemetry export
|
|
184
|
+
|
|
185
|
+
Nodmix supports both surfaces independently. You can run either, both, or neither.
|
|
186
|
+
|
|
187
|
+
<Tabs>
|
|
188
|
+
<Tab title="diagnostics-prometheus">
|
|
189
|
+
- **Pull** model: Prometheus scrapes `/api/diagnostics/prometheus`.
|
|
190
|
+
- No external collector required.
|
|
191
|
+
- Authenticated through normal Gateway auth.
|
|
192
|
+
- Surface is metrics only (no traces or logs).
|
|
193
|
+
- Best for stacks already standardized on Prometheus + Grafana.
|
|
194
|
+
|
|
195
|
+
</Tab>
|
|
196
|
+
<Tab title="diagnostics-otel">
|
|
197
|
+
- **Push** model: Nodmix sends OTLP/HTTP to a collector or OTLP-compatible backend.
|
|
198
|
+
- Surface includes metrics, traces, and logs.
|
|
199
|
+
- Bridges to Prometheus through an OpenTelemetry Collector (`prometheus` or `prometheusremotewrite` exporter) when you need both.
|
|
200
|
+
- See [OpenTelemetry export](/gateway/opentelemetry) for the full catalog.
|
|
201
|
+
|
|
202
|
+
</Tab>
|
|
203
|
+
</Tabs>
|
|
204
|
+
|
|
205
|
+
## Troubleshooting
|
|
206
|
+
|
|
207
|
+
<AccordionGroup>
|
|
208
|
+
<Accordion title="Empty response body">
|
|
209
|
+
- Check `diagnostics.enabled: true` in config.
|
|
210
|
+
- Confirm the plugin is enabled and loaded with `nodmix plugins list --enabled`.
|
|
211
|
+
- Generate some traffic; counters and histograms only emit lines after at least one event.
|
|
212
|
+
|
|
213
|
+
</Accordion>
|
|
214
|
+
<Accordion title="401 / unauthorized">
|
|
215
|
+
The endpoint requires the Gateway operator scope (`auth: "gateway"` with `gatewayRuntimeScopeSurface: "trusted-operator"`). Use the same token or password Prometheus uses for any other Gateway operator route. There is no public unauthenticated mode.
|
|
216
|
+
</Accordion>
|
|
217
|
+
<Accordion title="`nodmix_prometheus_series_dropped_total` is climbing">
|
|
218
|
+
A new attribute is exceeding the **2048**-series cap. Inspect recent metrics for an unexpectedly high-cardinality label and fix it at the source. The exporter intentionally drops new series instead of silently rewriting labels.
|
|
219
|
+
</Accordion>
|
|
220
|
+
<Accordion title="Prometheus shows stale series after a restart">
|
|
221
|
+
The plugin keeps state in memory only. After a Gateway restart, counters reset to zero and gauges restart at their next reported value. Use PromQL `rate()` and `increase()` to handle resets cleanly.
|
|
222
|
+
</Accordion>
|
|
223
|
+
</AccordionGroup>
|
|
224
|
+
|
|
225
|
+
## Related
|
|
226
|
+
|
|
227
|
+
- [Diagnostics export](/gateway/diagnostics) — local diagnostics zip for support bundles
|
|
228
|
+
- [Health and readiness](/gateway/health) — `/healthz` and `/readyz` probes
|
|
229
|
+
- [Logging](/logging) — file-based logging
|
|
230
|
+
- [OpenTelemetry export](/gateway/opentelemetry) — OTLP push for traces, metrics, and logs
|