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,310 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Build a plugin that registers a local AI CLI backend"
|
|
3
|
+
title: "Building CLI backend plugins"
|
|
4
|
+
sidebarTitle: "CLI backend plugins"
|
|
5
|
+
read_when:
|
|
6
|
+
- You are building a local AI CLI backend plugin
|
|
7
|
+
- You want to register a backend for model refs such as acme-cli/model
|
|
8
|
+
- You need to map a third-party CLI into Nodmix's text fallback runner
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
CLI backend plugins let Nodmix call a local AI CLI as a text inference
|
|
12
|
+
backend. The backend appears as a provider prefix in model refs:
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
acme-cli/acme-large
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Use a CLI backend when the upstream integration is already exposed as a local
|
|
19
|
+
command, when the CLI owns local login state, or when the CLI is a useful
|
|
20
|
+
fallback if API providers are unavailable.
|
|
21
|
+
|
|
22
|
+
<Info>
|
|
23
|
+
If the upstream service exposes a normal HTTP model API, write a
|
|
24
|
+
[provider plugin](/plugins/sdk-provider-plugins) instead. If the upstream
|
|
25
|
+
runtime owns complete agent sessions, tool events, compaction, or background
|
|
26
|
+
task state, use an [agent harness](/plugins/sdk-agent-harness).
|
|
27
|
+
</Info>
|
|
28
|
+
|
|
29
|
+
## What the plugin owns
|
|
30
|
+
|
|
31
|
+
A CLI backend plugin has three contracts:
|
|
32
|
+
|
|
33
|
+
| Contract | File | Purpose |
|
|
34
|
+
| -------------------- | ---------------------- | --------------------------------------------------------- |
|
|
35
|
+
| Package entry | `package.json` | Points Nodmix at the plugin runtime module |
|
|
36
|
+
| Manifest ownership | `nodmix.plugin.json` | Declares the backend id before runtime loads |
|
|
37
|
+
| Runtime registration | `index.ts` | Calls `api.registerCliBackend(...)` with command defaults |
|
|
38
|
+
|
|
39
|
+
The manifest is discovery metadata. It does not execute the CLI and does not
|
|
40
|
+
register runtime behavior. Runtime behavior starts when the plugin entry calls
|
|
41
|
+
`api.registerCliBackend(...)`.
|
|
42
|
+
|
|
43
|
+
## Minimal backend plugin
|
|
44
|
+
|
|
45
|
+
<Steps>
|
|
46
|
+
<Step title="Create package metadata">
|
|
47
|
+
```json package.json
|
|
48
|
+
{
|
|
49
|
+
"name": "@acme/nodmix-acme-cli",
|
|
50
|
+
"version": "1.0.0",
|
|
51
|
+
"type": "module",
|
|
52
|
+
"nodmix": {
|
|
53
|
+
"extensions": ["./index.ts"],
|
|
54
|
+
"compat": {
|
|
55
|
+
"pluginApi": ">=2026.3.24-beta.2",
|
|
56
|
+
"minGatewayVersion": "2026.3.24-beta.2"
|
|
57
|
+
},
|
|
58
|
+
"build": {
|
|
59
|
+
"nodmixVersion": "2026.3.24-beta.2",
|
|
60
|
+
"pluginSdkVersion": "2026.3.24-beta.2"
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"nodmix": "^2026.3.24"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"typescript": "^5.9.0"
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Published packages must ship built JavaScript runtime files. If your source
|
|
73
|
+
entry is `./src/index.ts`, add `nodmix.runtimeExtensions` that points at
|
|
74
|
+
the built JavaScript peer. See [Entry points](/plugins/sdk-entrypoints).
|
|
75
|
+
|
|
76
|
+
</Step>
|
|
77
|
+
|
|
78
|
+
<Step title="Declare backend ownership">
|
|
79
|
+
```json nodmix.plugin.json
|
|
80
|
+
{
|
|
81
|
+
"id": "acme-cli",
|
|
82
|
+
"name": "Acme CLI",
|
|
83
|
+
"description": "Run Acme's local AI CLI through Nodmix",
|
|
84
|
+
"cliBackends": ["acme-cli"],
|
|
85
|
+
"setup": {
|
|
86
|
+
"cliBackends": ["acme-cli"],
|
|
87
|
+
"requiresRuntime": false
|
|
88
|
+
},
|
|
89
|
+
"activation": {
|
|
90
|
+
"onStartup": false
|
|
91
|
+
},
|
|
92
|
+
"configSchema": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"additionalProperties": false
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`cliBackends` is the runtime ownership list. It lets Nodmix auto-load the
|
|
100
|
+
plugin when config or model selection mentions `acme-cli/...`.
|
|
101
|
+
|
|
102
|
+
`setup.cliBackends` is the descriptor-first setup surface. Add it when
|
|
103
|
+
model discovery, onboarding, or status should recognize the backend without
|
|
104
|
+
loading plugin runtime. Use `requiresRuntime: false` only when those static
|
|
105
|
+
descriptors are enough for setup.
|
|
106
|
+
|
|
107
|
+
</Step>
|
|
108
|
+
|
|
109
|
+
<Step title="Register the backend">
|
|
110
|
+
```typescript index.ts
|
|
111
|
+
import { definePluginEntry } from "nodmix/plugin-sdk/plugin-entry";
|
|
112
|
+
import {
|
|
113
|
+
CLI_FRESH_WATCHDOG_DEFAULTS,
|
|
114
|
+
CLI_RESUME_WATCHDOG_DEFAULTS,
|
|
115
|
+
type CliBackendPlugin,
|
|
116
|
+
} from "nodmix/plugin-sdk/cli-backend";
|
|
117
|
+
|
|
118
|
+
function buildAcmeCliBackend(): CliBackendPlugin {
|
|
119
|
+
return {
|
|
120
|
+
id: "acme-cli",
|
|
121
|
+
liveTest: {
|
|
122
|
+
defaultModelRef: "acme-cli/acme-large",
|
|
123
|
+
defaultImageProbe: false,
|
|
124
|
+
defaultMcpProbe: false,
|
|
125
|
+
docker: {
|
|
126
|
+
npmPackage: "@acme/acme-cli",
|
|
127
|
+
binaryName: "acme",
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
config: {
|
|
131
|
+
command: "acme",
|
|
132
|
+
args: ["chat", "--json"],
|
|
133
|
+
output: "json",
|
|
134
|
+
input: "stdin",
|
|
135
|
+
modelArg: "--model",
|
|
136
|
+
sessionArg: "--session",
|
|
137
|
+
sessionMode: "existing",
|
|
138
|
+
sessionIdFields: ["session_id", "conversation_id"],
|
|
139
|
+
systemPromptFileArg: "--system-file",
|
|
140
|
+
systemPromptWhen: "first",
|
|
141
|
+
imageArg: "--image",
|
|
142
|
+
imageMode: "repeat",
|
|
143
|
+
reliability: {
|
|
144
|
+
watchdog: {
|
|
145
|
+
fresh: { ...CLI_FRESH_WATCHDOG_DEFAULTS },
|
|
146
|
+
resume: { ...CLI_RESUME_WATCHDOG_DEFAULTS },
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
serialize: true,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export default definePluginEntry({
|
|
155
|
+
id: "acme-cli",
|
|
156
|
+
name: "Acme CLI",
|
|
157
|
+
description: "Run Acme's local AI CLI through Nodmix",
|
|
158
|
+
register(api) {
|
|
159
|
+
api.registerCliBackend(buildAcmeCliBackend());
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
The backend id must match the manifest `cliBackends` entry. The registered
|
|
165
|
+
`config` is only the default; user config under
|
|
166
|
+
`agents.defaults.cliBackends.acme-cli` is merged over it at runtime.
|
|
167
|
+
|
|
168
|
+
</Step>
|
|
169
|
+
</Steps>
|
|
170
|
+
|
|
171
|
+
## Config shape
|
|
172
|
+
|
|
173
|
+
`CliBackendConfig` describes how Nodmix should launch and parse the CLI:
|
|
174
|
+
|
|
175
|
+
| Field | Use |
|
|
176
|
+
| ----------------------------------------- | ----------------------------------------------------------- |
|
|
177
|
+
| `command` | Binary name or absolute command path |
|
|
178
|
+
| `args` | Base argv for fresh runs |
|
|
179
|
+
| `resumeArgs` | Alternate argv for resumed sessions; supports `{sessionId}` |
|
|
180
|
+
| `output` / `resumeOutput` | Parser: `json`, `jsonl`, or `text` |
|
|
181
|
+
| `input` | Prompt transport: `arg` or `stdin` |
|
|
182
|
+
| `modelArg` | Flag used before the model id |
|
|
183
|
+
| `modelAliases` | Map Nodmix model ids to CLI-native ids |
|
|
184
|
+
| `sessionArg` / `sessionArgs` | How to pass a session id |
|
|
185
|
+
| `sessionMode` | `always`, `existing`, or `none` |
|
|
186
|
+
| `sessionIdFields` | JSON fields Nodmix reads from CLI output |
|
|
187
|
+
| `systemPromptArg` / `systemPromptFileArg` | System prompt transport |
|
|
188
|
+
| `systemPromptWhen` | `first`, `always`, or `never` |
|
|
189
|
+
| `imageArg` / `imageMode` | Image path support |
|
|
190
|
+
| `serialize` | Keep same-backend runs ordered |
|
|
191
|
+
| `reliability.watchdog` | No-output timeout tuning |
|
|
192
|
+
|
|
193
|
+
Prefer the smallest static config that matches the CLI. Add plugin callbacks
|
|
194
|
+
only for behavior that really belongs to the backend.
|
|
195
|
+
|
|
196
|
+
## Advanced backend hooks
|
|
197
|
+
|
|
198
|
+
`CliBackendPlugin` can also define:
|
|
199
|
+
|
|
200
|
+
| Hook | Use |
|
|
201
|
+
| ---------------------------------- | ------------------------------------------------------ |
|
|
202
|
+
| `normalizeConfig(config, context)` | Rewrite legacy user config after merge |
|
|
203
|
+
| `resolveExecutionArgs(ctx)` | Add request-scoped flags such as thinking effort |
|
|
204
|
+
| `prepareExecution(ctx)` | Create temporary auth or config bridges before launch |
|
|
205
|
+
| `transformSystemPrompt(ctx)` | Apply a final CLI-specific system prompt transform |
|
|
206
|
+
| `textTransforms` | Bidirectional prompt/output replacements |
|
|
207
|
+
| `defaultAuthProfileId` | Prefer a specific Nodmix auth profile |
|
|
208
|
+
| `authEpochMode` | Decide how auth changes invalidate stored CLI sessions |
|
|
209
|
+
| `nativeToolMode` | Declare whether the CLI has always-on native tools |
|
|
210
|
+
| `bundleMcp` / `bundleMcpMode` | Opt into Nodmix's loopback MCP tool bridge |
|
|
211
|
+
|
|
212
|
+
Keep these hooks provider-owned. Do not add CLI-specific branches to core when a
|
|
213
|
+
backend hook can express the behavior.
|
|
214
|
+
|
|
215
|
+
## MCP tool bridge
|
|
216
|
+
|
|
217
|
+
CLI backends do not receive Nodmix tools by default. If the CLI can consume an
|
|
218
|
+
MCP configuration, opt in explicitly:
|
|
219
|
+
|
|
220
|
+
```typescript
|
|
221
|
+
return {
|
|
222
|
+
id: "acme-cli",
|
|
223
|
+
bundleMcp: true,
|
|
224
|
+
bundleMcpMode: "codex-config-overrides",
|
|
225
|
+
config: {
|
|
226
|
+
command: "acme",
|
|
227
|
+
args: ["chat", "--json"],
|
|
228
|
+
output: "json",
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Supported bridge modes are:
|
|
234
|
+
|
|
235
|
+
| Mode | Use |
|
|
236
|
+
| ------------------------ | ---------------------------------------------------------------- |
|
|
237
|
+
| `claude-config-file` | CLIs that accept an MCP config file |
|
|
238
|
+
| `codex-config-overrides` | CLIs that accept config overrides on argv |
|
|
239
|
+
| `gemini-system-settings` | CLIs that read MCP settings from their system settings directory |
|
|
240
|
+
|
|
241
|
+
Only enable the bridge when the CLI can actually consume it. If the CLI has its
|
|
242
|
+
own built-in tool layer that cannot be disabled, set `nativeToolMode:
|
|
243
|
+
"always-on"` so Nodmix can fail closed when a caller requires no native tools.
|
|
244
|
+
|
|
245
|
+
## User configuration
|
|
246
|
+
|
|
247
|
+
Users can override any backend default:
|
|
248
|
+
|
|
249
|
+
```json5
|
|
250
|
+
{
|
|
251
|
+
agents: {
|
|
252
|
+
defaults: {
|
|
253
|
+
cliBackends: {
|
|
254
|
+
"acme-cli": {
|
|
255
|
+
command: "/opt/acme/bin/acme",
|
|
256
|
+
args: ["chat", "--json", "--profile", "work"],
|
|
257
|
+
modelAliases: {
|
|
258
|
+
large: "acme-large-2026",
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
model: {
|
|
263
|
+
primary: "openai/gpt-5.5",
|
|
264
|
+
fallbacks: ["acme-cli/large"],
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Document the minimum override users are likely to need. Usually that is only
|
|
272
|
+
`command` when the binary is outside `PATH`.
|
|
273
|
+
|
|
274
|
+
## Verification
|
|
275
|
+
|
|
276
|
+
For bundled plugins, add a focused test around the builder and setup
|
|
277
|
+
registration, then run the plugin's targeted test lane:
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
pnpm test extensions/acme-cli
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
For local or installed plugins, verify discovery and one real model run:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
nodmix plugins inspect acme-cli --runtime --json
|
|
287
|
+
nodmix agent --message "reply exactly: backend ok" --model acme-cli/acme-large
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
If the backend supports images or MCP, add a live smoke that proves those paths
|
|
291
|
+
with the real CLI. Do not rely on static inspection for prompt, image, MCP, or
|
|
292
|
+
session-resume behavior.
|
|
293
|
+
|
|
294
|
+
## Checklist
|
|
295
|
+
|
|
296
|
+
<Check>`package.json` has `nodmix.extensions` and built runtime entries for published packages</Check>
|
|
297
|
+
<Check>`nodmix.plugin.json` declares `cliBackends` and intentional `activation.onStartup`</Check>
|
|
298
|
+
<Check>`setup.cliBackends` is present when setup/model discovery should see the backend cold</Check>
|
|
299
|
+
<Check>`api.registerCliBackend(...)` uses the same backend id as the manifest</Check>
|
|
300
|
+
<Check>User overrides under `agents.defaults.cliBackends.<id>` still win</Check>
|
|
301
|
+
<Check>Session, system prompt, image, and output parser settings match the real CLI contract</Check>
|
|
302
|
+
<Check>Targeted tests and at least one live CLI smoke prove the backend path</Check>
|
|
303
|
+
|
|
304
|
+
## Related
|
|
305
|
+
|
|
306
|
+
- [CLI backends](/gateway/cli-backends) - user configuration and runtime behavior
|
|
307
|
+
- [Building plugins](/plugins/building-plugins) - package and manifest basics
|
|
308
|
+
- [Plugin SDK overview](/plugins/sdk-overview) - registration API reference
|
|
309
|
+
- [Plugin manifest](/plugins/manifest) - `cliBackends` and setup descriptors
|
|
310
|
+
- [Agent harness](/plugins/sdk-agent-harness) - full external agent runtimes
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Set up Codex Computer Use for Codex-mode Nodmix agents"
|
|
3
|
+
title: "Codex Computer Use"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want Codex-mode Nodmix agents to use Codex Computer Use
|
|
6
|
+
- You are deciding between Codex Computer Use, PeekabooBridge, and direct cua-driver MCP
|
|
7
|
+
- You are deciding between Codex Computer Use and a direct cua-driver MCP setup
|
|
8
|
+
- You are configuring computerUse for the bundled Codex plugin
|
|
9
|
+
- You are troubleshooting /codex computer-use status or install
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
Computer Use is a Codex-native MCP plugin for local desktop control. Nodmix
|
|
13
|
+
does not vendor the desktop app, execute desktop actions itself, or bypass
|
|
14
|
+
Codex permissions. The bundled `codex` plugin only prepares Codex app-server:
|
|
15
|
+
it enables Codex plugin support, finds or installs the configured Codex
|
|
16
|
+
Computer Use plugin, checks that the `computer-use` MCP server is available, and
|
|
17
|
+
then lets Codex own the native MCP tool calls during Codex-mode turns.
|
|
18
|
+
|
|
19
|
+
Use this page when Nodmix is already using the native Codex harness. For the
|
|
20
|
+
runtime setup itself, see [Codex harness](/plugins/codex-harness).
|
|
21
|
+
|
|
22
|
+
## Nodmix.app and Peekaboo
|
|
23
|
+
|
|
24
|
+
Nodmix.app's Peekaboo integration is separate from Codex Computer Use. The
|
|
25
|
+
macOS app can host a PeekabooBridge socket so the `peekaboo` CLI can reuse the
|
|
26
|
+
app's local Accessibility and Screen Recording grants for Peekaboo's own
|
|
27
|
+
automation tools. That bridge does not install or proxy Codex Computer Use, and
|
|
28
|
+
Codex Computer Use does not call through the PeekabooBridge socket.
|
|
29
|
+
|
|
30
|
+
Use [Peekaboo bridge](/platforms/mac/peekaboo) when you want Nodmix.app to be
|
|
31
|
+
a permission-aware host for Peekaboo CLI automation. Use this page when a
|
|
32
|
+
Codex-mode Nodmix agent should have Codex's native `computer-use` MCP plugin
|
|
33
|
+
available before the turn starts.
|
|
34
|
+
|
|
35
|
+
## iOS app
|
|
36
|
+
|
|
37
|
+
The iOS app is separate from Codex Computer Use. It does not install or proxy
|
|
38
|
+
the Codex `computer-use` MCP server and it is not a desktop-control backend.
|
|
39
|
+
Instead, the iOS app connects as an Nodmix node and exposes mobile
|
|
40
|
+
capabilities through node commands such as `canvas.*`, `camera.*`, `screen.*`,
|
|
41
|
+
`location.*`, and `talk.*`.
|
|
42
|
+
|
|
43
|
+
Use [iOS](/platforms/ios) when you want an agent to drive an iPhone node through
|
|
44
|
+
the gateway. Use this page when a Codex-mode agent should control the local
|
|
45
|
+
macOS desktop through Codex's native Computer Use plugin.
|
|
46
|
+
|
|
47
|
+
## Direct cua-driver MCP
|
|
48
|
+
|
|
49
|
+
Codex Computer Use is not the only way to expose desktop control. If you want
|
|
50
|
+
Nodmix-managed runtimes to call TryCua's driver directly, use the upstream
|
|
51
|
+
`cua-driver mcp` server through Nodmix's MCP registry instead of the
|
|
52
|
+
Codex-specific marketplace flow.
|
|
53
|
+
|
|
54
|
+
After installing `cua-driver`, either ask it for the Nodmix command:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
cua-driver mcp-config --client nodmix
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
or register the stdio server yourself:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
nodmix mcp set cua-driver '{"command":"cua-driver","args":["mcp"]}'
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
That path keeps the upstream MCP tool surface intact, including the driver
|
|
67
|
+
schemas and structured MCP responses. Use it when you want the CUA driver
|
|
68
|
+
available as a normal Nodmix MCP server. Use the Codex Computer Use setup on
|
|
69
|
+
this page when Codex app-server should own plugin installation, MCP reloads,
|
|
70
|
+
and native tool calls inside Codex-mode turns.
|
|
71
|
+
|
|
72
|
+
CUA's driver is macOS-specific and still requires the local macOS permissions
|
|
73
|
+
that its app prompts for, such as Accessibility and Screen Recording. Nodmix
|
|
74
|
+
does not install `cua-driver`, grant those permissions, or bypass the upstream
|
|
75
|
+
driver's safety model.
|
|
76
|
+
|
|
77
|
+
## Quick setup
|
|
78
|
+
|
|
79
|
+
Set `plugins.entries.codex.config.computerUse` when Codex-mode turns must have
|
|
80
|
+
Computer Use available before a thread starts:
|
|
81
|
+
|
|
82
|
+
```json5
|
|
83
|
+
{
|
|
84
|
+
plugins: {
|
|
85
|
+
entries: {
|
|
86
|
+
codex: {
|
|
87
|
+
enabled: true,
|
|
88
|
+
config: {
|
|
89
|
+
computerUse: {
|
|
90
|
+
autoInstall: true,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
agents: {
|
|
97
|
+
defaults: {
|
|
98
|
+
model: "openai/gpt-5.5",
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
With this config, Nodmix checks Codex app-server before each Codex-mode turn.
|
|
105
|
+
If Computer Use is missing but Codex app-server has already discovered an
|
|
106
|
+
installable marketplace, Nodmix asks Codex app-server to install or re-enable
|
|
107
|
+
the plugin and reload MCP servers. On macOS, when no matching marketplace is
|
|
108
|
+
registered and the standard Codex app bundle exists, Nodmix also tries to
|
|
109
|
+
register the bundled Codex marketplace from
|
|
110
|
+
`/Applications/Codex.app/Contents/Resources/plugins/openai-bundled` before it
|
|
111
|
+
fails. If setup still cannot make the MCP server available, the turn fails
|
|
112
|
+
before the thread starts.
|
|
113
|
+
|
|
114
|
+
After changing Computer Use config, use `/new` or `/reset` in the affected chat
|
|
115
|
+
before testing if an existing Codex thread has already started.
|
|
116
|
+
|
|
117
|
+
## Commands
|
|
118
|
+
|
|
119
|
+
Use the `/codex computer-use` commands from any chat surface where the `codex`
|
|
120
|
+
plugin command surface is available. These are Nodmix chat/runtime commands,
|
|
121
|
+
not `nodmix codex ...` CLI subcommands:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
/codex computer-use status
|
|
125
|
+
/codex computer-use install
|
|
126
|
+
/codex computer-use install --source <marketplace-source>
|
|
127
|
+
/codex computer-use install --marketplace-path <path>
|
|
128
|
+
/codex computer-use install --marketplace <name>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
`status` is read-only. It does not add marketplace sources, install plugins, or
|
|
132
|
+
enable Codex plugin support.
|
|
133
|
+
|
|
134
|
+
`install` enables Codex app-server plugin support, optionally adds a configured
|
|
135
|
+
marketplace source, installs or re-enables the configured plugin through Codex
|
|
136
|
+
app-server, reloads MCP servers, and verifies that the MCP server exposes tools.
|
|
137
|
+
|
|
138
|
+
## Marketplace choices
|
|
139
|
+
|
|
140
|
+
Nodmix uses the same app-server API that Codex itself exposes. The
|
|
141
|
+
marketplace fields choose where Codex should find `computer-use`.
|
|
142
|
+
|
|
143
|
+
| Field | Use when | Install support |
|
|
144
|
+
| -------------------- | --------------------------------------------------------------- | -------------------------------------------------------- |
|
|
145
|
+
| No marketplace field | You want Codex app-server to use marketplaces it already knows. | Yes, when app-server returns a local marketplace. |
|
|
146
|
+
| `marketplaceSource` | You have a Codex marketplace source app-server can add. | Yes, for explicit `/codex computer-use install`. |
|
|
147
|
+
| `marketplacePath` | You already know the local marketplace file path on the host. | Yes, for explicit install and turn-start auto-install. |
|
|
148
|
+
| `marketplaceName` | You want to select one already registered marketplace by name. | Yes only when the selected marketplace has a local path. |
|
|
149
|
+
|
|
150
|
+
Fresh Codex homes may need a short moment to seed their official marketplaces.
|
|
151
|
+
During install, Nodmix polls `plugin/list` for up to
|
|
152
|
+
`marketplaceDiscoveryTimeoutMs` milliseconds. The default is 60 seconds.
|
|
153
|
+
|
|
154
|
+
If multiple known marketplaces contain Computer Use, Nodmix prefers
|
|
155
|
+
`openai-bundled`, then `openai-curated`, then `local`. Unknown ambiguous matches
|
|
156
|
+
fail closed and ask you to set `marketplaceName` or `marketplacePath`.
|
|
157
|
+
|
|
158
|
+
## Bundled macOS marketplace
|
|
159
|
+
|
|
160
|
+
Recent Codex desktop builds bundle Computer Use here:
|
|
161
|
+
|
|
162
|
+
```text
|
|
163
|
+
/Applications/Codex.app/Contents/Resources/plugins/openai-bundled/plugins/computer-use
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
When `computerUse.autoInstall` is true and no marketplace containing
|
|
167
|
+
`computer-use` is registered, Nodmix tries to add the standard bundled
|
|
168
|
+
marketplace root automatically:
|
|
169
|
+
|
|
170
|
+
```text
|
|
171
|
+
/Applications/Codex.app/Contents/Resources/plugins/openai-bundled
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
You can also register it explicitly from a shell with Codex:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
codex plugin marketplace add /Applications/Codex.app/Contents/Resources/plugins/openai-bundled
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
If you use a nonstandard Codex app path, set `computerUse.marketplacePath` to a
|
|
181
|
+
local marketplace file path or run `/codex computer-use install --source
|
|
182
|
+
<marketplace-source>` once.
|
|
183
|
+
|
|
184
|
+
## Remote catalog limit
|
|
185
|
+
|
|
186
|
+
Codex app-server can list and read remote-only catalog entries, but it does not
|
|
187
|
+
currently support remote `plugin/install`. That means `marketplaceName` can
|
|
188
|
+
select a remote-only marketplace for status checks, but installs and re-enables
|
|
189
|
+
still need a local marketplace via `marketplaceSource` or `marketplacePath`.
|
|
190
|
+
|
|
191
|
+
If status says the plugin is available in a remote Codex marketplace but remote
|
|
192
|
+
install is unsupported, run install with a local source or path:
|
|
193
|
+
|
|
194
|
+
```text
|
|
195
|
+
/codex computer-use install --source <marketplace-source>
|
|
196
|
+
/codex computer-use install --marketplace-path <path>
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Configuration reference
|
|
200
|
+
|
|
201
|
+
| Field | Default | Meaning |
|
|
202
|
+
| ------------------------------- | -------------- | ------------------------------------------------------------------------------ |
|
|
203
|
+
| `enabled` | inferred | Require Computer Use. Defaults to true when another Computer Use field is set. |
|
|
204
|
+
| `autoInstall` | false | Install or re-enable from already discovered marketplaces at turn start. |
|
|
205
|
+
| `marketplaceDiscoveryTimeoutMs` | 60000 | How long install waits for Codex app-server marketplace discovery. |
|
|
206
|
+
| `marketplaceSource` | unset | Source string passed to Codex app-server `marketplace/add`. |
|
|
207
|
+
| `marketplacePath` | unset | Local Codex marketplace file path containing the plugin. |
|
|
208
|
+
| `marketplaceName` | unset | Registered Codex marketplace name to select. |
|
|
209
|
+
| `pluginName` | `computer-use` | Codex marketplace plugin name. |
|
|
210
|
+
| `mcpServerName` | `computer-use` | MCP server name exposed by the installed plugin. |
|
|
211
|
+
|
|
212
|
+
Turn-start auto-install intentionally refuses configured `marketplaceSource`
|
|
213
|
+
values. Adding a new source is an explicit setup operation, so use
|
|
214
|
+
`/codex computer-use install --source <marketplace-source>` once, then let
|
|
215
|
+
`autoInstall` handle future re-enables from discovered local marketplaces.
|
|
216
|
+
Turn-start auto-install can use a configured `marketplacePath`, because that is
|
|
217
|
+
already a local path on the host.
|
|
218
|
+
|
|
219
|
+
## What Nodmix checks
|
|
220
|
+
|
|
221
|
+
Nodmix reports a stable setup reason internally and formats the user-facing
|
|
222
|
+
status for chat:
|
|
223
|
+
|
|
224
|
+
| Reason | Meaning | Next step |
|
|
225
|
+
| ---------------------------- | ------------------------------------------------------ | --------------------------------------------- |
|
|
226
|
+
| `disabled` | `computerUse.enabled` resolved to false. | Set `enabled` or another Computer Use field. |
|
|
227
|
+
| `marketplace_missing` | No matching marketplace was available. | Configure source, path, or marketplace name. |
|
|
228
|
+
| `plugin_not_installed` | Marketplace exists, but the plugin is not installed. | Run install or enable `autoInstall`. |
|
|
229
|
+
| `plugin_disabled` | Plugin is installed but disabled in Codex config. | Run install to re-enable it. |
|
|
230
|
+
| `remote_install_unsupported` | Selected marketplace is remote-only. | Use `marketplaceSource` or `marketplacePath`. |
|
|
231
|
+
| `mcp_missing` | Plugin is enabled, but the MCP server is unavailable. | Check Codex Computer Use and OS permissions. |
|
|
232
|
+
| `ready` | Plugin and MCP tools are available. | Start the Codex-mode turn. |
|
|
233
|
+
| `check_failed` | A Codex app-server request failed during status check. | Check app-server connectivity and logs. |
|
|
234
|
+
| `auto_install_blocked` | Turn-start setup would need to add a new source. | Run explicit install first. |
|
|
235
|
+
|
|
236
|
+
The chat output includes the plugin state, MCP server state, marketplace, tools
|
|
237
|
+
when available, and the specific message for the failing setup step.
|
|
238
|
+
|
|
239
|
+
## macOS permissions
|
|
240
|
+
|
|
241
|
+
Computer Use is macOS-specific. The Codex-owned MCP server may need local OS
|
|
242
|
+
permissions before it can inspect or control apps. If Nodmix says Computer Use
|
|
243
|
+
is installed but the MCP server is unavailable, verify the Codex-side Computer
|
|
244
|
+
Use setup first:
|
|
245
|
+
|
|
246
|
+
- Codex app-server is running on the same host where desktop control should
|
|
247
|
+
happen.
|
|
248
|
+
- The Computer Use plugin is enabled in Codex config.
|
|
249
|
+
- The `computer-use` MCP server appears in Codex app-server MCP status.
|
|
250
|
+
- macOS has granted the required permissions for the desktop-control app.
|
|
251
|
+
- The current host session can access the desktop being controlled.
|
|
252
|
+
|
|
253
|
+
Nodmix intentionally fails closed when `computerUse.enabled` is true. A
|
|
254
|
+
Codex-mode turn should not silently proceed without the native desktop tools
|
|
255
|
+
that the config required.
|
|
256
|
+
|
|
257
|
+
## Troubleshooting
|
|
258
|
+
|
|
259
|
+
**Status says not installed.** Run `/codex computer-use install`. If the
|
|
260
|
+
marketplace is not discovered, pass `--source` or `--marketplace-path`.
|
|
261
|
+
|
|
262
|
+
**Status says installed but disabled.** Run `/codex computer-use install` again.
|
|
263
|
+
Codex app-server install writes the plugin config back to enabled.
|
|
264
|
+
|
|
265
|
+
**Status says remote install is unsupported.** Use a local marketplace source or
|
|
266
|
+
path. Remote-only catalog entries can be inspected but not installed through the
|
|
267
|
+
current app-server API.
|
|
268
|
+
|
|
269
|
+
**Status says the MCP server is unavailable.** Re-run install once so MCP
|
|
270
|
+
servers reload. If it remains unavailable, fix the Codex Computer Use app,
|
|
271
|
+
Codex app-server MCP status, or macOS permissions.
|
|
272
|
+
|
|
273
|
+
**Status or a probe times out on `computer-use.list_apps`.** The plugin and MCP
|
|
274
|
+
server are present, but the local Computer Use bridge did not answer. Quit or
|
|
275
|
+
restart Codex Computer Use, relaunch Codex Desktop if needed, then retry in a
|
|
276
|
+
fresh Nodmix session.
|
|
277
|
+
|
|
278
|
+
**A Computer Use tool says `Native hook relay unavailable`.** The Codex-native
|
|
279
|
+
tool hook could not reach an active Nodmix relay through the local bridge or
|
|
280
|
+
Gateway fallback. Start a fresh Nodmix session with `/new` or `/reset`. If it
|
|
281
|
+
keeps happening, restart the gateway so old app-server threads and hook
|
|
282
|
+
registrations are dropped, then retry.
|
|
283
|
+
|
|
284
|
+
**Turn-start auto-install refuses a source.** This is intentional. Add the
|
|
285
|
+
source with explicit `/codex computer-use install --source <marketplace-source>`
|
|
286
|
+
first, then future turn-start auto-install can use the discovered local
|
|
287
|
+
marketplace.
|
|
288
|
+
|
|
289
|
+
## Related
|
|
290
|
+
|
|
291
|
+
- [Codex harness](/plugins/codex-harness)
|
|
292
|
+
- [Peekaboo bridge](/platforms/mac/peekaboo)
|
|
293
|
+
- [iOS app](/platforms/ios)
|