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,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Tavily search and extract tools"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want Tavily-backed web search
|
|
5
|
+
- You need a Tavily API key
|
|
6
|
+
- You want Tavily as a web_search provider
|
|
7
|
+
- You want content extraction from URLs
|
|
8
|
+
title: "Tavily"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
[Tavily](https://tavily.com) is a search API designed for AI applications. Nodmix exposes it in two ways:
|
|
12
|
+
|
|
13
|
+
- as the `web_search` provider for the generic search tool
|
|
14
|
+
- as explicit plugin tools: `tavily_search` and `tavily_extract`
|
|
15
|
+
|
|
16
|
+
Tavily returns structured results optimized for LLM consumption with configurable search depth, topic filtering, domain filters, AI-generated answer summaries, and content extraction from URLs (including JavaScript-rendered pages).
|
|
17
|
+
|
|
18
|
+
| Property | Value |
|
|
19
|
+
| ------------- | ----------------------------------- |
|
|
20
|
+
| Plugin id | `tavily` |
|
|
21
|
+
| Auth | `TAVILY_API_KEY` or config `apiKey` |
|
|
22
|
+
| Base URL | `https://api.tavily.com` (default) |
|
|
23
|
+
| Bundled tools | `tavily_search`, `tavily_extract` |
|
|
24
|
+
|
|
25
|
+
## Getting started
|
|
26
|
+
|
|
27
|
+
<Steps>
|
|
28
|
+
<Step title="Get an API key">
|
|
29
|
+
Create a Tavily account at [tavily.com](https://tavily.com), then generate an API key in the dashboard.
|
|
30
|
+
</Step>
|
|
31
|
+
<Step title="Configure the plugin and provider">
|
|
32
|
+
```json5
|
|
33
|
+
{
|
|
34
|
+
plugins: {
|
|
35
|
+
entries: {
|
|
36
|
+
tavily: {
|
|
37
|
+
enabled: true,
|
|
38
|
+
config: {
|
|
39
|
+
webSearch: {
|
|
40
|
+
apiKey: "tvly-...", // optional if TAVILY_API_KEY is set
|
|
41
|
+
baseUrl: "https://api.tavily.com",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
tools: {
|
|
48
|
+
web: {
|
|
49
|
+
search: {
|
|
50
|
+
provider: "tavily",
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
</Step>
|
|
57
|
+
<Step title="Verify search runs">
|
|
58
|
+
Trigger a `web_search` from any agent, or call `tavily_search` directly.
|
|
59
|
+
</Step>
|
|
60
|
+
</Steps>
|
|
61
|
+
|
|
62
|
+
<Tip>
|
|
63
|
+
Choosing Tavily in onboarding or `nodmix configure --section web` enables the bundled Tavily plugin automatically.
|
|
64
|
+
</Tip>
|
|
65
|
+
|
|
66
|
+
## Tool reference
|
|
67
|
+
|
|
68
|
+
### `tavily_search`
|
|
69
|
+
|
|
70
|
+
Use this when you want Tavily-specific search controls instead of generic `web_search`.
|
|
71
|
+
|
|
72
|
+
| Parameter | Type | Constraints / default | Description |
|
|
73
|
+
| ----------------- | ------------ | -------------------------------------- | ----------------------------------------------- |
|
|
74
|
+
| `query` | string | required | Search query string. Keep under 400 characters. |
|
|
75
|
+
| `search_depth` | enum | `basic` (default), `advanced` | `advanced` is slower but higher relevance. |
|
|
76
|
+
| `topic` | enum | `general` (default), `news`, `finance` | Filter by topic family. |
|
|
77
|
+
| `max_results` | integer | 1-20 | Number of results. |
|
|
78
|
+
| `include_answer` | boolean | default `false` | Include a Tavily AI-generated answer summary. |
|
|
79
|
+
| `time_range` | enum | `day`, `week`, `month`, `year` | Filter results by recency. |
|
|
80
|
+
| `include_domains` | string array | (none) | Only include results from these domains. |
|
|
81
|
+
| `exclude_domains` | string array | (none) | Exclude results from these domains. |
|
|
82
|
+
|
|
83
|
+
Search depth tradeoff:
|
|
84
|
+
|
|
85
|
+
| Depth | Speed | Relevance | Best for |
|
|
86
|
+
| ---------- | ------ | --------- | ------------------------------------ |
|
|
87
|
+
| `basic` | Faster | High | General-purpose queries (default). |
|
|
88
|
+
| `advanced` | Slower | Highest | Precision research and fact-finding. |
|
|
89
|
+
|
|
90
|
+
### `tavily_extract`
|
|
91
|
+
|
|
92
|
+
Use this to extract clean content from one or more URLs. Handles JavaScript-rendered pages and supports query-focused chunking for targeted extraction.
|
|
93
|
+
|
|
94
|
+
| Parameter | Type | Constraints / default | Description |
|
|
95
|
+
| ------------------- | ------------ | ----------------------------- | ----------------------------------------------------------- |
|
|
96
|
+
| `urls` | string array | required, 1-20 | URLs to extract content from. |
|
|
97
|
+
| `query` | string | (optional) | Rerank extracted chunks by relevance to this query. |
|
|
98
|
+
| `extract_depth` | enum | `basic` (default), `advanced` | Use `advanced` for JS-heavy pages, SPAs, or dynamic tables. |
|
|
99
|
+
| `chunks_per_source` | integer | 1-5; **requires `query`** | Chunks returned per URL. Errors if set without `query`. |
|
|
100
|
+
| `include_images` | boolean | default `false` | Include image URLs in results. |
|
|
101
|
+
|
|
102
|
+
Extract depth tradeoff:
|
|
103
|
+
|
|
104
|
+
| Depth | When to use |
|
|
105
|
+
| ---------- | ------------------------------------------ |
|
|
106
|
+
| `basic` | Simple pages. Try this first. |
|
|
107
|
+
| `advanced` | JS-rendered SPAs, dynamic content, tables. |
|
|
108
|
+
|
|
109
|
+
<Tip>
|
|
110
|
+
Batch larger URL lists into multiple `tavily_extract` calls (max 20 per request). Use `query` plus `chunks_per_source` to get only relevant content instead of full pages.
|
|
111
|
+
</Tip>
|
|
112
|
+
|
|
113
|
+
## Choosing the right tool
|
|
114
|
+
|
|
115
|
+
| Need | Tool |
|
|
116
|
+
| ------------------------------------ | ---------------- |
|
|
117
|
+
| Quick web search, no special options | `web_search` |
|
|
118
|
+
| Search with depth, topic, AI answers | `tavily_search` |
|
|
119
|
+
| Extract content from specific URLs | `tavily_extract` |
|
|
120
|
+
|
|
121
|
+
<Note>
|
|
122
|
+
The generic `web_search` tool with Tavily as provider supports `query` and `count` (up to 20 results). For Tavily-specific controls (`search_depth`, `topic`, `include_answer`, domain filters, time range), use `tavily_search` instead.
|
|
123
|
+
</Note>
|
|
124
|
+
|
|
125
|
+
## Advanced configuration
|
|
126
|
+
|
|
127
|
+
<AccordionGroup>
|
|
128
|
+
<Accordion title="API key resolution order">
|
|
129
|
+
The Tavily client looks up its API key in this order:
|
|
130
|
+
|
|
131
|
+
1. `plugins.entries.tavily.config.webSearch.apiKey` (resolved through SecretRefs).
|
|
132
|
+
2. `TAVILY_API_KEY` from the gateway environment.
|
|
133
|
+
|
|
134
|
+
`tavily_extract` raises a setup error if neither is present.
|
|
135
|
+
|
|
136
|
+
</Accordion>
|
|
137
|
+
|
|
138
|
+
<Accordion title="Custom base URL">
|
|
139
|
+
Override `plugins.entries.tavily.config.webSearch.baseUrl` if you front Tavily through a proxy. The default is `https://api.tavily.com`.
|
|
140
|
+
</Accordion>
|
|
141
|
+
|
|
142
|
+
<Accordion title="`chunks_per_source` requires `query`">
|
|
143
|
+
`tavily_extract` rejects calls that pass `chunks_per_source` without a `query`. Tavily ranks chunks by query relevance, so the parameter is meaningless without one.
|
|
144
|
+
</Accordion>
|
|
145
|
+
</AccordionGroup>
|
|
146
|
+
|
|
147
|
+
## Related
|
|
148
|
+
|
|
149
|
+
<CardGroup cols={2}>
|
|
150
|
+
<Card title="Web Search overview" href="/tools/web" icon="magnifying-glass">
|
|
151
|
+
All providers and auto-detection rules.
|
|
152
|
+
</Card>
|
|
153
|
+
<Card title="Firecrawl" href="/tools/firecrawl" icon="fire">
|
|
154
|
+
Search plus scraping with content extraction.
|
|
155
|
+
</Card>
|
|
156
|
+
<Card title="Exa Search" href="/tools/exa-search" icon="binoculars">
|
|
157
|
+
Neural search with content extraction.
|
|
158
|
+
</Card>
|
|
159
|
+
<Card title="Configuration" href="/gateway/configuration" icon="gear">
|
|
160
|
+
Full config schema for plugin entries and tool routing.
|
|
161
|
+
</Card>
|
|
162
|
+
</CardGroup>
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Directive syntax for /think, /fast, /verbose, /trace, and reasoning visibility"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adjusting thinking, fast-mode, or verbose directive parsing or defaults
|
|
5
|
+
title: "Thinking levels"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## What it does
|
|
9
|
+
|
|
10
|
+
- Inline directive in any inbound body: `/t <level>`, `/think:<level>`, or `/thinking <level>`.
|
|
11
|
+
- Levels (aliases): `off | minimal | low | medium | high | xhigh | adaptive | max`
|
|
12
|
+
- minimal → "think"
|
|
13
|
+
- low → "think hard"
|
|
14
|
+
- medium → "think harder"
|
|
15
|
+
- high → "ultrathink" (max budget)
|
|
16
|
+
- xhigh → "ultrathink+" (GPT-5.2+ and Codex models, plus Anthropic Claude Opus 4.7 effort)
|
|
17
|
+
- adaptive → provider-managed adaptive thinking (supported for Claude 4.6 on Anthropic/Bedrock, Anthropic Claude Opus 4.7, and Google Gemini dynamic thinking)
|
|
18
|
+
- max → provider max reasoning (Anthropic Claude Opus 4.7; Ollama maps this to its highest native `think` effort)
|
|
19
|
+
- `x-high`, `x_high`, `extra-high`, `extra high`, and `extra_high` map to `xhigh`.
|
|
20
|
+
- `highest` maps to `high`.
|
|
21
|
+
- Provider notes:
|
|
22
|
+
- Thinking menus and pickers are provider-profile driven. Provider plugins declare the exact level set for the selected model, including labels such as binary `on`.
|
|
23
|
+
- `adaptive`, `xhigh`, and `max` are only advertised for provider/model profiles that support them. Typed directives for unsupported levels are rejected with that model's valid options.
|
|
24
|
+
- Existing stored unsupported levels are remapped by provider profile rank. `adaptive` falls back to `medium` on non-adaptive models, while `xhigh` and `max` fall back to the largest supported non-off level for the selected model.
|
|
25
|
+
- Anthropic Claude 4.6 models default to `adaptive` when no explicit thinking level is set.
|
|
26
|
+
- Anthropic Claude Opus 4.7 does not default to adaptive thinking. Its API effort default remains provider-owned unless you explicitly set a thinking level.
|
|
27
|
+
- Anthropic Claude Opus 4.7 maps `/think xhigh` to adaptive thinking plus `output_config.effort: "xhigh"`, because `/think` is a thinking directive and `xhigh` is the Opus 4.7 effort setting.
|
|
28
|
+
- Anthropic Claude Opus 4.7 also exposes `/think max`; it maps to the same provider-owned max effort path.
|
|
29
|
+
- Direct DeepSeek V4 models expose `/think xhigh|max`; both map to DeepSeek `reasoning_effort: "max"` while lower non-off levels map to `high`.
|
|
30
|
+
- OpenRouter-routed DeepSeek V4 models expose `/think xhigh` and send OpenRouter-supported `reasoning_effort` values. Stored `max` overrides fall back to `xhigh`.
|
|
31
|
+
- Ollama thinking-capable models expose `/think low|medium|high|max`; `max` maps to native `think: "high"` because Ollama's native API accepts `low`, `medium`, and `high` effort strings.
|
|
32
|
+
- OpenAI GPT models map `/think` through model-specific Responses API effort support. `/think off` sends `reasoning.effort: "none"` only when the target model supports it; otherwise Nodmix omits the disabled reasoning payload instead of sending an unsupported value.
|
|
33
|
+
- Custom OpenAI-compatible catalog entries can opt into `/think xhigh` by setting `models.providers.<provider>.models[].compat.supportedReasoningEfforts` to include `"xhigh"`. This uses the same compat metadata that maps outbound OpenAI reasoning effort payloads, so menus, session validation, agent CLI, and `llm-task` agree with transport behavior.
|
|
34
|
+
- Stale configured OpenRouter Hunter Alpha refs skip proxy reasoning injection because that retired route could return final answer text through reasoning fields.
|
|
35
|
+
- Google Gemini maps `/think adaptive` to Gemini's provider-owned dynamic thinking. Gemini 3 requests omit a fixed `thinkingLevel`, while Gemini 2.5 requests send `thinkingBudget: -1`; fixed levels still map to the closest Gemini `thinkingLevel` or budget for that model family.
|
|
36
|
+
- MiniMax (`minimax/*`) on the Anthropic-compatible streaming path defaults to `thinking: { type: "disabled" }` unless you explicitly set thinking in model params or request params. This avoids leaked `reasoning_content` deltas from MiniMax's non-native Anthropic stream format.
|
|
37
|
+
- Z.AI (`zai/*`) only supports binary thinking (`on`/`off`). Any non-`off` level is treated as `on` (mapped to `low`).
|
|
38
|
+
- Moonshot (`moonshot/*`) maps `/think off` to `thinking: { type: "disabled" }` and any non-`off` level to `thinking: { type: "enabled" }`. When thinking is enabled, Moonshot only accepts `tool_choice` `auto|none`; Nodmix normalizes incompatible values to `auto`.
|
|
39
|
+
|
|
40
|
+
## Resolution order
|
|
41
|
+
|
|
42
|
+
1. Inline directive on the message (applies only to that message).
|
|
43
|
+
2. Session override (set by sending a directive-only message).
|
|
44
|
+
3. Per-agent default (`agents.list[].thinkingDefault` in config).
|
|
45
|
+
4. Global default (`agents.defaults.thinkingDefault` in config).
|
|
46
|
+
5. Fallback: provider-declared default when available; otherwise reasoning-capable models resolve to `medium` or the nearest supported non-`off` level for that model, and non-reasoning models stay `off`.
|
|
47
|
+
|
|
48
|
+
## Setting a session default
|
|
49
|
+
|
|
50
|
+
- Send a message that is **only** the directive (whitespace allowed), e.g. `/think:medium` or `/t high`.
|
|
51
|
+
- That sticks for the current session (per-sender by default). Use `/think default` to clear the session override and inherit the configured/provider default; aliases include `inherit`, `clear`, `reset`, and `unpin`.
|
|
52
|
+
- `/think off` stores an explicit off override. It disables thinking until you change or clear the session override.
|
|
53
|
+
- Confirmation reply is sent (`Thinking level set to high.` / `Thinking disabled.`). If the level is invalid (e.g. `/thinking big`), the command is rejected with a hint and the session state is left unchanged.
|
|
54
|
+
- Send `/think` (or `/think:`) with no argument to see the current thinking level.
|
|
55
|
+
|
|
56
|
+
## Application by agent
|
|
57
|
+
|
|
58
|
+
- **Embedded Pi**: the resolved level is passed to the in-process Pi agent runtime.
|
|
59
|
+
- **Claude CLI backend**: non-off levels are passed to Claude Code as `--effort` when using `claude-cli`; see [CLI backends](/gateway/cli-backends).
|
|
60
|
+
|
|
61
|
+
## Fast mode (/fast)
|
|
62
|
+
|
|
63
|
+
- Levels: `on|off|default`.
|
|
64
|
+
- Directive-only message toggles a session fast-mode override and replies `Fast mode enabled.` / `Fast mode disabled.`. Use `/fast default` to clear the session override and inherit the configured default; aliases include `inherit`, `clear`, `reset`, and `unpin`.
|
|
65
|
+
- Send `/fast` (or `/fast status`) with no mode to see the current effective fast-mode state.
|
|
66
|
+
- Nodmix resolves fast mode in this order:
|
|
67
|
+
1. Inline/directive-only `/fast on|off` override (`/fast default` clears this layer)
|
|
68
|
+
2. Session override
|
|
69
|
+
3. Per-agent default (`agents.list[].fastModeDefault`)
|
|
70
|
+
4. Per-model config: `agents.defaults.models["<provider>/<model>"].params.fastMode`
|
|
71
|
+
5. Fallback: `off`
|
|
72
|
+
- For `openai/*`, fast mode maps to OpenAI priority processing by sending `service_tier=priority` on supported Responses requests.
|
|
73
|
+
- For `openai-codex/*`, fast mode sends the same `service_tier=priority` flag on Codex Responses. Nodmix keeps one shared `/fast` toggle across both auth paths.
|
|
74
|
+
- For direct public `anthropic/*` requests, including OAuth-authenticated traffic sent to `api.anthropic.com`, fast mode maps to Anthropic service tiers: `/fast on` sets `service_tier=auto`, `/fast off` sets `service_tier=standard_only`.
|
|
75
|
+
- For `minimax/*` on the Anthropic-compatible path, `/fast on` (or `params.fastMode: true`) rewrites `MiniMax-M2.7` to `MiniMax-M2.7-highspeed`.
|
|
76
|
+
- Explicit Anthropic `serviceTier` / `service_tier` model params override the fast-mode default when both are set. Nodmix still skips Anthropic service-tier injection for non-Anthropic proxy base URLs.
|
|
77
|
+
- `/status` shows `Fast` only when fast mode is enabled.
|
|
78
|
+
|
|
79
|
+
## Verbose directives (/verbose or /v)
|
|
80
|
+
|
|
81
|
+
- Levels: `on` (minimal) | `full` | `off` (default).
|
|
82
|
+
- Directive-only message toggles session verbose and replies `Verbose logging enabled.` / `Verbose logging disabled.`; invalid levels return a hint without changing state.
|
|
83
|
+
- `/verbose off` stores an explicit session override; clear it via the Sessions UI by choosing `inherit`.
|
|
84
|
+
- Inline directive affects only that message; session/global defaults apply otherwise.
|
|
85
|
+
- Send `/verbose` (or `/verbose:`) with no argument to see the current verbose level.
|
|
86
|
+
- When verbose is on, agents that emit structured tool results (Pi, other JSON agents) send each tool call back as its own metadata-only message, prefixed with `<emoji> <tool-name>: <arg>` when available. These tool summaries are sent as soon as each tool starts (separate bubbles), not as streaming deltas.
|
|
87
|
+
- Tool failure summaries remain visible in normal mode, but raw error detail suffixes are hidden unless verbose is `full`.
|
|
88
|
+
- When verbose is `full`, tool outputs are also forwarded after completion (separate bubble, truncated to a safe length). If you toggle `/verbose on|full|off` while a run is in-flight, subsequent tool bubbles honor the new setting.
|
|
89
|
+
- `agents.defaults.toolProgressDetail` controls the shape of `/verbose` tool summaries and progress-draft tool lines. Use `"explain"` (default) for compact human labels such as `🛠️ Exec: checking JS syntax`; use `"raw"` when you also want the raw command/detail appended for debugging. Per-agent `agents.list[].toolProgressDetail` overrides the default.
|
|
90
|
+
- `explain`: `🛠️ Exec: check JS syntax for /tmp/app.js`
|
|
91
|
+
- `raw`: `🛠️ Exec: check JS syntax for /tmp/app.js, node --check /tmp/app.js`
|
|
92
|
+
|
|
93
|
+
## Plugin trace directives (/trace)
|
|
94
|
+
|
|
95
|
+
- Levels: `on` | `off` (default).
|
|
96
|
+
- Directive-only message toggles session plugin trace output and replies `Plugin trace enabled.` / `Plugin trace disabled.`.
|
|
97
|
+
- Inline directive affects only that message; session/global defaults apply otherwise.
|
|
98
|
+
- Send `/trace` (or `/trace:`) with no argument to see the current trace level.
|
|
99
|
+
- `/trace` is narrower than `/verbose`: it only exposes plugin-owned trace/debug lines such as Active Memory debug summaries.
|
|
100
|
+
- Trace lines can appear in `/status` and as a follow-up diagnostic message after the normal assistant reply.
|
|
101
|
+
|
|
102
|
+
## Reasoning visibility (/reasoning)
|
|
103
|
+
|
|
104
|
+
- Levels: `on|off|stream`.
|
|
105
|
+
- Directive-only message toggles whether thinking blocks are shown in replies.
|
|
106
|
+
- When enabled, reasoning is sent as a **separate message** prefixed with `Thinking`.
|
|
107
|
+
- `stream` (Telegram only): streams reasoning into the Telegram draft bubble while the reply is generating, then sends the final answer without reasoning.
|
|
108
|
+
- Alias: `/reason`.
|
|
109
|
+
- Send `/reasoning` (or `/reasoning:`) with no argument to see the current reasoning level.
|
|
110
|
+
- Resolution order: inline directive, then session override, then per-agent default (`agents.list[].reasoningDefault`), then global default (`agents.defaults.reasoningDefault`), then fallback (`off`).
|
|
111
|
+
|
|
112
|
+
Malformed local-model reasoning tags are handled conservatively. Closed `<think>...</think>` blocks stay hidden on normal replies, and unclosed reasoning after already visible text is also hidden. If a reply is fully wrapped in a single unclosed opening tag and would otherwise deliver as empty text, Nodmix removes the malformed opening tag and delivers the remaining text.
|
|
113
|
+
|
|
114
|
+
## Related
|
|
115
|
+
|
|
116
|
+
- Elevated mode docs live in [Elevated mode](/tools/elevated).
|
|
117
|
+
|
|
118
|
+
## Heartbeats
|
|
119
|
+
|
|
120
|
+
- Heartbeat probe body is the configured heartbeat prompt (default: `Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.`). Inline directives in a heartbeat message apply as usual (but avoid changing session defaults from heartbeats).
|
|
121
|
+
- Heartbeat delivery defaults to the final payload only. To also send the separate `Thinking` message (when available), set `agents.defaults.heartbeat.includeReasoning: true` or per-agent `agents.list[].heartbeat.includeReasoning: true`.
|
|
122
|
+
|
|
123
|
+
## Web chat UI
|
|
124
|
+
|
|
125
|
+
- The web chat thinking selector mirrors the session's stored level from the inbound session store/config when the page loads.
|
|
126
|
+
- Picking another level writes the session override immediately via `sessions.patch`; it does not wait for the next send and it is not a one-shot `thinkingOnce` override.
|
|
127
|
+
- The first option is always the clear-override choice. It shows `Inherited: <resolved level>` when the session is inheriting a non-off effective default, or `Off` when inherited thinking is disabled.
|
|
128
|
+
- Explicit picker choices are labeled as overrides, while preserving provider labels when present (for example `Override: maximum` for a provider-labeled `max` option).
|
|
129
|
+
- The picker uses `thinkingLevels` returned by the gateway session row/defaults, with `thinkingOptions` kept as a legacy label list. The browser UI does not keep its own provider regex list; plugins own model-specific level sets.
|
|
130
|
+
- `/think:<level>` still works and updates the same stored session level, so chat directives and the picker stay in sync.
|
|
131
|
+
|
|
132
|
+
## Provider profiles
|
|
133
|
+
|
|
134
|
+
- Provider plugins can expose `resolveThinkingProfile(ctx)` to define the model's supported levels and default.
|
|
135
|
+
- Provider plugins that proxy Claude models should reuse `resolveClaudeThinkingProfile(modelId)` from `nodmix/plugin-sdk/provider-model-shared` so direct Anthropic and proxy catalogs stay aligned.
|
|
136
|
+
- Each profile level has a stored canonical `id` (`off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `adaptive`, or `max`) and may include a display `label`. Binary providers use `{ id: "low", label: "on" }`.
|
|
137
|
+
- Tool plugins that need to validate an explicit thinking override should use `api.runtime.agent.resolveThinkingPolicy({ provider, model })` plus `api.runtime.agent.normalizeThinkingLevel(...)`; they should not keep their own provider/model level lists.
|
|
138
|
+
- Tool plugins with access to configured custom model metadata can pass `catalog` into `resolveThinkingPolicy` so `compat.supportedReasoningEfforts` opt-ins are reflected in plugin-side validation.
|
|
139
|
+
- Published legacy hooks (`supportsXHighThinking`, `isBinaryThinking`, and `resolveDefaultThinkingLevel`) remain as compatibility adapters, but new custom level sets should use `resolveThinkingProfile`.
|
|
140
|
+
- Gateway rows/defaults expose `thinkingLevels`, `thinkingOptions`, and `thinkingDefault` so ACP/chat clients render the same profile ids and labels that runtime validation uses.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Compact noisy exec and bash tool results with an optional bundled plugin"
|
|
3
|
+
title: "Tokenjuice"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want shorter `exec` or `bash` tool results in Nodmix
|
|
6
|
+
- You want to enable the bundled tokenjuice plugin
|
|
7
|
+
- You need to understand what tokenjuice changes and what it leaves raw
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
`tokenjuice` is an optional bundled plugin that compacts noisy `exec` and `bash`
|
|
11
|
+
tool results after the command has already run.
|
|
12
|
+
|
|
13
|
+
It changes the returned `tool_result`, not the command itself. Tokenjuice does
|
|
14
|
+
not rewrite shell input, rerun commands, or change exit codes.
|
|
15
|
+
|
|
16
|
+
Today this applies to PI embedded runs and Nodmix dynamic tools in the Codex
|
|
17
|
+
app-server harness. Tokenjuice hooks Nodmix's tool-result middleware and
|
|
18
|
+
trims the output before it goes back into the active harness session.
|
|
19
|
+
|
|
20
|
+
## Enable the plugin
|
|
21
|
+
|
|
22
|
+
Fast path:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
nodmix config set plugins.entries.tokenjuice.enabled true
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Equivalent:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
nodmix plugins enable tokenjuice
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Nodmix already ships the plugin. There is no separate `plugins install`
|
|
35
|
+
or `tokenjuice install nodmix` step.
|
|
36
|
+
|
|
37
|
+
If you prefer editing config directly:
|
|
38
|
+
|
|
39
|
+
```json5
|
|
40
|
+
{
|
|
41
|
+
plugins: {
|
|
42
|
+
entries: {
|
|
43
|
+
tokenjuice: {
|
|
44
|
+
enabled: true,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## What tokenjuice changes
|
|
52
|
+
|
|
53
|
+
- Compacts noisy `exec` and `bash` results before they are fed back into the session.
|
|
54
|
+
- Keeps the original command execution untouched.
|
|
55
|
+
- Preserves exact file-content reads and other commands that tokenjuice should leave raw.
|
|
56
|
+
- Stays opt-in: disable the plugin if you want verbatim output everywhere.
|
|
57
|
+
|
|
58
|
+
## Verify it is working
|
|
59
|
+
|
|
60
|
+
1. Enable the plugin.
|
|
61
|
+
2. Start a session that can call `exec`.
|
|
62
|
+
3. Run a noisy command such as `git status`.
|
|
63
|
+
4. Check that the returned tool result is shorter and more structured than the raw shell output.
|
|
64
|
+
|
|
65
|
+
## Disable the plugin
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
nodmix config set plugins.entries.tokenjuice.enabled false
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Or:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
nodmix plugins disable tokenjuice
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Related
|
|
78
|
+
|
|
79
|
+
- [Exec tool](/tools/exec)
|
|
80
|
+
- [Thinking levels](/tools/thinking)
|
|
81
|
+
- [Context engine](/concepts/context-engine)
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Tool Search: compact large PI tool catalogs behind search, describe, and call"
|
|
3
|
+
title: "Tool Search"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want PI agents to use a large tool catalog without adding every tool schema to the prompt
|
|
6
|
+
- You want Nodmix tools, MCP tools, and client tools exposed through one compact PI surface
|
|
7
|
+
- You are implementing or debugging tool discovery for PI runs
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Tool Search is an experimental Nodmix PI-agent feature. It gives PI agents one
|
|
11
|
+
compact way to discover and call large tool catalogs. It is useful when the run
|
|
12
|
+
has many available tools but the model is likely to need only a few of them.
|
|
13
|
+
|
|
14
|
+
This page documents Nodmix PI Tool Search. It is not the Codex-native tool
|
|
15
|
+
search or dynamic-tools surface. Codex-native code mode, tool search, deferred
|
|
16
|
+
dynamic tools, and nested tool calls are stable Codex harness surfaces and do
|
|
17
|
+
not depend on `tools.toolSearch`.
|
|
18
|
+
|
|
19
|
+
When enabled for PI, the model receives one `tool_search_code` tool by default.
|
|
20
|
+
That tool runs a short JavaScript body in an isolated Node subprocess with an
|
|
21
|
+
`nodmix.tools` bridge:
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
const hits = await nodmix.tools.search("create a GitHub issue");
|
|
25
|
+
const tool = await nodmix.tools.describe(hits[0].id);
|
|
26
|
+
return await nodmix.tools.call(tool.id, {
|
|
27
|
+
title: "Crash on startup",
|
|
28
|
+
body: "Steps to reproduce...",
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The catalog can include Nodmix tools, plugin tools, MCP tools, and
|
|
33
|
+
client-provided tools. The model does not see every full schema up front.
|
|
34
|
+
Instead, it searches compact descriptors, describes one selected tool when it
|
|
35
|
+
needs the exact schema, and calls that tool through Nodmix.
|
|
36
|
+
|
|
37
|
+
Codex harness runs do not receive these experimental Nodmix Tool Search
|
|
38
|
+
controls. Nodmix passes product capabilities to Codex as dynamic tools, and
|
|
39
|
+
Codex owns the stable native code mode, native tool search, deferred dynamic
|
|
40
|
+
tools, and nested tool calls.
|
|
41
|
+
|
|
42
|
+
## How a turn runs
|
|
43
|
+
|
|
44
|
+
At planning time the PI embedded runner builds the effective catalog for the
|
|
45
|
+
run:
|
|
46
|
+
|
|
47
|
+
1. Resolve the active tool policy for the agent, profile, sandbox, and session.
|
|
48
|
+
2. List eligible Nodmix and plugin tools.
|
|
49
|
+
3. List eligible MCP tools through the session MCP runtime.
|
|
50
|
+
4. Add eligible client tools supplied for the current run.
|
|
51
|
+
5. Index compact descriptors for search.
|
|
52
|
+
6. Expose either the PI code bridge or the structured fallback tools to the
|
|
53
|
+
model.
|
|
54
|
+
|
|
55
|
+
At execution time every real tool call returns to Nodmix. The isolated Node
|
|
56
|
+
runtime does not hold plugin implementations, MCP client objects, or secrets.
|
|
57
|
+
`nodmix.tools.call(...)` crosses the bridge back into the Gateway, where the
|
|
58
|
+
normal policy, approval, hook, logging, and result handling still apply.
|
|
59
|
+
|
|
60
|
+
## Modes
|
|
61
|
+
|
|
62
|
+
`tools.toolSearch` has two model-facing modes:
|
|
63
|
+
|
|
64
|
+
- `code`: exposes `tool_search_code`, the default compact JavaScript bridge.
|
|
65
|
+
- `tools`: exposes `tool_search`, `tool_describe`, and `tool_call` as plain
|
|
66
|
+
structured tools for providers that should not receive code.
|
|
67
|
+
|
|
68
|
+
Both modes use the same catalog and execution path. The only difference is the
|
|
69
|
+
shape the model sees. If the current runtime cannot launch the isolated Node
|
|
70
|
+
code-mode child process, the default `code` mode falls back to `tools` before
|
|
71
|
+
catalog compaction.
|
|
72
|
+
|
|
73
|
+
Both modes are experimental. Prefer direct tool exposure for small PI tool
|
|
74
|
+
catalogs, and prefer the Codex-native stable surfaces for Codex harness runs.
|
|
75
|
+
|
|
76
|
+
There is no separate source-selection config. When Tool Search is enabled, the
|
|
77
|
+
catalog includes eligible Nodmix, MCP, and client tools after normal policy
|
|
78
|
+
filtering.
|
|
79
|
+
|
|
80
|
+
## Why this exists
|
|
81
|
+
|
|
82
|
+
Large catalogs are useful but expensive. Sending every tool schema to the model
|
|
83
|
+
makes the request larger, slows planning, and increases accidental tool
|
|
84
|
+
selection.
|
|
85
|
+
|
|
86
|
+
Tool Search changes the shape:
|
|
87
|
+
|
|
88
|
+
- direct tools: the model sees every selected schema before the first token
|
|
89
|
+
- Tool Search code mode: the model sees one compact code tool and a short API
|
|
90
|
+
contract
|
|
91
|
+
- Tool Search tools mode: the model sees three compact structured fallback
|
|
92
|
+
tools
|
|
93
|
+
- during the turn: the model loads only the tool schemas it actually needs
|
|
94
|
+
|
|
95
|
+
Direct tool exposure is still the right default for small catalogs. Tool Search
|
|
96
|
+
is best when one run can see many tools, especially from MCP servers or
|
|
97
|
+
client-provided app tools.
|
|
98
|
+
|
|
99
|
+
## API
|
|
100
|
+
|
|
101
|
+
`nodmix.tools.search(query, options?)`
|
|
102
|
+
|
|
103
|
+
Searches the effective catalog for the current run. Results are compact and safe
|
|
104
|
+
to put back into prompt context.
|
|
105
|
+
|
|
106
|
+
```js
|
|
107
|
+
const hits = await nodmix.tools.search("calendar event", { limit: 5 });
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
`nodmix.tools.describe(id)`
|
|
111
|
+
|
|
112
|
+
Loads full metadata for one search result, including the exact input schema.
|
|
113
|
+
|
|
114
|
+
```js
|
|
115
|
+
const calendarCreate = await nodmix.tools.describe("mcp:calendar:create_event");
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
`nodmix.tools.call(id, args)`
|
|
119
|
+
|
|
120
|
+
Calls a selected tool through Nodmix.
|
|
121
|
+
|
|
122
|
+
```js
|
|
123
|
+
await nodmix.tools.call(calendarCreate.id, {
|
|
124
|
+
summary: "Planning",
|
|
125
|
+
start: "2026-05-09T14:00:00Z",
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
The structured fallback mode exposes the same operations as tools:
|
|
130
|
+
|
|
131
|
+
- `tool_search`
|
|
132
|
+
- `tool_describe`
|
|
133
|
+
- `tool_call`
|
|
134
|
+
|
|
135
|
+
## Runtime boundary
|
|
136
|
+
|
|
137
|
+
The code bridge runs in a short-lived Node subprocess. The subprocess starts
|
|
138
|
+
with Node permission mode enabled, an empty environment, no filesystem or
|
|
139
|
+
network grants, and no child-process or worker grants. Nodmix enforces a
|
|
140
|
+
parent-process wall-clock timeout and kills the subprocess on timeout, including
|
|
141
|
+
after async continuations.
|
|
142
|
+
|
|
143
|
+
The runtime exposes only:
|
|
144
|
+
|
|
145
|
+
- `console.log`, `console.warn`, and `console.error`
|
|
146
|
+
- `nodmix.tools.search`
|
|
147
|
+
- `nodmix.tools.describe`
|
|
148
|
+
- `nodmix.tools.call`
|
|
149
|
+
|
|
150
|
+
Normal Nodmix behavior still applies to final calls:
|
|
151
|
+
|
|
152
|
+
- tool allow and deny policies
|
|
153
|
+
- per-agent and per-sandbox tool restrictions
|
|
154
|
+
- channel/runtime tool policy
|
|
155
|
+
- approval hooks
|
|
156
|
+
- plugin `before_tool_call` hooks
|
|
157
|
+
- session identity, logs, and telemetry
|
|
158
|
+
|
|
159
|
+
## Config
|
|
160
|
+
|
|
161
|
+
Enable Tool Search for PI runs with the default code bridge:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
nodmix config set tools.toolSearch true
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Equivalent JSON:
|
|
168
|
+
|
|
169
|
+
```json5
|
|
170
|
+
{
|
|
171
|
+
tools: {
|
|
172
|
+
toolSearch: true,
|
|
173
|
+
},
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Use the structured fallback tools instead for PI runs:
|
|
178
|
+
|
|
179
|
+
```json5
|
|
180
|
+
{
|
|
181
|
+
tools: {
|
|
182
|
+
toolSearch: {
|
|
183
|
+
mode: "tools",
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Tune code-mode timeout and search result limits:
|
|
190
|
+
|
|
191
|
+
```json5
|
|
192
|
+
{
|
|
193
|
+
tools: {
|
|
194
|
+
toolSearch: {
|
|
195
|
+
mode: "code",
|
|
196
|
+
codeTimeoutMs: 10000,
|
|
197
|
+
searchDefaultLimit: 8,
|
|
198
|
+
maxSearchLimit: 20,
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Disable it:
|
|
205
|
+
|
|
206
|
+
```json5
|
|
207
|
+
{
|
|
208
|
+
tools: {
|
|
209
|
+
toolSearch: false,
|
|
210
|
+
},
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Prompt and telemetry
|
|
215
|
+
|
|
216
|
+
Tool Search records enough telemetry to compare it with direct tool exposure:
|
|
217
|
+
|
|
218
|
+
- total serialized tool and prompt bytes sent to the harness
|
|
219
|
+
- catalog size and source breakdown
|
|
220
|
+
- search, describe, and call counts
|
|
221
|
+
- final tool calls executed through Nodmix
|
|
222
|
+
- selected tool ids and sources
|
|
223
|
+
|
|
224
|
+
Session logs should make it possible to answer:
|
|
225
|
+
|
|
226
|
+
- how many tool schemas the model saw up front
|
|
227
|
+
- how many search and describe operations it performed
|
|
228
|
+
- which final tool was called
|
|
229
|
+
- whether the result came from Nodmix, MCP, or a client tool
|
|
230
|
+
|
|
231
|
+
## E2E validation
|
|
232
|
+
|
|
233
|
+
The gateway E2E runner proves both paths with the PI harness:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
node --import tsx scripts/tool-search-gateway-e2e.ts
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
It creates a temporary fake plugin with a large tool catalog, starts the mock
|
|
240
|
+
OpenAI provider, starts a Gateway once in direct mode and once with Tool Search
|
|
241
|
+
enabled, then compares provider request payloads and session logs.
|
|
242
|
+
|
|
243
|
+
The regression proves:
|
|
244
|
+
|
|
245
|
+
1. Direct mode can call the fake plugin tool.
|
|
246
|
+
2. Tool Search can call the same fake plugin tool.
|
|
247
|
+
3. Direct mode exposes the fake plugin tool schemas directly to the provider.
|
|
248
|
+
4. Tool Search exposes only the compact bridge.
|
|
249
|
+
5. The Tool Search request payload is smaller for the large fake catalog.
|
|
250
|
+
6. Session logs show the expected tool-call counts and bridged call telemetry.
|
|
251
|
+
|
|
252
|
+
## Failure behavior
|
|
253
|
+
|
|
254
|
+
Tool Search should fail closed:
|
|
255
|
+
|
|
256
|
+
- if a tool is not in the effective policy, search should not return it
|
|
257
|
+
- if a selected tool becomes unavailable, `tool_call` should fail
|
|
258
|
+
- if policy or approval blocks execution, the call result should report that
|
|
259
|
+
block instead of bypassing it
|
|
260
|
+
- if the code bridge cannot create an isolated runtime, use `mode: "tools"` or
|
|
261
|
+
disable Tool Search for that deployment
|
|
262
|
+
|
|
263
|
+
## Related
|
|
264
|
+
|
|
265
|
+
- [Tools and plugins](/tools)
|
|
266
|
+
- [Multi-agent sandbox and tools](/tools/multi-agent-sandbox-tools)
|
|
267
|
+
- [Exec tool](/tools/exec)
|
|
268
|
+
- [ACP agents setup](/tools/acp-agents-setup)
|
|
269
|
+
- [Building plugins](/plugins/building-plugins)
|