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,276 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Configure migrated native Codex plugins for Codex-mode Nodmix agents"
|
|
3
|
+
title: "Native Codex plugins"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want Codex-mode Nodmix agents to use native Codex plugins
|
|
6
|
+
- You are migrating source-installed openai-curated Codex plugins
|
|
7
|
+
- You are troubleshooting codexPlugins, app inventory, destructive actions, or plugin app diagnostics
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Native Codex plugin support lets a Codex-mode Nodmix agent use Codex
|
|
11
|
+
app-server's own app and plugin capabilities inside the same Codex thread that
|
|
12
|
+
handles the Nodmix turn.
|
|
13
|
+
|
|
14
|
+
Nodmix does not translate Codex plugins into synthetic `codex_plugin_*`
|
|
15
|
+
Nodmix dynamic tools. Plugin calls stay in the native Codex transcript, and
|
|
16
|
+
Codex app-server owns the app-backed MCP execution.
|
|
17
|
+
|
|
18
|
+
Use this page after the base [Codex harness](/plugins/codex-harness) is working.
|
|
19
|
+
|
|
20
|
+
## Requirements
|
|
21
|
+
|
|
22
|
+
- The selected Nodmix agent runtime must be the native Codex harness.
|
|
23
|
+
- `plugins.entries.codex.enabled` must be true.
|
|
24
|
+
- `plugins.entries.codex.config.codexPlugins.enabled` must be true.
|
|
25
|
+
- V1 supports only `openai-curated` plugins that migration observed as
|
|
26
|
+
source-installed in the source Codex home.
|
|
27
|
+
- The target Codex app-server must be able to see the expected marketplace,
|
|
28
|
+
plugin, and app inventory.
|
|
29
|
+
|
|
30
|
+
`codexPlugins` has no effect on PI runs, normal OpenAI provider runs, ACP
|
|
31
|
+
conversation bindings, or other harnesses because those paths do not create
|
|
32
|
+
Codex app-server threads with native `apps` config.
|
|
33
|
+
|
|
34
|
+
## Quickstart
|
|
35
|
+
|
|
36
|
+
Preview migration from the source Codex home:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
nodmix migrate codex --dry-run
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Use strict source app verification when you want migration to check source app
|
|
43
|
+
accessibility before planning native plugin activation:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
nodmix migrate codex --dry-run --verify-plugin-apps
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Apply the migration when the plan looks right:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
nodmix migrate apply codex --yes
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Migration writes explicit `codexPlugins` entries for eligible plugins and calls
|
|
56
|
+
Codex app-server `plugin/install` for selected plugins. A typical migrated
|
|
57
|
+
config looks like this:
|
|
58
|
+
|
|
59
|
+
```json5
|
|
60
|
+
{
|
|
61
|
+
plugins: {
|
|
62
|
+
entries: {
|
|
63
|
+
codex: {
|
|
64
|
+
enabled: true,
|
|
65
|
+
config: {
|
|
66
|
+
codexPlugins: {
|
|
67
|
+
enabled: true,
|
|
68
|
+
allow_destructive_actions: true,
|
|
69
|
+
plugins: {
|
|
70
|
+
"google-calendar": {
|
|
71
|
+
enabled: true,
|
|
72
|
+
marketplaceName: "openai-curated",
|
|
73
|
+
pluginName: "google-calendar",
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
After changing `codexPlugins`, new Codex conversations pick up the updated app
|
|
85
|
+
set automatically. Use `/new` or `/reset` to refresh the current conversation.
|
|
86
|
+
A gateway restart is not required for plugin enable or disable changes.
|
|
87
|
+
|
|
88
|
+
## Manage plugins from chat
|
|
89
|
+
|
|
90
|
+
Use `/codex plugins` when you want to inspect or change configured native Codex
|
|
91
|
+
plugins from the same chat where you operate the Codex harness:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
/codex plugins
|
|
95
|
+
/codex plugins list
|
|
96
|
+
/codex plugins disable google-calendar
|
|
97
|
+
/codex plugins enable google-calendar
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
`/codex plugins` is an alias for `/codex plugins list`. The list output shows
|
|
101
|
+
the configured plugin keys, on/off state, Codex plugin name, and marketplace
|
|
102
|
+
from `plugins.entries.codex.config.codexPlugins.plugins`.
|
|
103
|
+
|
|
104
|
+
`enable` and `disable` write only to Nodmix config at
|
|
105
|
+
`~/.nodmix/nodmix.json`; they do not edit `~/.codex/config.toml` or install
|
|
106
|
+
new Codex plugins. Only the owner or a gateway client with the
|
|
107
|
+
`operator.admin` scope can change plugin state.
|
|
108
|
+
|
|
109
|
+
Enabling a configured plugin also turns on the global
|
|
110
|
+
`codexPlugins.enabled` switch. If the plugin was written disabled because
|
|
111
|
+
migration returned `auth_required`, reauthorize the app in Codex before enabling
|
|
112
|
+
it in Nodmix.
|
|
113
|
+
|
|
114
|
+
## How native plugin setup works
|
|
115
|
+
|
|
116
|
+
The integration has three separate states:
|
|
117
|
+
|
|
118
|
+
- Installed: Codex has the local plugin bundle in the target app-server runtime.
|
|
119
|
+
- Enabled: Nodmix config is willing to make the plugin available to Codex
|
|
120
|
+
harness turns.
|
|
121
|
+
- Accessible: Codex app-server confirms the plugin's app entries are available
|
|
122
|
+
for the active account and can be mapped to the migrated plugin identity.
|
|
123
|
+
|
|
124
|
+
Migration is the durable install/eligibility step. During planning, Nodmix
|
|
125
|
+
reads source Codex `plugin/read` details and checks that the source Codex
|
|
126
|
+
app-server account response is a ChatGPT subscription account. Non-ChatGPT or
|
|
127
|
+
missing account responses skip app-backed plugins with
|
|
128
|
+
`codex_subscription_required`. By default, migration does not call source
|
|
129
|
+
`app/list`; app-backed source plugins that pass the account gate are planned
|
|
130
|
+
without source app accessibility verification, and account lookup transport
|
|
131
|
+
failures skip with `codex_account_unavailable`. With `--verify-plugin-apps`,
|
|
132
|
+
migration takes a fresh source `app/list` snapshot and requires every owned app
|
|
133
|
+
to be present, enabled, and accessible before planning native activation. In
|
|
134
|
+
that mode, account lookup transport failures fall through to the source
|
|
135
|
+
app-inventory gate. Runtime app inventory is the target-session accessibility
|
|
136
|
+
check after migration. Codex harness session setup then computes a restrictive
|
|
137
|
+
thread app config for the enabled and accessible plugin apps.
|
|
138
|
+
|
|
139
|
+
Thread app config is computed when Nodmix establishes a Codex harness session
|
|
140
|
+
or replaces a stale Codex thread binding. It is not recomputed on every turn, so
|
|
141
|
+
`/codex plugins enable` and `/codex plugins disable` affect new Codex
|
|
142
|
+
conversations. Use `/new` or `/reset` when the current conversation should pick
|
|
143
|
+
up the updated app set.
|
|
144
|
+
|
|
145
|
+
## V1 support boundary
|
|
146
|
+
|
|
147
|
+
V1 is intentionally narrow:
|
|
148
|
+
|
|
149
|
+
- Only `openai-curated` plugins that were already installed in the source Codex
|
|
150
|
+
app-server inventory are migration-eligible.
|
|
151
|
+
- App-backed source plugins must pass the migration-time subscription gate.
|
|
152
|
+
`--verify-plugin-apps` adds the source app-inventory gate. Subscription-gated
|
|
153
|
+
accounts plus, in verification mode, inaccessible, disabled, missing source
|
|
154
|
+
apps or source app-inventory refresh failures are reported as skipped manual
|
|
155
|
+
items instead of enabled config entries. Unreadable plugin details are skipped
|
|
156
|
+
before the source app-inventory gate.
|
|
157
|
+
- Migration writes explicit plugin identities with `marketplaceName` and
|
|
158
|
+
`pluginName`; it does not write local `marketplacePath` cache paths.
|
|
159
|
+
- `codexPlugins.enabled` is the global enablement switch.
|
|
160
|
+
- There is no `plugins["*"]` wildcard and no config key that grants arbitrary
|
|
161
|
+
install authority.
|
|
162
|
+
- Unsupported marketplaces, cached plugin bundles, hooks, and Codex config files
|
|
163
|
+
are preserved in the migration report for manual review.
|
|
164
|
+
|
|
165
|
+
## App inventory and ownership
|
|
166
|
+
|
|
167
|
+
Nodmix reads Codex app inventory through app-server `app/list`, caches it for
|
|
168
|
+
one hour, and refreshes stale or missing entries asynchronously. The cache is
|
|
169
|
+
in memory only; restarting the CLI or gateway drops it, and Nodmix rebuilds it
|
|
170
|
+
from the next `app/list` read.
|
|
171
|
+
|
|
172
|
+
Migration and runtime use separate cache keys:
|
|
173
|
+
|
|
174
|
+
- Source migration verification uses the source Codex home and source app-server
|
|
175
|
+
start options. This runs only when `--verify-plugin-apps` is set, and it
|
|
176
|
+
forces a fresh source `app/list` traversal for that planning run.
|
|
177
|
+
- Target runtime setup uses the target agent's Codex app-server identity when it
|
|
178
|
+
builds the Codex thread app config. Plugin activation invalidates that target
|
|
179
|
+
cache key and then force-refreshes it after `plugin/install`.
|
|
180
|
+
|
|
181
|
+
A plugin app is exposed only when Nodmix can map it back to the migrated
|
|
182
|
+
plugin through stable ownership:
|
|
183
|
+
|
|
184
|
+
- exact app id from plugin detail
|
|
185
|
+
- known MCP server name
|
|
186
|
+
- unique stable metadata
|
|
187
|
+
|
|
188
|
+
Display-name-only or ambiguous ownership is excluded until the next inventory
|
|
189
|
+
refresh proves ownership.
|
|
190
|
+
|
|
191
|
+
## Thread app config
|
|
192
|
+
|
|
193
|
+
Nodmix injects a restrictive `config.apps` patch for the Codex thread:
|
|
194
|
+
`_default` is disabled and only apps owned by enabled migrated plugins are
|
|
195
|
+
enabled.
|
|
196
|
+
|
|
197
|
+
Nodmix sets app-level `destructive_enabled` from the effective global or
|
|
198
|
+
per-plugin `allow_destructive_actions` policy and lets Codex enforce
|
|
199
|
+
destructive tool metadata from its native app tool annotations. The `_default`
|
|
200
|
+
app config is disabled with `open_world_enabled: false`. Enabled plugin apps
|
|
201
|
+
are emitted with `open_world_enabled: true`; Nodmix does not expose a separate
|
|
202
|
+
plugin open-world policy knob and does not maintain per-plugin destructive
|
|
203
|
+
tool-name deny lists.
|
|
204
|
+
|
|
205
|
+
Tool approval mode is automatic by default for plugin apps so non-destructive
|
|
206
|
+
read tools can run without a same-thread approval UI. Destructive tools remain
|
|
207
|
+
controlled by each app's `destructive_enabled` policy.
|
|
208
|
+
|
|
209
|
+
## Destructive action policy
|
|
210
|
+
|
|
211
|
+
Destructive plugin elicitations are allowed by default for migrated Codex
|
|
212
|
+
plugins, while unsafe schemas and ambiguous ownership still fail closed:
|
|
213
|
+
|
|
214
|
+
- Global `allow_destructive_actions` defaults to `true`.
|
|
215
|
+
- Per-plugin `allow_destructive_actions` overrides the global policy for that
|
|
216
|
+
plugin.
|
|
217
|
+
- When policy is `false`, Nodmix returns a deterministic decline.
|
|
218
|
+
- When policy is `true`, Nodmix auto-accepts only safe schemas it can map to
|
|
219
|
+
an approval response, such as a boolean approve field.
|
|
220
|
+
- Missing plugin identity, ambiguous ownership, a missing turn id, a wrong turn
|
|
221
|
+
id, or an unsafe elicitation schema declines instead of prompting.
|
|
222
|
+
|
|
223
|
+
## Troubleshooting
|
|
224
|
+
|
|
225
|
+
**`auth_required`:** migration installed the plugin, but one of its apps still
|
|
226
|
+
needs authentication. The explicit plugin entry is written disabled until you
|
|
227
|
+
reauthorize and enable it.
|
|
228
|
+
|
|
229
|
+
**`app_inaccessible`, `app_disabled`, or `app_missing`:**
|
|
230
|
+
migration did not install the plugin because the source Codex app inventory did
|
|
231
|
+
not show all owned apps as present, enabled, and accessible while
|
|
232
|
+
`--verify-plugin-apps` was set. Reauthorize or enable the app in Codex, then
|
|
233
|
+
rerun migration with `--verify-plugin-apps`.
|
|
234
|
+
|
|
235
|
+
**`app_inventory_unavailable`:** migration did not install the plugin because
|
|
236
|
+
strict source app verification was requested and source Codex app inventory
|
|
237
|
+
refresh failed. Fix source Codex app-server access or retry without
|
|
238
|
+
`--verify-plugin-apps` if you accept the faster account-gated plan.
|
|
239
|
+
|
|
240
|
+
**`codex_subscription_required`:** migration did not install the app-backed
|
|
241
|
+
plugin because the source Codex app-server account was not logged in with a
|
|
242
|
+
ChatGPT subscription account. Log in to the Codex app with subscription auth,
|
|
243
|
+
then rerun migration.
|
|
244
|
+
|
|
245
|
+
**`codex_account_unavailable`:** migration did not install the app-backed plugin
|
|
246
|
+
because the source Codex app-server account could not be read. Fix source Codex
|
|
247
|
+
app-server auth or rerun with `--verify-plugin-apps` if you want source app
|
|
248
|
+
inventory to decide eligibility when account lookup fails.
|
|
249
|
+
|
|
250
|
+
**`marketplace_missing` or `plugin_missing`:** the target Codex app-server
|
|
251
|
+
cannot see the expected `openai-curated` marketplace or plugin. Rerun migration
|
|
252
|
+
against the target runtime or inspect Codex app-server plugin status.
|
|
253
|
+
|
|
254
|
+
**`app_inventory_missing` or `app_inventory_stale`:** app readiness came from an
|
|
255
|
+
empty or stale cache. Nodmix schedules an async refresh and excludes plugin
|
|
256
|
+
apps until ownership and readiness are known.
|
|
257
|
+
|
|
258
|
+
**`app_ownership_ambiguous`:** app inventory only matched by display name, so
|
|
259
|
+
the app is not exposed to the Codex thread.
|
|
260
|
+
|
|
261
|
+
**Config changed but the agent cannot see the plugin:** use `/codex plugins
|
|
262
|
+
list` to confirm the configured state, then use `/new` or `/reset`. Existing
|
|
263
|
+
Codex thread bindings keep the app config they started with until Nodmix
|
|
264
|
+
establishes a new harness session or replaces a stale binding.
|
|
265
|
+
|
|
266
|
+
**Destructive action is declined:** check the global and per-plugin
|
|
267
|
+
`allow_destructive_actions` values. Even when policy is true, unsafe elicitation
|
|
268
|
+
schemas and ambiguous plugin identity still fail closed.
|
|
269
|
+
|
|
270
|
+
## Related
|
|
271
|
+
|
|
272
|
+
- [Codex harness](/plugins/codex-harness)
|
|
273
|
+
- [Codex harness reference](/plugins/codex-harness-reference)
|
|
274
|
+
- [Codex harness runtime](/plugins/codex-harness-runtime)
|
|
275
|
+
- [Configuration reference](/gateway/configuration-reference#codex-harness-plugin-config)
|
|
276
|
+
- [Migrate CLI](/cli/migrate)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Find and publish community-maintained Nodmix plugins"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to find third-party Nodmix plugins
|
|
5
|
+
- You want to publish or list your own plugin on ClawHub
|
|
6
|
+
title: "Community plugins"
|
|
7
|
+
doc-schema-version: 1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Community plugins are third-party packages that extend Nodmix with channels,
|
|
11
|
+
tools, providers, hooks, or other capabilities. Use [ClawHub](/clawhub) as the
|
|
12
|
+
primary discovery surface for public community plugins.
|
|
13
|
+
|
|
14
|
+
## Find plugins
|
|
15
|
+
|
|
16
|
+
Search ClawHub from the CLI:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
nodmix plugins search "calendar"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Install a ClawHub plugin with an explicit source prefix:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
nodmix plugins install clawhub:<package-name>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
npm remains a supported direct-install path during the launch cutover:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
nodmix plugins install npm:<package-name>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Use [Manage plugins](/plugins/manage-plugins) for common install, update,
|
|
35
|
+
inspect, and uninstall examples. Use [`nodmix plugins`](/cli/plugins) for the
|
|
36
|
+
full command reference and source-selection rules.
|
|
37
|
+
|
|
38
|
+
## Publish plugins
|
|
39
|
+
|
|
40
|
+
Publish public community plugins on ClawHub when you want Nodmix users to
|
|
41
|
+
discover and install them. ClawHub owns the live package listing, release
|
|
42
|
+
history, scan status, and install hints; the docs do not maintain a static
|
|
43
|
+
third-party plugin catalog.
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
clawhub package publish your-org/your-plugin --dry-run
|
|
47
|
+
clawhub package publish your-org/your-plugin
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Before publishing, make sure the plugin has package metadata, a plugin manifest,
|
|
51
|
+
setup docs, and a clear maintenance owner. ClawHub validates owner scope,
|
|
52
|
+
package name, version, file limits, and source metadata before it creates a
|
|
53
|
+
release, then keeps new releases hidden from normal install and download
|
|
54
|
+
surfaces until review and verification finish.
|
|
55
|
+
|
|
56
|
+
Use this checklist before you publish:
|
|
57
|
+
|
|
58
|
+
| Requirement | Why |
|
|
59
|
+
| -------------------- | --------------------------------------------------- |
|
|
60
|
+
| Published on ClawHub | Users need `nodmix plugins install` hints to work |
|
|
61
|
+
| Public GitHub repo | Source review, issue tracking, transparency |
|
|
62
|
+
| Setup and usage docs | Users need to know how to configure it |
|
|
63
|
+
| Active maintenance | Recent updates or responsive issue handling |
|
|
64
|
+
|
|
65
|
+
Use these pages for the full publishing contract:
|
|
66
|
+
|
|
67
|
+
- [ClawHub publishing](/clawhub/publishing) explains owners, scopes, releases,
|
|
68
|
+
review, package validation, and package transfer.
|
|
69
|
+
- [Building plugins](/plugins/building-plugins) shows the plugin package shape
|
|
70
|
+
and first publish workflow.
|
|
71
|
+
- [Plugin manifest](/plugins/manifest) defines native plugin manifest fields.
|
|
72
|
+
|
|
73
|
+
## Related
|
|
74
|
+
|
|
75
|
+
- [Plugins](/tools/plugin) - install, configure, restart, and troubleshoot
|
|
76
|
+
- [Manage plugins](/plugins/manage-plugins) - command examples
|
|
77
|
+
- [ClawHub publishing](/clawhub/publishing) - publish and release rules
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Plugin compatibility contracts, deprecation metadata, and migration expectations"
|
|
3
|
+
title: "Plugin compatibility"
|
|
4
|
+
read_when:
|
|
5
|
+
- You maintain an Nodmix plugin
|
|
6
|
+
- You see a plugin compatibility warning
|
|
7
|
+
- You are planning a plugin SDK or manifest migration
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Nodmix keeps older plugin contracts wired through named compatibility
|
|
11
|
+
adapters before removing them. This protects existing bundled and external
|
|
12
|
+
plugins while the SDK, manifest, setup, config, and agent runtime contracts
|
|
13
|
+
evolve.
|
|
14
|
+
|
|
15
|
+
## Compatibility registry
|
|
16
|
+
|
|
17
|
+
Plugin compatibility contracts are tracked in the core registry at
|
|
18
|
+
`src/plugins/compat/registry.ts`.
|
|
19
|
+
|
|
20
|
+
Each record has:
|
|
21
|
+
|
|
22
|
+
- a stable compatibility code
|
|
23
|
+
- status: `active`, `deprecated`, `removal-pending`, or `removed`
|
|
24
|
+
- owner: SDK, config, setup, channel, provider, plugin execution, agent runtime,
|
|
25
|
+
or core
|
|
26
|
+
- introduction and deprecation dates when applicable
|
|
27
|
+
- replacement guidance
|
|
28
|
+
- docs, diagnostics, and tests that cover the old and new behavior
|
|
29
|
+
|
|
30
|
+
The registry is the source for maintainer planning and future plugin inspector
|
|
31
|
+
checks. If a plugin-facing behavior changes, add or update the compatibility
|
|
32
|
+
record in the same change that adds the adapter.
|
|
33
|
+
|
|
34
|
+
Doctor repair and migration compatibility is tracked separately at
|
|
35
|
+
`src/commands/doctor/shared/deprecation-compat.ts`. Those records cover old
|
|
36
|
+
config shapes, install-ledger layouts, and repair shims that may need to stay
|
|
37
|
+
available after the runtime compatibility path is removed.
|
|
38
|
+
|
|
39
|
+
Release sweeps should check both registries. Do not delete a doctor migration
|
|
40
|
+
just because the matching runtime or config compatibility record expired; first
|
|
41
|
+
verify there is no supported upgrade path that still needs the repair. Also
|
|
42
|
+
revalidate each replacement annotation during release planning because plugin
|
|
43
|
+
ownership and config footprint can change as providers and channels move out of
|
|
44
|
+
core.
|
|
45
|
+
|
|
46
|
+
## Plugin inspector package
|
|
47
|
+
|
|
48
|
+
The plugin inspector should live outside the core Nodmix repo as a separate
|
|
49
|
+
package/repository backed by the versioned compatibility and manifest
|
|
50
|
+
contracts.
|
|
51
|
+
|
|
52
|
+
The day-one CLI should be:
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
nodmix-plugin-inspector ./my-plugin
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
It should emit:
|
|
59
|
+
|
|
60
|
+
- manifest/schema validation
|
|
61
|
+
- the contract compatibility version being checked
|
|
62
|
+
- install/source metadata checks
|
|
63
|
+
- cold-path import checks
|
|
64
|
+
- deprecation and compatibility warnings
|
|
65
|
+
|
|
66
|
+
Use `--json` for stable machine-readable output in CI annotations. Nodmix
|
|
67
|
+
core should expose contracts and fixtures the inspector can consume, but should
|
|
68
|
+
not publish the inspector binary from the main `nodmix` package.
|
|
69
|
+
|
|
70
|
+
### Maintainer acceptance lane
|
|
71
|
+
|
|
72
|
+
Use Crabbox-backed Blacksmith Testbox for the installable-package acceptance
|
|
73
|
+
lane when validating the external inspector against Nodmix plugin packages.
|
|
74
|
+
Run it from a clean Nodmix checkout after the package is built:
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "pnpm install && pnpm build && npm exec --yes @nodmix/plugin-inspector@0.1.0 -- ./extensions/telegram --json"
|
|
78
|
+
pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "npm exec --yes @nodmix/plugin-inspector@0.1.0 -- ./extensions/discord --json"
|
|
79
|
+
pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- "npm exec --yes @nodmix/plugin-inspector@0.1.0 -- <clawhub-plugin-dir> --json"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Keep this lane opt-in for maintainers because it installs an external npm
|
|
83
|
+
package and may inspect plugin packages cloned outside the repo. The local repo
|
|
84
|
+
guards cover the SDK export map, compatibility registry metadata, deprecated
|
|
85
|
+
SDK-import burn-down, and bundled extension import boundaries; Testbox inspector
|
|
86
|
+
proof covers the package as external plugin authors consume it.
|
|
87
|
+
|
|
88
|
+
## Deprecation policy
|
|
89
|
+
|
|
90
|
+
Nodmix should not remove a documented plugin contract in the same release
|
|
91
|
+
that introduces its replacement.
|
|
92
|
+
|
|
93
|
+
The migration sequence is:
|
|
94
|
+
|
|
95
|
+
1. Add the new contract.
|
|
96
|
+
2. Keep the old behavior wired through a named compatibility adapter.
|
|
97
|
+
3. Emit diagnostics or warnings when plugin authors can act.
|
|
98
|
+
4. Document the replacement and timeline.
|
|
99
|
+
5. Test both old and new paths.
|
|
100
|
+
6. Wait through the announced migration window.
|
|
101
|
+
7. Remove only with explicit breaking-release approval.
|
|
102
|
+
|
|
103
|
+
Deprecated records must include a warning start date, replacement, docs link,
|
|
104
|
+
and final removal date no more than three months after the warning starts. Do
|
|
105
|
+
not add a deprecated compatibility path with an open-ended removal window unless
|
|
106
|
+
maintainers explicitly decide it is permanent compatibility and mark it `active`
|
|
107
|
+
instead.
|
|
108
|
+
|
|
109
|
+
## Current compatibility areas
|
|
110
|
+
|
|
111
|
+
Current compatibility records include:
|
|
112
|
+
|
|
113
|
+
- legacy broad SDK imports such as `nodmix/plugin-sdk/compat`
|
|
114
|
+
- legacy hook-only plugin shapes and `before_agent_start`
|
|
115
|
+
- legacy `api.on("deactivate", ...)` cleanup hook names while plugins migrate to
|
|
116
|
+
`gateway_stop`
|
|
117
|
+
- legacy `activate(api)` plugin entrypoints while plugins migrate to
|
|
118
|
+
`register(api)`
|
|
119
|
+
- legacy SDK aliases such as `nodmix/extension-api`,
|
|
120
|
+
`nodmix/plugin-sdk/channel-runtime`, `nodmix/plugin-sdk/command-auth`
|
|
121
|
+
status builders, `nodmix/plugin-sdk/test-utils` (replaced by focused
|
|
122
|
+
`nodmix/plugin-sdk/*` test subpaths), and the `ClawdbotConfig` /
|
|
123
|
+
`NodmixSchemaType` type aliases
|
|
124
|
+
- bundled plugin allowlist and enablement behavior
|
|
125
|
+
- legacy provider/channel env-var manifest metadata
|
|
126
|
+
- legacy provider plugin hooks and type aliases while providers move to
|
|
127
|
+
explicit catalog, auth, thinking, replay, and transport hooks
|
|
128
|
+
- legacy runtime aliases such as `api.runtime.taskFlow`,
|
|
129
|
+
`api.runtime.subagent.getSession`, `api.runtime.stt`, and deprecated
|
|
130
|
+
`api.runtime.config.loadConfig()` / `api.runtime.config.writeConfigFile(...)`
|
|
131
|
+
- legacy memory-plugin split registration while memory plugins move to
|
|
132
|
+
`registerMemoryCapability`
|
|
133
|
+
- legacy channel SDK helpers for native message schemas, mention gating,
|
|
134
|
+
inbound envelope formatting, and approval capability nesting
|
|
135
|
+
- legacy channel route key and comparable-target helper aliases while plugins
|
|
136
|
+
move to `nodmix/plugin-sdk/channel-route`
|
|
137
|
+
- activation hints that are being replaced by manifest contribution ownership
|
|
138
|
+
- `setup-api` runtime fallback while setup descriptors move to cold
|
|
139
|
+
`setup.requiresRuntime: false` metadata
|
|
140
|
+
- provider `discovery` hooks while provider catalog hooks move to
|
|
141
|
+
`catalog.run(...)`
|
|
142
|
+
- channel `showConfigured` / `showInSetup` metadata while channel packages move
|
|
143
|
+
to `nodmix.channel.exposure`
|
|
144
|
+
- legacy runtime-policy config keys while doctor migrates operators to
|
|
145
|
+
`agentRuntime`
|
|
146
|
+
- generated bundled channel config metadata fallback while registry-first
|
|
147
|
+
`channelConfigs` metadata lands
|
|
148
|
+
- persisted plugin registry disable and install-migration env flags while
|
|
149
|
+
repair flows migrate operators to `nodmix plugins registry --refresh` and
|
|
150
|
+
`nodmix doctor --fix`
|
|
151
|
+
- legacy plugin-owned web search, web fetch, and x_search config paths while
|
|
152
|
+
doctor migrates them to `plugins.entries.<plugin>.config`
|
|
153
|
+
- legacy `plugins.installs` authored config and bundled plugin load-path
|
|
154
|
+
aliases while install metadata moves into the state-managed plugin ledger
|
|
155
|
+
|
|
156
|
+
New plugin code should prefer the replacement listed in the registry and in the
|
|
157
|
+
specific migration guide. Existing plugins can keep using a compatibility path
|
|
158
|
+
until the docs, diagnostics, and release notes announce a removal window.
|
|
159
|
+
|
|
160
|
+
## Release notes
|
|
161
|
+
|
|
162
|
+
Release notes should include upcoming plugin deprecations with target dates and
|
|
163
|
+
links to migration docs. That warning needs to happen before a compatibility
|
|
164
|
+
path moves to `removal-pending` or `removed`.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How Nodmix installs plugin packages and resolves plugin dependencies"
|
|
3
|
+
read_when:
|
|
4
|
+
- You are debugging plugin package installs
|
|
5
|
+
- You are changing plugin startup, doctor, or package-manager install behavior
|
|
6
|
+
- You are maintaining packaged Nodmix installs or bundled plugin manifests
|
|
7
|
+
title: "Plugin dependency resolution"
|
|
8
|
+
sidebarTitle: "Dependencies"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Nodmix keeps plugin dependency work at install/update time. Runtime loading
|
|
12
|
+
does not run package managers, repair dependency trees, or mutate the Nodmix
|
|
13
|
+
package directory.
|
|
14
|
+
|
|
15
|
+
## Responsibility split
|
|
16
|
+
|
|
17
|
+
Plugin packages own their dependency graph:
|
|
18
|
+
|
|
19
|
+
- runtime dependencies live in the plugin package `dependencies` or
|
|
20
|
+
`optionalDependencies`
|
|
21
|
+
- SDK/core imports are peer or supplied Nodmix imports
|
|
22
|
+
- local development plugins bring their own already-installed dependencies
|
|
23
|
+
- npm and git plugins are installed into Nodmix-owned package roots
|
|
24
|
+
|
|
25
|
+
Nodmix owns only the plugin lifecycle:
|
|
26
|
+
|
|
27
|
+
- discover the plugin source
|
|
28
|
+
- install or update the package when explicitly requested
|
|
29
|
+
- record the install metadata
|
|
30
|
+
- load the plugin entrypoint
|
|
31
|
+
- fail with an actionable error when dependencies are missing
|
|
32
|
+
|
|
33
|
+
## Install roots
|
|
34
|
+
|
|
35
|
+
Nodmix uses stable per-source roots:
|
|
36
|
+
|
|
37
|
+
- npm packages install under `~/.nodmix/npm`
|
|
38
|
+
- git packages clone under `~/.nodmix/git`
|
|
39
|
+
- local/path/archive installs are copied or referenced without dependency repair
|
|
40
|
+
|
|
41
|
+
npm installs run in the npm root with:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
cd ~/.nodmix/npm
|
|
45
|
+
npm install --omit=dev --omit=peer --legacy-peer-deps --ignore-scripts --no-audit --no-fund
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`nodmix plugins install npm-pack:<path.tgz>` uses that same managed npm root
|
|
49
|
+
for a local npm-pack tarball. Nodmix reads the tarball's npm metadata, adds it
|
|
50
|
+
to the managed root as a copied `file:` dependency, runs the normal npm install,
|
|
51
|
+
and then verifies the installed lockfile metadata before trusting the plugin.
|
|
52
|
+
This is intended for package-acceptance and release-candidate proof where a
|
|
53
|
+
local pack artifact should behave like the registry artifact it simulates.
|
|
54
|
+
|
|
55
|
+
npm may hoist transitive dependencies to `~/.nodmix/npm/node_modules` beside
|
|
56
|
+
the plugin package. Nodmix scans the managed npm root before trusting the
|
|
57
|
+
install and uses npm to remove npm-managed packages during uninstall, so hoisted
|
|
58
|
+
runtime dependencies stay inside the managed cleanup boundary.
|
|
59
|
+
|
|
60
|
+
Plugins that import `nodmix/plugin-sdk/*` declare `nodmix` as a peer
|
|
61
|
+
dependency. Nodmix does not let npm install a separate registry copy of the
|
|
62
|
+
host package into the managed root, because stale host packages can affect npm
|
|
63
|
+
peer resolution during later plugin installs. Managed npm installs skip npm peer
|
|
64
|
+
resolution/materialization for the shared root and Nodmix reasserts
|
|
65
|
+
plugin-local `node_modules/nodmix` links for installed packages that declare
|
|
66
|
+
the host peer after install, update, or uninstall.
|
|
67
|
+
|
|
68
|
+
git installs clone or refresh the repository, then run:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm install --omit=dev --ignore-scripts --no-audit --no-fund
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
The installed plugin then loads from that package directory, so package-local
|
|
75
|
+
and parent `node_modules` resolution works the same way it does for a normal
|
|
76
|
+
Node package.
|
|
77
|
+
|
|
78
|
+
## Local plugins
|
|
79
|
+
|
|
80
|
+
Local plugins are treated as developer-controlled directories. Nodmix does not
|
|
81
|
+
run `npm install`, `pnpm install`, or dependency repair for them. If a local
|
|
82
|
+
plugin has dependencies, install them in that plugin before loading it.
|
|
83
|
+
|
|
84
|
+
Third-party TypeScript local plugins can use the emergency Jiti path. Packaged
|
|
85
|
+
JavaScript plugins and bundled internal plugins load through native
|
|
86
|
+
import/require instead of Jiti.
|
|
87
|
+
|
|
88
|
+
## Startup and reload
|
|
89
|
+
|
|
90
|
+
Gateway startup and config reload never install plugin dependencies. They read
|
|
91
|
+
the plugin install records, compute the entrypoint, and load it.
|
|
92
|
+
|
|
93
|
+
If a dependency is missing at runtime, the plugin fails to load and the error
|
|
94
|
+
should point the operator to an explicit fix:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
nodmix plugins update <id>
|
|
98
|
+
nodmix plugins install <source>
|
|
99
|
+
nodmix doctor --fix
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`doctor --fix` can clean legacy Nodmix-generated dependency state and recover
|
|
103
|
+
downloadable plugins that are missing from the local install records when config
|
|
104
|
+
references them. Doctor does not repair dependencies for an already-installed
|
|
105
|
+
local plugin.
|
|
106
|
+
|
|
107
|
+
## Bundled plugins
|
|
108
|
+
|
|
109
|
+
Lightweight and core-critical bundled plugins are shipped as part of Nodmix.
|
|
110
|
+
They should either have no heavy runtime dependency tree or be moved out to a
|
|
111
|
+
downloadable package on ClawHub/npm.
|
|
112
|
+
|
|
113
|
+
For the current generated list of plugins that ship in the core package, install
|
|
114
|
+
externally, or stay source-only, see [Plugin inventory](/plugins/plugin-inventory).
|
|
115
|
+
|
|
116
|
+
Bundled plugin manifests must not request dependency staging. Large or optional
|
|
117
|
+
plugin functionality should be packaged as a normal plugin and installed through
|
|
118
|
+
the same npm/git/ClawHub path as third-party plugins.
|
|
119
|
+
|
|
120
|
+
In source checkouts, Nodmix treats the repository as a pnpm monorepo. After
|
|
121
|
+
`pnpm install`, bundled plugins load from `extensions/<id>` so package-local
|
|
122
|
+
workspace dependencies are available and edits are picked up directly. Source
|
|
123
|
+
checkout development is pnpm-only; plain `npm install` at the repository root is
|
|
124
|
+
not a supported way to prepare bundled plugin dependencies.
|
|
125
|
+
|
|
126
|
+
| Install shape | Bundled plugin location | Dependency owner |
|
|
127
|
+
| -------------------------------- | ------------------------------------- | -------------------------------------------------------------------- |
|
|
128
|
+
| `npm install -g nodmix` | Built runtime tree inside the package | Nodmix package and explicit plugin install/update/doctor flows |
|
|
129
|
+
| Git checkout plus `pnpm install` | `extensions/<id>` workspace packages | The pnpm workspace, including each plugin package's own dependencies |
|
|
130
|
+
| `nodmix plugins install ...` | Managed npm/git/ClawHub plugin root | The plugin install/update flow |
|
|
131
|
+
|
|
132
|
+
## Legacy cleanup
|
|
133
|
+
|
|
134
|
+
Older Nodmix versions generated bundled-plugin dependency roots at startup or
|
|
135
|
+
during doctor repair. Current doctor cleanup removes those stale directories and
|
|
136
|
+
symlinks when `--fix` is used, including old `plugin-runtime-deps` roots, global
|
|
137
|
+
Node-prefix package symlinks that point at pruned `plugin-runtime-deps` targets,
|
|
138
|
+
`.nodmix-runtime-deps*` manifests, generated plugin `node_modules`, install
|
|
139
|
+
stage directories, and package-local pnpm stores. Packaged postinstall also
|
|
140
|
+
removes those global symlinks before pruning the legacy target roots so upgrades
|
|
141
|
+
do not leave dangling ESM package imports.
|
|
142
|
+
|
|
143
|
+
These paths are legacy debris only. New installs should not create them.
|