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,409 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Configuration, auth, discovery, and app-server reference for the Codex harness"
|
|
3
|
+
title: "Codex harness reference"
|
|
4
|
+
read_when:
|
|
5
|
+
- You need every Codex harness config field
|
|
6
|
+
- You are changing app-server transport, auth, discovery, or timeout behavior
|
|
7
|
+
- You are debugging Codex harness startup, model discovery, or environment isolation
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
This reference covers the detailed configuration for the bundled `codex`
|
|
11
|
+
plugin. For setup and routing decisions, start with
|
|
12
|
+
[Codex harness](/plugins/codex-harness).
|
|
13
|
+
|
|
14
|
+
## Plugin config surface
|
|
15
|
+
|
|
16
|
+
All Codex harness settings live under `plugins.entries.codex.config`.
|
|
17
|
+
|
|
18
|
+
```json5
|
|
19
|
+
{
|
|
20
|
+
plugins: {
|
|
21
|
+
entries: {
|
|
22
|
+
codex: {
|
|
23
|
+
enabled: true,
|
|
24
|
+
config: {
|
|
25
|
+
discovery: {
|
|
26
|
+
enabled: true,
|
|
27
|
+
timeoutMs: 2500,
|
|
28
|
+
},
|
|
29
|
+
appServer: {
|
|
30
|
+
mode: "guardian",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Supported top-level fields:
|
|
40
|
+
|
|
41
|
+
| Field | Default | Meaning |
|
|
42
|
+
| -------------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
43
|
+
| `discovery` | enabled | Model discovery settings for Codex app-server `model/list`. |
|
|
44
|
+
| `appServer` | managed stdio app-server | Transport, command, auth, approval, sandbox, and timeout settings. |
|
|
45
|
+
| `codexDynamicToolsLoading` | `"searchable"` | Use `"direct"` to put Nodmix dynamic tools directly in the initial Codex tool context. |
|
|
46
|
+
| `codexDynamicToolsExclude` | `[]` | Additional Nodmix dynamic tool names to omit from Codex app-server turns. |
|
|
47
|
+
| `codexPlugins` | disabled | Native Codex plugin/app support for migrated source-installed curated plugins. See [Native Codex plugins](/plugins/codex-native-plugins). |
|
|
48
|
+
| `computerUse` | disabled | Codex Computer Use setup. See [Codex Computer Use](/plugins/codex-computer-use). |
|
|
49
|
+
|
|
50
|
+
## App-server transport
|
|
51
|
+
|
|
52
|
+
By default, Nodmix starts the managed Codex binary shipped with the bundled
|
|
53
|
+
plugin:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
codex app-server --listen stdio://
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
This keeps the app-server version tied to the bundled `codex` plugin instead of
|
|
60
|
+
whichever separate Codex CLI happens to be installed locally. Set
|
|
61
|
+
`appServer.command` only when you intentionally want to run a different
|
|
62
|
+
executable.
|
|
63
|
+
|
|
64
|
+
For an already-running app-server, use WebSocket transport:
|
|
65
|
+
|
|
66
|
+
```json5
|
|
67
|
+
{
|
|
68
|
+
plugins: {
|
|
69
|
+
entries: {
|
|
70
|
+
codex: {
|
|
71
|
+
enabled: true,
|
|
72
|
+
config: {
|
|
73
|
+
appServer: {
|
|
74
|
+
transport: "websocket",
|
|
75
|
+
url: "ws://gateway-host:39175",
|
|
76
|
+
authToken: "${CODEX_APP_SERVER_TOKEN}",
|
|
77
|
+
requestTimeoutMs: 60000,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Supported `appServer` fields:
|
|
87
|
+
|
|
88
|
+
| Field | Default | Meaning |
|
|
89
|
+
| ----------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
90
|
+
| `transport` | `"stdio"` | `"stdio"` spawns Codex; `"websocket"` connects to `url`. |
|
|
91
|
+
| `command` | managed Codex binary | Executable for stdio transport. Leave unset to use the managed binary. |
|
|
92
|
+
| `args` | `["app-server", "--listen", "stdio://"]` | Arguments for stdio transport. |
|
|
93
|
+
| `url` | unset | WebSocket app-server URL. |
|
|
94
|
+
| `authToken` | unset | Bearer token for WebSocket transport. |
|
|
95
|
+
| `headers` | `{}` | Extra WebSocket headers. |
|
|
96
|
+
| `clearEnv` | `[]` | Extra environment variable names removed from the spawned stdio app-server process after Nodmix builds its inherited environment. |
|
|
97
|
+
| `requestTimeoutMs` | `60000` | Timeout for app-server control-plane calls. |
|
|
98
|
+
| `turnCompletionIdleTimeoutMs` | `60000` | Quiet window after Codex accepts a turn or after a turn-scoped app-server request while Nodmix waits for `turn/completed`. |
|
|
99
|
+
| `mode` | `"yolo"` unless local Codex requirements disallow YOLO | Preset for YOLO or guardian-reviewed execution. |
|
|
100
|
+
| `approvalPolicy` | `"never"` or an allowed guardian approval policy | Native Codex approval policy sent to thread start, resume, and turn. |
|
|
101
|
+
| `sandbox` | `"danger-full-access"` or an allowed guardian sandbox | Native Codex sandbox mode sent to thread start and resume. Active Nodmix sandboxes narrow `danger-full-access` turns to Codex `workspace-write`; the turn network flag follows Nodmix sandbox egress. |
|
|
102
|
+
| `approvalsReviewer` | `"user"` or an allowed guardian reviewer | Use `"auto_review"` to let Codex review native approval prompts when allowed. |
|
|
103
|
+
| `defaultWorkspaceDir` | current process directory | Workspace used by `/codex bind` when `--cwd` is omitted. |
|
|
104
|
+
| `serviceTier` | unset | Optional Codex app-server service tier. `"priority"` enables fast-mode routing, `"flex"` requests flex processing, and `null` clears the override. Legacy `"fast"` is accepted as `"priority"`. |
|
|
105
|
+
|
|
106
|
+
The plugin blocks older or unversioned app-server handshakes. Codex app-server
|
|
107
|
+
must report stable version `0.125.0` or newer.
|
|
108
|
+
|
|
109
|
+
## Approval and sandbox modes
|
|
110
|
+
|
|
111
|
+
Local stdio app-server sessions default to YOLO mode:
|
|
112
|
+
`approvalPolicy: "never"`, `approvalsReviewer: "user"`, and
|
|
113
|
+
`sandbox: "danger-full-access"`. This trusted local operator posture lets
|
|
114
|
+
unattended Nodmix turns and heartbeats make progress without native approval
|
|
115
|
+
prompts that nobody is around to answer.
|
|
116
|
+
|
|
117
|
+
If Codex's local system requirements file disallows implicit YOLO approval,
|
|
118
|
+
reviewer, or sandbox values, Nodmix treats the implicit default as guardian
|
|
119
|
+
instead and selects allowed guardian permissions. Hostname-matching
|
|
120
|
+
`[[remote_sandbox_config]]` entries in the same requirements file are honored
|
|
121
|
+
for the sandbox default decision.
|
|
122
|
+
|
|
123
|
+
Set `appServer.mode: "guardian"` for Codex guardian-reviewed approvals:
|
|
124
|
+
|
|
125
|
+
```json5
|
|
126
|
+
{
|
|
127
|
+
plugins: {
|
|
128
|
+
entries: {
|
|
129
|
+
codex: {
|
|
130
|
+
enabled: true,
|
|
131
|
+
config: {
|
|
132
|
+
appServer: {
|
|
133
|
+
mode: "guardian",
|
|
134
|
+
serviceTier: "priority",
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The `guardian` preset expands to `approvalPolicy: "on-request"`,
|
|
144
|
+
`approvalsReviewer: "auto_review"`, and `sandbox: "workspace-write"` when those
|
|
145
|
+
values are allowed. Individual policy fields override `mode`. The older
|
|
146
|
+
`guardian_subagent` reviewer value is still accepted as a compatibility alias,
|
|
147
|
+
but new configs should use `auto_review`.
|
|
148
|
+
|
|
149
|
+
When an Nodmix sandbox is active, the local Codex app-server process still
|
|
150
|
+
runs on the Gateway host. Nodmix therefore keeps Codex's own filesystem
|
|
151
|
+
sandbox for native code-mode turns. `danger-full-access` turns are narrowed to
|
|
152
|
+
Codex `workspace-write`, and `workspace-write` turn `networkAccess` is derived
|
|
153
|
+
from the Nodmix sandbox egress setting: Docker `network: "none"` stays
|
|
154
|
+
offline, while `network: "bridge"` or a custom Docker network permits outbound
|
|
155
|
+
access.
|
|
156
|
+
|
|
157
|
+
On Ubuntu/AppArmor hosts, Codex bwrap can fail under `workspace-write` before
|
|
158
|
+
the shell command starts. If you see
|
|
159
|
+
`bwrap: setting up uid map: Permission denied` or
|
|
160
|
+
`bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted`, run
|
|
161
|
+
`nodmix doctor` and fix the reported host namespace policy for the Nodmix
|
|
162
|
+
service user rather than granting broader Docker container privileges. Prefer
|
|
163
|
+
a scoped AppArmor profile for the service process; the
|
|
164
|
+
`kernel.apparmor_restrict_unprivileged_userns=0` fallback is host-wide and has
|
|
165
|
+
security tradeoffs.
|
|
166
|
+
|
|
167
|
+
## Auth and environment isolation
|
|
168
|
+
|
|
169
|
+
Auth is selected in this order:
|
|
170
|
+
|
|
171
|
+
1. An explicit Nodmix Codex auth profile for the agent.
|
|
172
|
+
2. The app-server's existing account in that agent's Codex home.
|
|
173
|
+
3. For local stdio app-server launches only, `CODEX_API_KEY`, then
|
|
174
|
+
`OPENAI_API_KEY`, when no app-server account is present and OpenAI auth is
|
|
175
|
+
still required.
|
|
176
|
+
|
|
177
|
+
When Nodmix sees a ChatGPT subscription-style Codex auth profile, it removes
|
|
178
|
+
`CODEX_API_KEY` and `OPENAI_API_KEY` from the spawned Codex child process. That
|
|
179
|
+
keeps Gateway-level API keys available for embeddings or direct OpenAI models
|
|
180
|
+
without making native Codex app-server turns bill through the API by accident.
|
|
181
|
+
|
|
182
|
+
Explicit Codex API-key profiles and local stdio env-key fallback use app-server
|
|
183
|
+
login instead of inherited child-process env. WebSocket app-server connections
|
|
184
|
+
do not receive Gateway env API-key fallback; use an explicit auth profile or the
|
|
185
|
+
remote app-server's own account.
|
|
186
|
+
|
|
187
|
+
Stdio app-server launches inherit Nodmix's process environment by default.
|
|
188
|
+
Nodmix owns the Codex app-server account bridge and sets `CODEX_HOME` to a
|
|
189
|
+
per-agent directory under that agent's Nodmix state. That keeps Codex config,
|
|
190
|
+
accounts, plugin cache/data, and thread state scoped to the Nodmix agent
|
|
191
|
+
instead of leaking in from the operator's personal `~/.codex` home.
|
|
192
|
+
|
|
193
|
+
Nodmix does not rewrite `HOME` for normal local app-server launches. Codex-run
|
|
194
|
+
subprocesses such as `nodmix`, `gh`, `git`, cloud CLIs, and shell commands see
|
|
195
|
+
the normal process home and can find user-home config and tokens. Codex may also
|
|
196
|
+
discover `$HOME/.agents/skills` and `$HOME/.agents/plugins/marketplace.json`;
|
|
197
|
+
that `.agents` discovery is intentionally shared with the operator home and is
|
|
198
|
+
separate from isolated `~/.codex` state.
|
|
199
|
+
|
|
200
|
+
Nodmix plugins and Nodmix skill snapshots still flow through Nodmix's own
|
|
201
|
+
plugin registry and skill loader. Personal Codex `~/.codex` assets do not. If
|
|
202
|
+
you have useful Codex CLI skills or plugins from a Codex home that should become
|
|
203
|
+
part of an Nodmix agent, inventory them explicitly:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
nodmix migrate codex --dry-run
|
|
207
|
+
nodmix migrate apply codex --yes
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
If a deployment needs additional environment isolation, add those variables to
|
|
211
|
+
`appServer.clearEnv`:
|
|
212
|
+
|
|
213
|
+
```json5
|
|
214
|
+
{
|
|
215
|
+
plugins: {
|
|
216
|
+
entries: {
|
|
217
|
+
codex: {
|
|
218
|
+
enabled: true,
|
|
219
|
+
config: {
|
|
220
|
+
appServer: {
|
|
221
|
+
clearEnv: ["CODEX_API_KEY", "OPENAI_API_KEY"],
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
`appServer.clearEnv` only affects the spawned Codex app-server child process.
|
|
231
|
+
Nodmix removes `CODEX_HOME` and `HOME` from this list during local launch
|
|
232
|
+
normalization: `CODEX_HOME` stays per-agent, and `HOME` stays inherited so
|
|
233
|
+
subprocesses can use normal user-home state.
|
|
234
|
+
|
|
235
|
+
## Dynamic tools
|
|
236
|
+
|
|
237
|
+
Codex dynamic tools default to `searchable` loading. Nodmix does not expose
|
|
238
|
+
dynamic tools that duplicate Codex-native workspace operations:
|
|
239
|
+
|
|
240
|
+
- `read`
|
|
241
|
+
- `write`
|
|
242
|
+
- `edit`
|
|
243
|
+
- `apply_patch`
|
|
244
|
+
- `exec`
|
|
245
|
+
- `process`
|
|
246
|
+
- `update_plan`
|
|
247
|
+
|
|
248
|
+
Most remaining Nodmix integration tools, such as messaging, media, cron,
|
|
249
|
+
browser, nodes, gateway, `heartbeat_respond`, and `web_search`, are available
|
|
250
|
+
through Codex tool search under the `nodmix` namespace. This keeps the initial
|
|
251
|
+
model context smaller. `sessions_yield` and message-tool-only source replies
|
|
252
|
+
stay direct because those are turn-control contracts. `sessions_spawn` stays
|
|
253
|
+
searchable so Codex's native `spawn_agent` remains the primary Codex subagent
|
|
254
|
+
surface, while explicit Nodmix or ACP delegation is still available through
|
|
255
|
+
the `nodmix` dynamic tool namespace.
|
|
256
|
+
|
|
257
|
+
Set `codexDynamicToolsLoading: "direct"` only when connecting to a custom Codex
|
|
258
|
+
app-server that cannot search deferred dynamic tools or when debugging the full
|
|
259
|
+
tool payload.
|
|
260
|
+
|
|
261
|
+
## Timeouts
|
|
262
|
+
|
|
263
|
+
Nodmix-owned dynamic tool calls are bounded independently from
|
|
264
|
+
`appServer.requestTimeoutMs`. Each Codex `item/tool/call` request uses the first
|
|
265
|
+
available timeout in this order:
|
|
266
|
+
|
|
267
|
+
- A positive per-call `timeoutMs` argument.
|
|
268
|
+
- For `image_generate`, `agents.defaults.imageGenerationModel.timeoutMs`.
|
|
269
|
+
- For `image_generate` without a configured timeout, the 120 second
|
|
270
|
+
image-generation default.
|
|
271
|
+
- For the media-understanding `image` tool, `tools.media.image.timeoutSeconds`
|
|
272
|
+
converted to milliseconds, or the 60 second media default.
|
|
273
|
+
- The 30 second dynamic-tool default.
|
|
274
|
+
|
|
275
|
+
Dynamic tool budgets are capped at 600000 ms. On timeout, Nodmix aborts the
|
|
276
|
+
tool signal where supported and returns a failed dynamic-tool response to Codex
|
|
277
|
+
so the turn can continue instead of leaving the session in `processing`.
|
|
278
|
+
|
|
279
|
+
After Codex accepts a turn, and after Nodmix responds to a turn-scoped
|
|
280
|
+
app-server request, the harness expects Codex to make current-turn progress and
|
|
281
|
+
eventually finish the native turn with `turn/completed`. If the app-server goes
|
|
282
|
+
quiet for `appServer.turnCompletionIdleTimeoutMs`, Nodmix best-effort
|
|
283
|
+
interrupts the Codex turn, records a diagnostic timeout, and releases the
|
|
284
|
+
Nodmix session lane so follow-up chat messages are not queued behind a stale
|
|
285
|
+
native turn.
|
|
286
|
+
|
|
287
|
+
Most non-terminal notifications for the same turn disarm that short watchdog
|
|
288
|
+
because Codex has proven the turn is still alive. Raw `custom_tool_call_output`
|
|
289
|
+
completions keep the short post-tool watchdog armed because they are the
|
|
290
|
+
turn-scoped tool-result handoff. Completed `agentMessage` items and pre-tool raw
|
|
291
|
+
assistant `rawResponseItem/completed` items arm the assistant-output release: if
|
|
292
|
+
Codex then goes quiet without `turn/completed`, Nodmix best-effort interrupts
|
|
293
|
+
the native turn and releases the session lane. Post-tool raw assistant progress
|
|
294
|
+
keeps waiting for `turn/completed` or the terminal watchdog. Timeout diagnostics
|
|
295
|
+
include the last app-server notification method and, for raw assistant response
|
|
296
|
+
items, the item type, role, id, and a bounded assistant text preview.
|
|
297
|
+
|
|
298
|
+
## Model discovery
|
|
299
|
+
|
|
300
|
+
By default, the Codex plugin asks the app-server for available models. Model
|
|
301
|
+
availability is owned by Codex app-server, so the list can change when Nodmix
|
|
302
|
+
upgrades the bundled `@openai/codex` version or when a deployment points
|
|
303
|
+
`appServer.command` at a different Codex binary. Availability can also be
|
|
304
|
+
account-scoped. Use `/codex models` on a running gateway to see the live catalog
|
|
305
|
+
for that harness and account.
|
|
306
|
+
|
|
307
|
+
If discovery fails or times out, Nodmix uses a bundled fallback catalog for:
|
|
308
|
+
|
|
309
|
+
- GPT-5.5
|
|
310
|
+
- GPT-5.4 mini
|
|
311
|
+
- GPT-5.2
|
|
312
|
+
|
|
313
|
+
The current bundled harness is `@openai/codex` `0.132.0`. A `model/list` probe
|
|
314
|
+
against that bundled app-server returned:
|
|
315
|
+
|
|
316
|
+
| Model id | Default | Hidden | Input modalities | Reasoning efforts |
|
|
317
|
+
| ------------------- | ------- | ------ | ---------------- | ------------------------ |
|
|
318
|
+
| `gpt-5.5` | Yes | No | text, image | low, medium, high, xhigh |
|
|
319
|
+
| `gpt-5.4` | No | No | text, image | low, medium, high, xhigh |
|
|
320
|
+
| `gpt-5.4-mini` | No | No | text, image | low, medium, high, xhigh |
|
|
321
|
+
| `gpt-5.3-codex` | No | No | text, image | low, medium, high, xhigh |
|
|
322
|
+
| `gpt-5.2` | No | No | text, image | low, medium, high, xhigh |
|
|
323
|
+
| `codex-auto-review` | No | Yes | text, image | low, medium, high, xhigh |
|
|
324
|
+
|
|
325
|
+
Hidden models can be returned by the app-server catalog for internal or
|
|
326
|
+
specialized flows, but they are not normal model-picker choices.
|
|
327
|
+
|
|
328
|
+
Tune discovery under `plugins.entries.codex.config.discovery`:
|
|
329
|
+
|
|
330
|
+
```json5
|
|
331
|
+
{
|
|
332
|
+
plugins: {
|
|
333
|
+
entries: {
|
|
334
|
+
codex: {
|
|
335
|
+
enabled: true,
|
|
336
|
+
config: {
|
|
337
|
+
discovery: {
|
|
338
|
+
enabled: true,
|
|
339
|
+
timeoutMs: 2500,
|
|
340
|
+
},
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Disable discovery when you want startup to avoid probing Codex and use only the
|
|
349
|
+
fallback catalog:
|
|
350
|
+
|
|
351
|
+
```json5
|
|
352
|
+
{
|
|
353
|
+
plugins: {
|
|
354
|
+
entries: {
|
|
355
|
+
codex: {
|
|
356
|
+
enabled: true,
|
|
357
|
+
config: {
|
|
358
|
+
discovery: {
|
|
359
|
+
enabled: false,
|
|
360
|
+
},
|
|
361
|
+
},
|
|
362
|
+
},
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
## Workspace bootstrap files
|
|
369
|
+
|
|
370
|
+
Codex handles `AGENTS.md` itself through native project-doc discovery. Nodmix
|
|
371
|
+
does not write synthetic Codex project-doc files or depend on Codex fallback
|
|
372
|
+
filenames for persona files, because Codex fallbacks only apply when
|
|
373
|
+
`AGENTS.md` is missing.
|
|
374
|
+
|
|
375
|
+
For Nodmix workspace parity, the Codex harness resolves the other bootstrap
|
|
376
|
+
files. `SOUL.md`, `IDENTITY.md`, `TOOLS.md`, and `USER.md` are forwarded as
|
|
377
|
+
Nodmix Codex developer instructions because they define the active agent,
|
|
378
|
+
available workspace guidance, and user profile. `HEARTBEAT.md` content is not
|
|
379
|
+
injected; heartbeat turns get a collaboration-mode pointer to read the file when
|
|
380
|
+
it exists and is non-empty. `BOOTSTRAP.md` and `MEMORY.md` when present are
|
|
381
|
+
forwarded as Nodmix turn input reference context.
|
|
382
|
+
|
|
383
|
+
## Environment overrides
|
|
384
|
+
|
|
385
|
+
Environment overrides remain available for local testing:
|
|
386
|
+
|
|
387
|
+
- `NODMIX_CODEX_APP_SERVER_BIN`
|
|
388
|
+
- `NODMIX_CODEX_APP_SERVER_ARGS`
|
|
389
|
+
- `NODMIX_CODEX_APP_SERVER_MODE=yolo|guardian`
|
|
390
|
+
- `NODMIX_CODEX_APP_SERVER_APPROVAL_POLICY`
|
|
391
|
+
- `NODMIX_CODEX_APP_SERVER_SANDBOX`
|
|
392
|
+
|
|
393
|
+
`NODMIX_CODEX_APP_SERVER_BIN` bypasses the managed binary when
|
|
394
|
+
`appServer.command` is unset.
|
|
395
|
+
|
|
396
|
+
`NODMIX_CODEX_APP_SERVER_GUARDIAN=1` was removed. Use
|
|
397
|
+
`plugins.entries.codex.config.appServer.mode: "guardian"` instead, or
|
|
398
|
+
`NODMIX_CODEX_APP_SERVER_MODE=guardian` for one-off local testing. Config is
|
|
399
|
+
preferred for repeatable deployments because it keeps the plugin behavior in the
|
|
400
|
+
same reviewed file as the rest of the Codex harness setup.
|
|
401
|
+
|
|
402
|
+
## Related
|
|
403
|
+
|
|
404
|
+
- [Codex harness](/plugins/codex-harness)
|
|
405
|
+
- [Codex harness runtime](/plugins/codex-harness-runtime)
|
|
406
|
+
- [Native Codex plugins](/plugins/codex-native-plugins)
|
|
407
|
+
- [Codex Computer Use](/plugins/codex-computer-use)
|
|
408
|
+
- [OpenAI provider](/providers/openai)
|
|
409
|
+
- [Configuration reference](/gateway/configuration-reference)
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Runtime boundaries, hooks, tools, permissions, and diagnostics for the Codex harness"
|
|
3
|
+
title: "Codex harness runtime"
|
|
4
|
+
read_when:
|
|
5
|
+
- You need the Codex harness runtime support contract
|
|
6
|
+
- You are debugging native Codex tools, hooks, compaction, or feedback upload
|
|
7
|
+
- You are changing plugin behavior across PI and Codex harness turns
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
This page documents the runtime contract for Codex harness turns. For setup and
|
|
11
|
+
routing, start with [Codex harness](/plugins/codex-harness). For config fields,
|
|
12
|
+
see [Codex harness reference](/plugins/codex-harness-reference).
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
Codex mode is not PI with a different model call underneath. Codex owns more of
|
|
17
|
+
the native model loop, and Nodmix adapts its plugin, tool, session, and
|
|
18
|
+
diagnostic surfaces around that boundary.
|
|
19
|
+
|
|
20
|
+
Nodmix still owns channel routing, session files, visible message delivery,
|
|
21
|
+
Nodmix dynamic tools, approvals, media delivery, and a transcript mirror.
|
|
22
|
+
Codex owns the canonical native thread, native model loop, native tool
|
|
23
|
+
continuation, and native compaction unless the active Nodmix context engine
|
|
24
|
+
declares that it owns compaction.
|
|
25
|
+
|
|
26
|
+
Prompt routing follows the selected runtime, not just the provider string. A
|
|
27
|
+
native Codex turn receives Codex app-server developer instructions, while an
|
|
28
|
+
explicit PI compatibility route keeps the normal Nodmix/PI system prompt even
|
|
29
|
+
when it uses Codex-flavored OpenAI auth or transport.
|
|
30
|
+
|
|
31
|
+
Native Codex keeps Codex-owned base/model/personality instructions and
|
|
32
|
+
project-doc behavior according to the active Codex thread config. Lightweight
|
|
33
|
+
Nodmix runs still preserve their existing project-doc suppression. Nodmix
|
|
34
|
+
developer instructions cover Nodmix runtime concerns such as source-channel
|
|
35
|
+
delivery, Nodmix dynamic tools, ACP delegation, adapter context, and the
|
|
36
|
+
active agent workspace profile files. Nodmix skill catalogs plus `MEMORY.md`
|
|
37
|
+
and active `BOOTSTRAP.md` content are projected as turn input reference context
|
|
38
|
+
for native Codex.
|
|
39
|
+
|
|
40
|
+
## Thread bindings and model changes
|
|
41
|
+
|
|
42
|
+
When an Nodmix session is attached to an existing Codex thread, the next turn
|
|
43
|
+
sends the currently selected OpenAI model, approval policy, sandbox, and service
|
|
44
|
+
tier to app-server again. Switching from `openai/gpt-5.5` to
|
|
45
|
+
`openai/gpt-5.2` keeps the thread binding but asks Codex to continue with the
|
|
46
|
+
newly selected model.
|
|
47
|
+
|
|
48
|
+
## Visible replies and heartbeats
|
|
49
|
+
|
|
50
|
+
When a direct/source chat turn runs through the Codex harness, visible replies
|
|
51
|
+
default to the message tool: final assistant text stays private unless the
|
|
52
|
+
agent calls `message(action="send")`. This matches GPT models well because they
|
|
53
|
+
can decide whether source-channel output is useful. Set
|
|
54
|
+
`messages.visibleReplies: "automatic"` to restore the old mode where final
|
|
55
|
+
assistant text posts automatically.
|
|
56
|
+
|
|
57
|
+
Codex heartbeat turns also get `heartbeat_respond` in the searchable Nodmix
|
|
58
|
+
tool catalog by default, so the agent can record whether the wake should stay
|
|
59
|
+
quiet or notify without encoding that control flow in final text.
|
|
60
|
+
|
|
61
|
+
Heartbeat-specific initiative guidance is sent as a Codex collaboration-mode
|
|
62
|
+
developer instruction on the heartbeat turn itself. Ordinary chat turns restore
|
|
63
|
+
Codex Default mode instead of carrying heartbeat philosophy in their normal
|
|
64
|
+
runtime prompt. When a non-empty `HEARTBEAT.md` exists, the heartbeat
|
|
65
|
+
collaboration-mode instructions point Codex at the file instead of inlining its
|
|
66
|
+
contents.
|
|
67
|
+
|
|
68
|
+
## Hook boundaries
|
|
69
|
+
|
|
70
|
+
The Codex harness has three hook layers:
|
|
71
|
+
|
|
72
|
+
| Layer | Owner | Purpose |
|
|
73
|
+
| ------------------------------------- | ------------------------ | ------------------------------------------------------------------- |
|
|
74
|
+
| Nodmix plugin hooks | Nodmix | Product/plugin compatibility across PI and Codex harnesses. |
|
|
75
|
+
| Codex app-server extension middleware | Nodmix bundled plugins | Per-turn adapter behavior around Nodmix dynamic tools. |
|
|
76
|
+
| Codex native hooks | Codex | Low-level Codex lifecycle and native tool policy from Codex config. |
|
|
77
|
+
|
|
78
|
+
Nodmix does not use project or global Codex `hooks.json` files to route
|
|
79
|
+
Nodmix plugin behavior. For the supported native tool and permission bridge,
|
|
80
|
+
Nodmix injects per-thread Codex config for `PreToolUse`, `PostToolUse`,
|
|
81
|
+
`PermissionRequest`, and `Stop`.
|
|
82
|
+
|
|
83
|
+
When Codex app-server approvals are enabled, meaning `approvalPolicy` is not
|
|
84
|
+
`"never"`, the default injected native hook config omits `PermissionRequest` so
|
|
85
|
+
Codex's app-server reviewer and Nodmix's approval bridge handle real
|
|
86
|
+
escalations after review. Operators can explicitly add `permission_request` to
|
|
87
|
+
`nativeHookRelay.events` when they need the compatibility relay.
|
|
88
|
+
|
|
89
|
+
Other Codex hooks such as `SessionStart` and `UserPromptSubmit` remain
|
|
90
|
+
Codex-level controls. They are not exposed as Nodmix plugin hooks in the v1
|
|
91
|
+
contract.
|
|
92
|
+
|
|
93
|
+
For Nodmix dynamic tools, Nodmix executes the tool after Codex asks for the
|
|
94
|
+
call, so Nodmix fires the plugin and middleware behavior it owns in the
|
|
95
|
+
harness adapter. For Codex-native tools, Codex owns the canonical tool record.
|
|
96
|
+
Nodmix can mirror selected events, but it cannot rewrite the native Codex
|
|
97
|
+
thread unless Codex exposes that operation through app-server or native hook
|
|
98
|
+
callbacks.
|
|
99
|
+
|
|
100
|
+
Codex app-server item notifications also provide async `after_tool_call`
|
|
101
|
+
observations for native tool completions that are not already covered by the
|
|
102
|
+
native `PostToolUse` relay. These observations are for telemetry and plugin
|
|
103
|
+
compatibility only; they cannot block, delay, or mutate the native tool call.
|
|
104
|
+
|
|
105
|
+
Compaction and LLM lifecycle projections come from Codex app-server
|
|
106
|
+
notifications and Nodmix adapter state, not native Codex hook commands.
|
|
107
|
+
Nodmix's `before_compaction`, `after_compaction`, `llm_input`, and
|
|
108
|
+
`llm_output` events are adapter-level observations, not byte-for-byte captures
|
|
109
|
+
of Codex's internal request or compaction payloads.
|
|
110
|
+
|
|
111
|
+
Codex native `hook/started` and `hook/completed` app-server notifications are
|
|
112
|
+
projected as `codex_app_server.hook` agent events for trajectory and debugging.
|
|
113
|
+
They do not invoke Nodmix plugin hooks.
|
|
114
|
+
|
|
115
|
+
## V1 support contract
|
|
116
|
+
|
|
117
|
+
Supported in Codex runtime v1:
|
|
118
|
+
|
|
119
|
+
| Surface | Support | Why |
|
|
120
|
+
| --------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
121
|
+
| OpenAI model loop through Codex | Supported | Codex app-server owns the OpenAI turn, native thread resume, and native tool continuation. |
|
|
122
|
+
| Nodmix channel routing and delivery | Supported | Telegram, Discord, Slack, WhatsApp, iMessage, and other channels stay outside the model runtime. |
|
|
123
|
+
| Nodmix dynamic tools | Supported | Codex asks Nodmix to execute these tools, so Nodmix stays in the execution path. |
|
|
124
|
+
| Prompt and context plugins | Supported | Nodmix projects Nodmix-specific prompt/context into the Codex turn while leaving Codex-owned base, model, personality, and configured project-doc prompts in the native Codex lane. Native Codex developer instructions accept only command guidance explicitly scoped to `codex_app_server`; legacy global command hints remain for non-Codex prompt surfaces. |
|
|
125
|
+
| Context engine lifecycle | Supported | Assemble, ingest, after-turn maintenance, and context-engine compaction coordination run for Codex turns. |
|
|
126
|
+
| Dynamic tool hooks | Supported | `before_tool_call`, `after_tool_call`, and tool-result middleware run around Nodmix-owned dynamic tools. |
|
|
127
|
+
| Lifecycle hooks | Supported as adapter observations | `llm_input`, `llm_output`, `agent_end`, `before_compaction`, and `after_compaction` fire with honest Codex-mode payloads. |
|
|
128
|
+
| Final-answer revision gate | Supported through native hook relay | Codex `Stop` is relayed to `before_agent_finalize`; `revise` asks Codex for one more model pass before finalization. |
|
|
129
|
+
| Native shell, patch, and MCP block or observe | Supported through native hook relay | Codex `PreToolUse` and `PostToolUse` are relayed for committed native tool surfaces, including MCP payloads on Codex app-server `0.125.0` or newer. Blocking is supported; argument rewriting is not. |
|
|
130
|
+
| Native permission policy | Supported through Codex app-server approvals and compatibility native hook relay | Codex app-server approval requests route through Nodmix after Codex review. The `PermissionRequest` native hook relay is opt-in for native approval modes because Codex emits it before guardian review. |
|
|
131
|
+
| App-server trajectory capture | Supported | Nodmix records the request it sent to app-server and the app-server notifications it receives. |
|
|
132
|
+
|
|
133
|
+
Not supported in Codex runtime v1:
|
|
134
|
+
|
|
135
|
+
| Surface | V1 boundary | Future path |
|
|
136
|
+
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
|
137
|
+
| Native tool argument mutation | Codex native pre-tool hooks can block, but Nodmix does not rewrite Codex-native tool arguments. | Requires Codex hook/schema support for replacement tool input. |
|
|
138
|
+
| Editable Codex-native transcript history | Codex owns canonical native thread history. Nodmix owns a mirror and can project future context, but should not mutate unsupported internals. | Add explicit Codex app-server APIs if native thread surgery is needed. |
|
|
139
|
+
| `tool_result_persist` for Codex-native tool records | That hook transforms Nodmix-owned transcript writes, not Codex-native tool records. | Could mirror transformed records, but canonical rewrite needs Codex support. |
|
|
140
|
+
| Rich native compaction metadata | Nodmix observes compaction start and completion, but does not receive a stable kept/dropped list, token delta, or summary payload. | Needs richer Codex compaction events. |
|
|
141
|
+
| Compaction intervention | Current Nodmix compaction hooks are notification-level in Codex mode. | Add Codex pre/post compaction hooks if plugins need to veto or rewrite native compaction. |
|
|
142
|
+
| Byte-for-byte model API request capture | Nodmix can capture app-server requests and notifications, but Codex core builds the final OpenAI API request internally. | Needs a Codex model-request tracing event or debug API. |
|
|
143
|
+
|
|
144
|
+
## Native permissions and MCP elicitations
|
|
145
|
+
|
|
146
|
+
For `PermissionRequest`, Nodmix only returns explicit allow or deny decisions
|
|
147
|
+
when policy decides. A no-decision result is not an allow. Codex treats it as no
|
|
148
|
+
hook decision and falls through to its own guardian or user approval path.
|
|
149
|
+
|
|
150
|
+
Codex app-server approval modes omit this native hook by default. This behavior
|
|
151
|
+
applies when `permission_request` is explicitly included in
|
|
152
|
+
`nativeHookRelay.events` or a compatibility runtime installs it.
|
|
153
|
+
|
|
154
|
+
When an operator chooses `allow-always` for a Codex native permission request,
|
|
155
|
+
Nodmix remembers that exact provider/session/tool input/cwd fingerprint for a
|
|
156
|
+
bounded session window. The remembered decision is intentionally exact-match
|
|
157
|
+
only: a changed command, arguments, tool payload, or cwd creates a fresh
|
|
158
|
+
approval.
|
|
159
|
+
|
|
160
|
+
Codex MCP tool approval elicitations are routed through Nodmix's plugin
|
|
161
|
+
approval flow when Codex marks `_meta.codex_approval_kind` as
|
|
162
|
+
`"mcp_tool_call"`. Codex `request_user_input` prompts are sent back to the
|
|
163
|
+
originating chat, and the next queued follow-up message answers that native
|
|
164
|
+
server request instead of being steered as extra context. Other MCP elicitation
|
|
165
|
+
requests fail closed.
|
|
166
|
+
|
|
167
|
+
## Queue steering
|
|
168
|
+
|
|
169
|
+
Active-run queue steering maps onto Codex app-server `turn/steer`. With the
|
|
170
|
+
default `messages.queue.mode: "steer"`, Nodmix batches steer-mode chat
|
|
171
|
+
messages for the configured quiet window and sends them as one `turn/steer`
|
|
172
|
+
request in arrival order.
|
|
173
|
+
|
|
174
|
+
Codex review and manual compaction turns can reject same-turn steering. In that
|
|
175
|
+
case, Nodmix waits for the active run to finish before starting the prompt.
|
|
176
|
+
Use `/queue followup` or `/queue collect` when messages should queue by default
|
|
177
|
+
instead of steering. See [Steering queue](/concepts/queue-steering).
|
|
178
|
+
|
|
179
|
+
## Codex feedback upload
|
|
180
|
+
|
|
181
|
+
When `/diagnostics [note]` is approved for a session using the native Codex
|
|
182
|
+
harness, Nodmix also calls Codex app-server `feedback/upload` for relevant
|
|
183
|
+
Codex threads. The upload asks app-server to include logs for each listed thread
|
|
184
|
+
and spawned Codex subthreads when available.
|
|
185
|
+
|
|
186
|
+
The upload goes through Codex's normal feedback path to OpenAI servers. If Codex
|
|
187
|
+
feedback is disabled in that app-server, the command returns the app-server
|
|
188
|
+
error. The completed diagnostics reply lists the channels, Nodmix session ids,
|
|
189
|
+
Codex thread ids, and local `codex resume <thread-id>` commands for the threads
|
|
190
|
+
that were sent.
|
|
191
|
+
|
|
192
|
+
If you deny or ignore the approval, Nodmix does not print those Codex ids and
|
|
193
|
+
does not send Codex feedback. The upload does not replace the local Gateway
|
|
194
|
+
diagnostics export. See [Diagnostics export](/gateway/diagnostics) for the
|
|
195
|
+
approval, privacy, local bundle, and group-chat behavior.
|
|
196
|
+
|
|
197
|
+
Use `/codex diagnostics [note]` only when you specifically want the Codex
|
|
198
|
+
feedback upload for the currently attached thread without the full Gateway
|
|
199
|
+
diagnostics bundle.
|
|
200
|
+
|
|
201
|
+
## Compaction and transcript mirror
|
|
202
|
+
|
|
203
|
+
When the selected model uses the Codex harness, native thread compaction is
|
|
204
|
+
delegated to Codex app-server unless an active context engine declares
|
|
205
|
+
`ownsCompaction: true`. Owning context engines compact first and cause Nodmix
|
|
206
|
+
to abandon the old Codex backend thread so the next turn can rehydrate a fresh
|
|
207
|
+
thread from engine-managed context. Nodmix keeps a transcript mirror for
|
|
208
|
+
channel history, search, `/new`, `/reset`, and future model or harness
|
|
209
|
+
switching.
|
|
210
|
+
|
|
211
|
+
When a context engine requests Codex thread-bootstrap projection, Nodmix
|
|
212
|
+
projects tool-call names and ids, input shapes, and redacted tool-result content
|
|
213
|
+
into the fresh Codex thread. It does not copy raw tool-call argument values into
|
|
214
|
+
that projection.
|
|
215
|
+
|
|
216
|
+
The mirror includes the user prompt, final assistant text, and lightweight Codex
|
|
217
|
+
reasoning or plan records when the app-server emits them. Today, Nodmix only
|
|
218
|
+
records native compaction start and completion signals. It does not yet expose a
|
|
219
|
+
human-readable compaction summary or an auditable list of which entries Codex
|
|
220
|
+
kept after compaction.
|
|
221
|
+
|
|
222
|
+
Because Codex owns the canonical native thread, `tool_result_persist` does not
|
|
223
|
+
currently rewrite Codex-native tool result records. It only applies when
|
|
224
|
+
Nodmix is writing an Nodmix-owned session transcript tool result.
|
|
225
|
+
|
|
226
|
+
## Media and delivery
|
|
227
|
+
|
|
228
|
+
Nodmix continues to own media delivery and media provider selection. Image,
|
|
229
|
+
video, music, PDF, TTS, and media understanding use matching provider/model
|
|
230
|
+
settings such as `agents.defaults.imageGenerationModel`, `videoGenerationModel`,
|
|
231
|
+
`pdfModel`, and `messages.tts`.
|
|
232
|
+
|
|
233
|
+
Text, images, video, music, TTS, approvals, and messaging-tool output continue
|
|
234
|
+
through the normal Nodmix delivery path. Media generation does not require PI.
|
|
235
|
+
When Codex emits a native image-generation item with a `savedPath`, Nodmix
|
|
236
|
+
forwards that exact file through the normal reply-media path even if the Codex
|
|
237
|
+
turn has no assistant text.
|
|
238
|
+
|
|
239
|
+
## Related
|
|
240
|
+
|
|
241
|
+
- [Codex harness](/plugins/codex-harness)
|
|
242
|
+
- [Codex harness reference](/plugins/codex-harness-reference)
|
|
243
|
+
- [Native Codex plugins](/plugins/codex-native-plugins)
|
|
244
|
+
- [Plugin hooks](/plugins/hooks)
|
|
245
|
+
- [Agent harness plugins](/plugins/sdk-agent-harness)
|
|
246
|
+
- [Diagnostics export](/gateway/diagnostics)
|
|
247
|
+
- [Trajectory export](/tools/trajectory)
|