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,330 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Create your first Nodmix plugin in minutes"
|
|
3
|
+
title: "Building plugins"
|
|
4
|
+
sidebarTitle: "Getting Started"
|
|
5
|
+
doc-schema-version: 1
|
|
6
|
+
read_when:
|
|
7
|
+
- You want to create a new Nodmix plugin
|
|
8
|
+
- You need a quick-start for plugin development
|
|
9
|
+
- You are choosing between channel, provider, CLI backend, tool, or hook docs
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
Plugins extend Nodmix without changing core. A plugin can add a messaging
|
|
13
|
+
channel, model provider, local CLI backend, agent tool, hook, media provider,
|
|
14
|
+
or another plugin-owned capability.
|
|
15
|
+
|
|
16
|
+
You do not need to add an external plugin to the Nodmix repository. Publish
|
|
17
|
+
the package to [ClawHub](/clawhub) and users install it with:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
nodmix plugins install clawhub:<package-name>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Bare package specs still install from npm during the launch cutover. Use the
|
|
24
|
+
`clawhub:` prefix when you want ClawHub resolution.
|
|
25
|
+
|
|
26
|
+
## Requirements
|
|
27
|
+
|
|
28
|
+
- Use Node 22.19 or newer and a package manager such as `npm` or `pnpm`.
|
|
29
|
+
- Be familiar with TypeScript ESM modules.
|
|
30
|
+
- For in-repo bundled plugin work, clone the repository and run `pnpm install`.
|
|
31
|
+
Source-checkout plugin development is pnpm-only because Nodmix loads bundled
|
|
32
|
+
plugins from `extensions/*` workspace packages.
|
|
33
|
+
|
|
34
|
+
## Choose the plugin shape
|
|
35
|
+
|
|
36
|
+
<CardGroup cols={2}>
|
|
37
|
+
<Card title="Channel plugin" icon="messages-square" href="/plugins/sdk-channel-plugins">
|
|
38
|
+
Connect Nodmix to a messaging platform.
|
|
39
|
+
</Card>
|
|
40
|
+
<Card title="Provider plugin" icon="cpu" href="/plugins/sdk-provider-plugins">
|
|
41
|
+
Add a model, media, search, fetch, speech, or realtime provider.
|
|
42
|
+
</Card>
|
|
43
|
+
<Card title="CLI backend plugin" icon="terminal" href="/plugins/cli-backend-plugins">
|
|
44
|
+
Run a local AI CLI through Nodmix model fallback.
|
|
45
|
+
</Card>
|
|
46
|
+
<Card title="Tool plugin" icon="wrench" href="/plugins/tool-plugins">
|
|
47
|
+
Register agent tools.
|
|
48
|
+
</Card>
|
|
49
|
+
</CardGroup>
|
|
50
|
+
|
|
51
|
+
## Quickstart
|
|
52
|
+
|
|
53
|
+
Build a minimal tool plugin by registering one required agent tool. This is the
|
|
54
|
+
shortest useful plugin shape and shows the package, manifest, entry point, and
|
|
55
|
+
local proof.
|
|
56
|
+
|
|
57
|
+
<Steps>
|
|
58
|
+
<Step title="Create package metadata">
|
|
59
|
+
<CodeGroup>
|
|
60
|
+
|
|
61
|
+
```json package.json
|
|
62
|
+
{
|
|
63
|
+
"name": "@myorg/nodmix-my-plugin",
|
|
64
|
+
"version": "1.0.0",
|
|
65
|
+
"type": "module",
|
|
66
|
+
"nodmix": {
|
|
67
|
+
"extensions": ["./index.ts"],
|
|
68
|
+
"compat": {
|
|
69
|
+
"pluginApi": ">=2026.3.24-beta.2",
|
|
70
|
+
"minGatewayVersion": "2026.3.24-beta.2"
|
|
71
|
+
},
|
|
72
|
+
"build": {
|
|
73
|
+
"nodmixVersion": "2026.3.24-beta.2",
|
|
74
|
+
"pluginSdkVersion": "2026.3.24-beta.2"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```json nodmix.plugin.json
|
|
81
|
+
{
|
|
82
|
+
"id": "my-plugin",
|
|
83
|
+
"name": "My Plugin",
|
|
84
|
+
"description": "Adds a custom tool to Nodmix",
|
|
85
|
+
"contracts": {
|
|
86
|
+
"tools": ["my_tool"]
|
|
87
|
+
},
|
|
88
|
+
"activation": {
|
|
89
|
+
"onStartup": true
|
|
90
|
+
},
|
|
91
|
+
"configSchema": {
|
|
92
|
+
"type": "object",
|
|
93
|
+
"additionalProperties": false
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
</CodeGroup>
|
|
99
|
+
|
|
100
|
+
Published external plugins should point runtime entries at built JavaScript
|
|
101
|
+
files. See [SDK entry points](/plugins/sdk-entrypoints) for the full entry
|
|
102
|
+
point contract.
|
|
103
|
+
|
|
104
|
+
Every plugin needs a manifest, even when it has no config. Runtime tools
|
|
105
|
+
must appear in `contracts.tools` so Nodmix can discover ownership without
|
|
106
|
+
eagerly loading every plugin runtime. Set `activation.onStartup`
|
|
107
|
+
intentionally. This example starts on Gateway startup.
|
|
108
|
+
|
|
109
|
+
For every manifest field, see [Plugin manifest](/plugins/manifest).
|
|
110
|
+
|
|
111
|
+
</Step>
|
|
112
|
+
|
|
113
|
+
<Step title="Register the tool">
|
|
114
|
+
```typescript index.ts
|
|
115
|
+
import { Type } from "typebox";
|
|
116
|
+
import { definePluginEntry } from "nodmix/plugin-sdk/plugin-entry";
|
|
117
|
+
|
|
118
|
+
export default definePluginEntry({
|
|
119
|
+
id: "my-plugin",
|
|
120
|
+
name: "My Plugin",
|
|
121
|
+
description: "Adds a custom tool to Nodmix",
|
|
122
|
+
register(api) {
|
|
123
|
+
api.registerTool({
|
|
124
|
+
name: "my_tool",
|
|
125
|
+
description: "Echo one input value",
|
|
126
|
+
parameters: Type.Object({ input: Type.String() }),
|
|
127
|
+
async execute(_id, params) {
|
|
128
|
+
return {
|
|
129
|
+
content: [{ type: "text", text: `Got: ${params.input}` }],
|
|
130
|
+
};
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Use `definePluginEntry` for non-channel plugins. Channel plugins use
|
|
138
|
+
`defineChannelPluginEntry`.
|
|
139
|
+
|
|
140
|
+
</Step>
|
|
141
|
+
|
|
142
|
+
<Step title="Test the runtime">
|
|
143
|
+
For an installed or external plugin, inspect the loaded runtime:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
nodmix plugins inspect my-plugin --runtime --json
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
If the plugin registers a CLI command, run that command too. For example,
|
|
150
|
+
a demo command should have an execution proof such as
|
|
151
|
+
`nodmix demo-plugin ping`.
|
|
152
|
+
|
|
153
|
+
For a bundled plugin in this repository, Nodmix discovers source-checkout
|
|
154
|
+
plugin packages from the `extensions/*` workspace. Run the closest targeted
|
|
155
|
+
test:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
pnpm test -- extensions/my-plugin/
|
|
159
|
+
pnpm check
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
</Step>
|
|
163
|
+
|
|
164
|
+
<Step title="Publish">
|
|
165
|
+
Validate the package before publishing:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
clawhub package publish your-org/your-plugin --dry-run
|
|
169
|
+
clawhub package publish your-org/your-plugin
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
The canonical ClawHub snippets live in `docs/snippets/plugin-publish/`.
|
|
173
|
+
|
|
174
|
+
</Step>
|
|
175
|
+
|
|
176
|
+
<Step title="Install">
|
|
177
|
+
Install the published package through ClawHub:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
nodmix plugins install clawhub:your-org/your-plugin
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
</Step>
|
|
184
|
+
</Steps>
|
|
185
|
+
|
|
186
|
+
<a id="registering-agent-tools"></a>
|
|
187
|
+
|
|
188
|
+
## Registering tools
|
|
189
|
+
|
|
190
|
+
Tools can be required or optional. Required tools are always available when the
|
|
191
|
+
plugin is enabled. Optional tools require user opt-in.
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
register(api) {
|
|
195
|
+
api.registerTool(
|
|
196
|
+
{
|
|
197
|
+
name: "workflow_tool",
|
|
198
|
+
description: "Run a workflow",
|
|
199
|
+
parameters: Type.Object({ pipeline: Type.String() }),
|
|
200
|
+
async execute(_id, params) {
|
|
201
|
+
return { content: [{ type: "text", text: params.pipeline }] };
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
{ optional: true },
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Every tool registered with `api.registerTool(...)` must also be declared in the
|
|
210
|
+
plugin manifest:
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"contracts": {
|
|
215
|
+
"tools": ["workflow_tool"]
|
|
216
|
+
},
|
|
217
|
+
"toolMetadata": {
|
|
218
|
+
"workflow_tool": {
|
|
219
|
+
"optional": true
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Users opt in with `tools.allow`:
|
|
226
|
+
|
|
227
|
+
```json5
|
|
228
|
+
{
|
|
229
|
+
tools: { allow: ["workflow_tool"] }, // or ["my-plugin"] for all tools from one plugin
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Use optional tools for side effects, unusual binaries, or capabilities that
|
|
234
|
+
should not be exposed by default. Tool names must not conflict with core tools;
|
|
235
|
+
conflicts are skipped and reported in plugin diagnostics. Malformed
|
|
236
|
+
registrations, including tool descriptors without `parameters`, are skipped and
|
|
237
|
+
reported the same way. Registered tools are typed functions the model can call
|
|
238
|
+
after policy and allowlist checks pass.
|
|
239
|
+
|
|
240
|
+
Tool factories receive a runtime-supplied context object. Use `ctx.activeModel`
|
|
241
|
+
when a tool needs to log, display, or adapt to the active model for the current
|
|
242
|
+
turn. The object can include `provider`, `modelId`, and `modelRef`. Treat it as
|
|
243
|
+
informational runtime metadata, not as a security boundary against the local
|
|
244
|
+
operator, installed plugin code, or a modified Nodmix runtime. Sensitive local
|
|
245
|
+
tools should still require an explicit plugin or operator opt-in and fail closed
|
|
246
|
+
when active-model metadata is missing or unsuitable.
|
|
247
|
+
|
|
248
|
+
The manifest declares ownership and discovery; execution still calls the live
|
|
249
|
+
registered tool implementation. Keep `toolMetadata.<tool>.optional: true`
|
|
250
|
+
aligned with `api.registerTool(..., { optional: true })` so Nodmix can avoid
|
|
251
|
+
loading that plugin runtime until the tool is explicitly allowlisted.
|
|
252
|
+
|
|
253
|
+
## Import conventions
|
|
254
|
+
|
|
255
|
+
Import from focused SDK subpaths:
|
|
256
|
+
|
|
257
|
+
```typescript
|
|
258
|
+
import { definePluginEntry } from "nodmix/plugin-sdk/plugin-entry";
|
|
259
|
+
import { createPluginRuntimeStore } from "nodmix/plugin-sdk/runtime-store";
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Do not import from the deprecated root barrel:
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
import { definePluginEntry } from "nodmix/plugin-sdk";
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Within your plugin package, use local barrel files such as `api.ts` and
|
|
269
|
+
`runtime-api.ts` for internal imports. Do not import your own plugin through an
|
|
270
|
+
SDK path. Provider-specific helpers should stay in the provider package unless
|
|
271
|
+
the seam is truly generic.
|
|
272
|
+
|
|
273
|
+
Custom Gateway RPC methods are an advanced entry point. Keep them on a
|
|
274
|
+
plugin-specific prefix; core admin namespaces such as `config.*`,
|
|
275
|
+
`exec.approvals.*`, `operator.admin.*`, `wizard.*`, and `update.*` stay reserved
|
|
276
|
+
and resolve to `operator.admin`. The
|
|
277
|
+
`nodmix/plugin-sdk/gateway-method-runtime` bridge is reserved for plugin HTTP
|
|
278
|
+
routes that declare `contracts.gatewayMethodDispatch: ["authenticated-request"]`.
|
|
279
|
+
|
|
280
|
+
For the full import map, see [Plugin SDK overview](/plugins/sdk-overview).
|
|
281
|
+
|
|
282
|
+
## Pre-submission checklist
|
|
283
|
+
|
|
284
|
+
<Check>**package.json** has correct `nodmix` metadata</Check>
|
|
285
|
+
<Check>**nodmix.plugin.json** manifest is present and valid</Check>
|
|
286
|
+
<Check>Entry point uses `defineChannelPluginEntry` or `definePluginEntry`</Check>
|
|
287
|
+
<Check>All imports use focused `plugin-sdk/<subpath>` paths</Check>
|
|
288
|
+
<Check>Internal imports use local modules, not SDK self-imports</Check>
|
|
289
|
+
<Check>Tests pass (`pnpm test -- <bundled-plugin-root>/my-plugin/`)</Check>
|
|
290
|
+
<Check>`pnpm check` passes (in-repo plugins)</Check>
|
|
291
|
+
|
|
292
|
+
## Test against beta releases
|
|
293
|
+
|
|
294
|
+
1. Watch for GitHub release tags on [nodmix/nodmix](https://github.com/nodmix/nodmix/releases) and subscribe via `Watch` > `Releases`. Beta tags look like `v2026.3.N-beta.1`. You can also turn on notifications for the official Nodmix X account [@nodmix](https://x.com/nodmix) for release announcements.
|
|
295
|
+
2. Test your plugin against the beta tag as soon as it appears. The window before stable is typically only a few hours.
|
|
296
|
+
3. Post in your plugin's thread in the `plugin-forum` Discord channel after testing with either `all good` or what broke. If you do not have a thread yet, create one.
|
|
297
|
+
4. If something breaks, open or update an issue titled `Beta blocker: <plugin-name> - <summary>` and apply the `beta-blocker` label. Put the issue link in your thread.
|
|
298
|
+
5. Open a PR to `main` titled `fix(<plugin-id>): beta blocker - <summary>` and link the issue in both the PR and your Discord thread. Contributors cannot label PRs, so the title is the PR-side signal for maintainers and automation. Blockers with a PR get merged; blockers without one might ship anyway. Maintainers watch these threads during beta testing.
|
|
299
|
+
6. Silence means green. If you miss the window, your fix likely lands in the next cycle.
|
|
300
|
+
|
|
301
|
+
## Next steps
|
|
302
|
+
|
|
303
|
+
<CardGroup cols={2}>
|
|
304
|
+
<Card title="Channel Plugins" icon="messages-square" href="/plugins/sdk-channel-plugins">
|
|
305
|
+
Build a messaging channel plugin
|
|
306
|
+
</Card>
|
|
307
|
+
<Card title="Provider Plugins" icon="cpu" href="/plugins/sdk-provider-plugins">
|
|
308
|
+
Build a model provider plugin
|
|
309
|
+
</Card>
|
|
310
|
+
<Card title="CLI Backend Plugins" icon="terminal" href="/plugins/cli-backend-plugins">
|
|
311
|
+
Register a local AI CLI backend
|
|
312
|
+
</Card>
|
|
313
|
+
<Card title="SDK Overview" icon="book-open" href="/plugins/sdk-overview">
|
|
314
|
+
Import map and registration API reference
|
|
315
|
+
</Card>
|
|
316
|
+
<Card title="Runtime Helpers" icon="settings" href="/plugins/sdk-runtime">
|
|
317
|
+
TTS, search, subagent via api.runtime
|
|
318
|
+
</Card>
|
|
319
|
+
<Card title="Testing" icon="test-tubes" href="/plugins/sdk-testing">
|
|
320
|
+
Test utilities and patterns
|
|
321
|
+
</Card>
|
|
322
|
+
<Card title="Plugin Manifest" icon="file-json" href="/plugins/manifest">
|
|
323
|
+
Full manifest schema reference
|
|
324
|
+
</Card>
|
|
325
|
+
</CardGroup>
|
|
326
|
+
|
|
327
|
+
## Related
|
|
328
|
+
|
|
329
|
+
- [Plugin hooks](/plugins/hooks)
|
|
330
|
+
- [Plugin architecture](/plugins/architecture)
|
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Install and use Codex, Claude, and Cursor bundles as Nodmix plugins"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to install a Codex, Claude, or Cursor-compatible bundle
|
|
5
|
+
- You need to understand how Nodmix maps bundle content into native features
|
|
6
|
+
- You are debugging bundle detection or missing capabilities
|
|
7
|
+
title: "Plugin bundles"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Nodmix can install plugins from three external ecosystems: **Codex**, **Claude**,
|
|
11
|
+
and **Cursor**. These are called **bundles** — content and metadata packs that
|
|
12
|
+
Nodmix maps into native features like skills, hooks, and MCP tools.
|
|
13
|
+
|
|
14
|
+
<Info>
|
|
15
|
+
Bundles are **not** the same as native Nodmix plugins. Native plugins run
|
|
16
|
+
in-process and can register any capability. Bundles are content packs with
|
|
17
|
+
selective feature mapping and a narrower trust boundary.
|
|
18
|
+
</Info>
|
|
19
|
+
|
|
20
|
+
## Why bundles exist
|
|
21
|
+
|
|
22
|
+
Many useful plugins are published in Codex, Claude, or Cursor format. Instead
|
|
23
|
+
of requiring authors to rewrite them as native Nodmix plugins, Nodmix
|
|
24
|
+
detects these formats and maps their supported content into the native feature
|
|
25
|
+
set. This means you can install a Claude command pack or a Codex skill bundle
|
|
26
|
+
and use it immediately.
|
|
27
|
+
|
|
28
|
+
## Install a bundle
|
|
29
|
+
|
|
30
|
+
<Steps>
|
|
31
|
+
<Step title="Install from a directory, archive, or marketplace">
|
|
32
|
+
```bash
|
|
33
|
+
# Local directory
|
|
34
|
+
nodmix plugins install ./my-bundle
|
|
35
|
+
|
|
36
|
+
# Archive
|
|
37
|
+
nodmix plugins install ./my-bundle.tgz
|
|
38
|
+
|
|
39
|
+
# Claude marketplace
|
|
40
|
+
nodmix plugins marketplace list <marketplace-name>
|
|
41
|
+
nodmix plugins install <plugin-name>@<marketplace-name>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
</Step>
|
|
45
|
+
|
|
46
|
+
<Step title="Verify detection">
|
|
47
|
+
```bash
|
|
48
|
+
nodmix plugins list
|
|
49
|
+
nodmix plugins inspect <id>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Bundles show as `Format: bundle` with a subtype of `codex`, `claude`, or `cursor`.
|
|
53
|
+
|
|
54
|
+
</Step>
|
|
55
|
+
|
|
56
|
+
<Step title="Restart and use">
|
|
57
|
+
```bash
|
|
58
|
+
nodmix gateway restart
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Mapped features (skills, hooks, MCP tools, LSP defaults) are available in the next session.
|
|
62
|
+
|
|
63
|
+
</Step>
|
|
64
|
+
</Steps>
|
|
65
|
+
|
|
66
|
+
## What Nodmix maps from bundles
|
|
67
|
+
|
|
68
|
+
Not every bundle feature runs in Nodmix today. Here is what works and what
|
|
69
|
+
is detected but not yet wired.
|
|
70
|
+
|
|
71
|
+
### Supported now
|
|
72
|
+
|
|
73
|
+
| Feature | How it maps | Applies to |
|
|
74
|
+
| ------------- | ------------------------------------------------------------------------------------------- | -------------- |
|
|
75
|
+
| Skill content | Bundle skill roots load as normal Nodmix skills | All formats |
|
|
76
|
+
| Commands | `commands/` and `.cursor/commands/` treated as skill roots | Claude, Cursor |
|
|
77
|
+
| Hook packs | Nodmix-style `HOOK.md` + `handler.ts` layouts | Codex |
|
|
78
|
+
| MCP tools | Bundle MCP config merged into embedded Pi settings; supported stdio and HTTP servers loaded | All formats |
|
|
79
|
+
| LSP servers | Claude `.lsp.json` and manifest-declared `lspServers` merged into embedded Pi LSP defaults | Claude |
|
|
80
|
+
| Settings | Claude `settings.json` imported as embedded Pi defaults | Claude |
|
|
81
|
+
|
|
82
|
+
#### Skill content
|
|
83
|
+
|
|
84
|
+
- bundle skill roots load as normal Nodmix skill roots
|
|
85
|
+
- Claude `commands` roots are treated as additional skill roots
|
|
86
|
+
- Cursor `.cursor/commands` roots are treated as additional skill roots
|
|
87
|
+
|
|
88
|
+
This means Claude markdown command files work through the normal Nodmix skill
|
|
89
|
+
loader. Cursor command markdown works through the same path.
|
|
90
|
+
|
|
91
|
+
#### Hook packs
|
|
92
|
+
|
|
93
|
+
- bundle hook roots work **only** when they use the normal Nodmix hook-pack
|
|
94
|
+
layout. Today this is primarily the Codex-compatible case:
|
|
95
|
+
- `HOOK.md`
|
|
96
|
+
- `handler.ts` or `handler.js`
|
|
97
|
+
|
|
98
|
+
#### MCP for Pi
|
|
99
|
+
|
|
100
|
+
- enabled bundles can contribute MCP server config
|
|
101
|
+
- Nodmix merges bundle MCP config into the effective embedded Pi settings as
|
|
102
|
+
`mcpServers`
|
|
103
|
+
- Nodmix exposes supported bundle MCP tools during embedded Pi agent turns by
|
|
104
|
+
launching stdio servers or connecting to HTTP servers
|
|
105
|
+
- the `coding` and `messaging` tool profiles include bundle MCP tools by
|
|
106
|
+
default; use `tools.deny: ["bundle-mcp"]` to opt out for an agent or gateway
|
|
107
|
+
- project-local Pi settings still apply after bundle defaults, so workspace
|
|
108
|
+
settings can override bundle MCP entries when needed
|
|
109
|
+
- bundle MCP tool catalogs are sorted deterministically before registration, so
|
|
110
|
+
upstream `listTools()` order changes do not thrash prompt-cache tool blocks
|
|
111
|
+
|
|
112
|
+
##### Transports
|
|
113
|
+
|
|
114
|
+
MCP servers can use stdio or HTTP transport:
|
|
115
|
+
|
|
116
|
+
**Stdio** launches a child process:
|
|
117
|
+
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"mcp": {
|
|
121
|
+
"servers": {
|
|
122
|
+
"my-server": {
|
|
123
|
+
"command": "node",
|
|
124
|
+
"args": ["server.js"],
|
|
125
|
+
"env": { "PORT": "3000" }
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**HTTP** connects to a running MCP server over `sse` by default, or `streamable-http` when requested:
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"mcp": {
|
|
137
|
+
"servers": {
|
|
138
|
+
"my-server": {
|
|
139
|
+
"url": "http://localhost:3100/mcp",
|
|
140
|
+
"transport": "streamable-http",
|
|
141
|
+
"headers": {
|
|
142
|
+
"Authorization": "Bearer ${MY_SECRET_TOKEN}"
|
|
143
|
+
},
|
|
144
|
+
"connectionTimeoutMs": 30000
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
- `transport` may be set to `"streamable-http"` or `"sse"`; when omitted, Nodmix uses `sse`
|
|
152
|
+
- `type: "http"` is a CLI-native downstream shape; use `transport: "streamable-http"` in Nodmix config. `nodmix mcp set` and `nodmix doctor --fix` normalize the common alias.
|
|
153
|
+
- only `http:` and `https:` URL schemes are allowed
|
|
154
|
+
- `headers` values support `${ENV_VAR}` interpolation
|
|
155
|
+
- a server entry with both `command` and `url` is rejected
|
|
156
|
+
- URL credentials (userinfo and query params) are redacted from tool
|
|
157
|
+
descriptions and logs
|
|
158
|
+
- `connectionTimeoutMs` overrides the default 30-second connection timeout for
|
|
159
|
+
both stdio and HTTP transports
|
|
160
|
+
|
|
161
|
+
##### Tool naming
|
|
162
|
+
|
|
163
|
+
Nodmix registers bundle MCP tools with provider-safe names in the form
|
|
164
|
+
`serverName__toolName`. For example, a server keyed `"vigil-harbor"` exposing a
|
|
165
|
+
`memory_search` tool registers as `vigil-harbor__memory_search`.
|
|
166
|
+
|
|
167
|
+
- characters outside `A-Za-z0-9_-` are replaced with `-`
|
|
168
|
+
- fragments that would start with a non-letter get a letter prefix, so numeric
|
|
169
|
+
server keys such as `12306` become provider-safe tool prefixes
|
|
170
|
+
- server prefixes are capped at 30 characters
|
|
171
|
+
- full tool names are capped at 64 characters
|
|
172
|
+
- empty server names fall back to `mcp`
|
|
173
|
+
- colliding sanitized names are disambiguated with numeric suffixes
|
|
174
|
+
- final exposed tool order is deterministic by safe name to keep repeated Pi
|
|
175
|
+
turns cache-stable
|
|
176
|
+
- profile filtering treats all tools from one bundle MCP server as plugin-owned
|
|
177
|
+
by `bundle-mcp`, so profile allowlists and deny lists can include either
|
|
178
|
+
individual exposed tool names or the `bundle-mcp` plugin key
|
|
179
|
+
|
|
180
|
+
#### Embedded Pi settings
|
|
181
|
+
|
|
182
|
+
- Claude `settings.json` is imported as default embedded Pi settings when the
|
|
183
|
+
bundle is enabled
|
|
184
|
+
- Nodmix sanitizes shell override keys before applying them
|
|
185
|
+
|
|
186
|
+
Sanitized keys:
|
|
187
|
+
|
|
188
|
+
- `shellPath`
|
|
189
|
+
- `shellCommandPrefix`
|
|
190
|
+
|
|
191
|
+
#### Embedded Pi LSP
|
|
192
|
+
|
|
193
|
+
- enabled Claude bundles can contribute LSP server config
|
|
194
|
+
- Nodmix loads `.lsp.json` plus any manifest-declared `lspServers` paths
|
|
195
|
+
- bundle LSP config is merged into the effective embedded Pi LSP defaults
|
|
196
|
+
- only supported stdio-backed LSP servers are runnable today; unsupported
|
|
197
|
+
transports still show up in `nodmix plugins inspect <id>`
|
|
198
|
+
|
|
199
|
+
### Detected but not executed
|
|
200
|
+
|
|
201
|
+
These are recognized and shown in diagnostics, but Nodmix does not run them:
|
|
202
|
+
|
|
203
|
+
- Claude `agents`, `hooks.json` automation, `outputStyles`
|
|
204
|
+
- Cursor `.cursor/agents`, `.cursor/hooks.json`, `.cursor/rules`
|
|
205
|
+
- Codex inline/app metadata beyond capability reporting
|
|
206
|
+
|
|
207
|
+
## Bundle formats
|
|
208
|
+
|
|
209
|
+
<AccordionGroup>
|
|
210
|
+
<Accordion title="Codex bundles">
|
|
211
|
+
Markers: `.codex-plugin/plugin.json`
|
|
212
|
+
|
|
213
|
+
Optional content: `skills/`, `hooks/`, `.mcp.json`, `.app.json`
|
|
214
|
+
|
|
215
|
+
Codex bundles fit Nodmix best when they use skill roots and Nodmix-style
|
|
216
|
+
hook-pack directories (`HOOK.md` + `handler.ts`).
|
|
217
|
+
|
|
218
|
+
</Accordion>
|
|
219
|
+
|
|
220
|
+
<Accordion title="Claude bundles">
|
|
221
|
+
Two detection modes:
|
|
222
|
+
|
|
223
|
+
- **Manifest-based:** `.claude-plugin/plugin.json`
|
|
224
|
+
- **Manifestless:** default Claude layout (`skills/`, `commands/`, `agents/`, `hooks/`, `.mcp.json`, `.lsp.json`, `settings.json`)
|
|
225
|
+
|
|
226
|
+
Claude-specific behavior:
|
|
227
|
+
|
|
228
|
+
- `commands/` is treated as skill content
|
|
229
|
+
- `settings.json` is imported into embedded Pi settings (shell override keys are sanitized)
|
|
230
|
+
- `.mcp.json` exposes supported stdio tools to embedded Pi
|
|
231
|
+
- `.lsp.json` plus manifest-declared `lspServers` paths load into embedded Pi LSP defaults
|
|
232
|
+
- `hooks/hooks.json` is detected but not executed
|
|
233
|
+
- Custom component paths in the manifest are additive (they extend defaults, not replace them)
|
|
234
|
+
|
|
235
|
+
</Accordion>
|
|
236
|
+
|
|
237
|
+
<Accordion title="Cursor bundles">
|
|
238
|
+
Markers: `.cursor-plugin/plugin.json`
|
|
239
|
+
|
|
240
|
+
Optional content: `skills/`, `.cursor/commands/`, `.cursor/agents/`, `.cursor/rules/`, `.cursor/hooks.json`, `.mcp.json`
|
|
241
|
+
|
|
242
|
+
- `.cursor/commands/` is treated as skill content
|
|
243
|
+
- `.cursor/rules/`, `.cursor/agents/`, and `.cursor/hooks.json` are detect-only
|
|
244
|
+
|
|
245
|
+
</Accordion>
|
|
246
|
+
</AccordionGroup>
|
|
247
|
+
|
|
248
|
+
## Detection precedence
|
|
249
|
+
|
|
250
|
+
Nodmix checks for native plugin format first:
|
|
251
|
+
|
|
252
|
+
1. `nodmix.plugin.json` or valid `package.json` with `nodmix.extensions` — treated as **native plugin**
|
|
253
|
+
2. Bundle markers (`.codex-plugin/`, `.claude-plugin/`, or default Claude/Cursor layout) — treated as **bundle**
|
|
254
|
+
|
|
255
|
+
If a directory contains both, Nodmix uses the native path. This prevents
|
|
256
|
+
dual-format packages from being partially installed as bundles.
|
|
257
|
+
|
|
258
|
+
## Runtime dependencies and cleanup
|
|
259
|
+
|
|
260
|
+
- Third-party compatible bundles do not get startup `npm install` repair. They
|
|
261
|
+
should be installed through `nodmix plugins install` and ship everything
|
|
262
|
+
they need in the installed plugin directory.
|
|
263
|
+
- Nodmix-owned bundled plugins are either shipped lightweight in core or
|
|
264
|
+
downloadable through the plugin installer. Gateway startup never runs a
|
|
265
|
+
package manager for them.
|
|
266
|
+
- `nodmix doctor --fix` removes legacy staged dependency directories and can
|
|
267
|
+
recover downloadable plugins that are missing from the local plugin index when
|
|
268
|
+
config references them.
|
|
269
|
+
|
|
270
|
+
## Security
|
|
271
|
+
|
|
272
|
+
Bundles have a narrower trust boundary than native plugins:
|
|
273
|
+
|
|
274
|
+
- Nodmix does **not** load arbitrary bundle runtime modules in-process
|
|
275
|
+
- Skills and hook-pack paths must stay inside the plugin root (boundary-checked)
|
|
276
|
+
- Settings files are read with the same boundary checks
|
|
277
|
+
- Supported stdio MCP servers may be launched as subprocesses
|
|
278
|
+
|
|
279
|
+
This makes bundles safer by default, but you should still treat third-party
|
|
280
|
+
bundles as trusted content for the features they do expose.
|
|
281
|
+
|
|
282
|
+
## Troubleshooting
|
|
283
|
+
|
|
284
|
+
<AccordionGroup>
|
|
285
|
+
<Accordion title="Bundle is detected but capabilities do not run">
|
|
286
|
+
Run `nodmix plugins inspect <id>`. If a capability is listed but marked as
|
|
287
|
+
not wired, that is a product limit — not a broken install.
|
|
288
|
+
</Accordion>
|
|
289
|
+
|
|
290
|
+
<Accordion title="Claude command files do not appear">
|
|
291
|
+
Make sure the bundle is enabled and the markdown files are inside a detected
|
|
292
|
+
`commands/` or `skills/` root.
|
|
293
|
+
</Accordion>
|
|
294
|
+
|
|
295
|
+
<Accordion title="Claude settings do not apply">
|
|
296
|
+
Only embedded Pi settings from `settings.json` are supported. Nodmix does
|
|
297
|
+
not treat bundle settings as raw config patches.
|
|
298
|
+
</Accordion>
|
|
299
|
+
|
|
300
|
+
<Accordion title="Claude hooks do not execute">
|
|
301
|
+
`hooks/hooks.json` is detect-only. If you need runnable hooks, use the
|
|
302
|
+
Nodmix hook-pack layout or ship a native plugin.
|
|
303
|
+
</Accordion>
|
|
304
|
+
</AccordionGroup>
|
|
305
|
+
|
|
306
|
+
## Related
|
|
307
|
+
|
|
308
|
+
- [Install and Configure Plugins](/tools/plugin)
|
|
309
|
+
- [Building Plugins](/plugins/building-plugins) — create a native plugin
|
|
310
|
+
- [Plugin Manifest](/plugins/manifest) — native manifest schema
|