@quantumclaw/quantumclaw 2026.3.22
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 +4601 -0
- package/LICENSE +21 -0
- package/README.md +559 -0
- package/assets/avatar-placeholder.svg +19 -0
- package/assets/chrome-extension/icons/icon128.png +0 -0
- package/assets/chrome-extension/icons/icon16.png +0 -0
- package/assets/chrome-extension/icons/icon32.png +0 -0
- package/assets/chrome-extension/icons/icon48.png +0 -0
- package/assets/dmg-background-small.png +0 -0
- package/assets/dmg-background.png +0 -0
- package/docs/.i18n/README.md +31 -0
- package/docs/.i18n/glossary.ja-JP.json +14 -0
- package/docs/.i18n/glossary.zh-CN.json +302 -0
- package/docs/.i18n/ja-JP.tm.jsonl +0 -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/pixel-lobster.svg +60 -0
- package/docs/assets/quantumclaw-logo-text-dark.png +0 -0
- package/docs/assets/quantumclaw-logo-text-dark.svg +418 -0
- package/docs/assets/quantumclaw-logo-text.png +0 -0
- package/docs/assets/quantumclaw-logo-text.svg +418 -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.svg +14 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +53 -0
- package/docs/automation/auth-monitoring.md +44 -0
- package/docs/automation/cron-jobs.md +727 -0
- package/docs/automation/cron-vs-heartbeat.md +286 -0
- package/docs/automation/gmail-pubsub.md +256 -0
- package/docs/automation/hooks.md +1056 -0
- package/docs/automation/poll.md +86 -0
- package/docs/automation/standing-orders.md +251 -0
- package/docs/automation/troubleshooting.md +122 -0
- package/docs/automation/webhook.md +217 -0
- package/docs/brave-search.md +93 -0
- package/docs/channels/bluebubbles.md +347 -0
- package/docs/channels/broadcast-groups.md +442 -0
- package/docs/channels/channel-routing.md +139 -0
- package/docs/channels/discord.md +1229 -0
- package/docs/channels/feishu.md +747 -0
- package/docs/channels/googlechat.md +261 -0
- package/docs/channels/group-messages.md +84 -0
- package/docs/channels/groups.md +379 -0
- package/docs/channels/imessage.md +367 -0
- package/docs/channels/index.md +47 -0
- package/docs/channels/irc.md +242 -0
- package/docs/channels/line.md +194 -0
- package/docs/channels/location.md +56 -0
- package/docs/channels/matrix.md +677 -0
- package/docs/channels/mattermost.md +427 -0
- package/docs/channels/msteams.md +780 -0
- package/docs/channels/nextcloud-talk.md +138 -0
- package/docs/channels/nostr.md +249 -0
- package/docs/channels/pairing.md +114 -0
- package/docs/channels/signal.md +329 -0
- package/docs/channels/slack.md +603 -0
- package/docs/channels/synology-chat.md +134 -0
- package/docs/channels/telegram.md +987 -0
- package/docs/channels/tlon.md +276 -0
- package/docs/channels/troubleshooting.md +118 -0
- package/docs/channels/twitch.md +379 -0
- package/docs/channels/whatsapp.md +460 -0
- package/docs/channels/zalo.md +243 -0
- package/docs/channels/zalouser.md +181 -0
- package/docs/ci.md +55 -0
- package/docs/cli/acp.md +288 -0
- package/docs/cli/agent.md +29 -0
- package/docs/cli/agents.md +123 -0
- package/docs/cli/approvals.md +50 -0
- package/docs/cli/backup.md +76 -0
- package/docs/cli/browser.md +106 -0
- package/docs/cli/channels.md +102 -0
- package/docs/cli/clawbot.md +21 -0
- package/docs/cli/completion.md +35 -0
- package/docs/cli/config.md +295 -0
- package/docs/cli/configure.md +36 -0
- package/docs/cli/cron.md +77 -0
- package/docs/cli/daemon.md +53 -0
- package/docs/cli/dashboard.md +22 -0
- package/docs/cli/devices.md +139 -0
- package/docs/cli/directory.md +63 -0
- package/docs/cli/dns.md +23 -0
- package/docs/cli/docs.md +15 -0
- package/docs/cli/doctor.md +48 -0
- package/docs/cli/gateway.md +235 -0
- package/docs/cli/health.md +21 -0
- package/docs/cli/hooks.md +329 -0
- package/docs/cli/index.md +1150 -0
- package/docs/cli/logs.md +28 -0
- package/docs/cli/memory.md +66 -0
- package/docs/cli/message.md +278 -0
- package/docs/cli/models.md +81 -0
- package/docs/cli/node.md +127 -0
- package/docs/cli/nodes.md +75 -0
- package/docs/cli/onboard.md +157 -0
- package/docs/cli/pairing.md +32 -0
- package/docs/cli/plugins.md +210 -0
- package/docs/cli/qr.md +46 -0
- package/docs/cli/reset.md +20 -0
- package/docs/cli/sandbox.md +197 -0
- package/docs/cli/secrets.md +188 -0
- package/docs/cli/security.md +79 -0
- package/docs/cli/sessions.md +110 -0
- package/docs/cli/setup.md +29 -0
- package/docs/cli/skills.md +36 -0
- package/docs/cli/status.md +30 -0
- package/docs/cli/system.md +60 -0
- package/docs/cli/tui.md +30 -0
- package/docs/cli/uninstall.md +20 -0
- package/docs/cli/update.md +103 -0
- package/docs/cli/voicecall.md +34 -0
- package/docs/cli/webhooks.md +25 -0
- package/docs/concepts/agent-loop.md +148 -0
- package/docs/concepts/agent-workspace.md +236 -0
- package/docs/concepts/agent.md +122 -0
- package/docs/concepts/architecture.md +137 -0
- package/docs/concepts/compaction.md +123 -0
- package/docs/concepts/context-engine.md +268 -0
- package/docs/concepts/context.md +172 -0
- package/docs/concepts/delegate-architecture.md +296 -0
- package/docs/concepts/features.md +73 -0
- package/docs/concepts/markdown-formatting.md +130 -0
- package/docs/concepts/memory.md +108 -0
- package/docs/concepts/messages.md +154 -0
- package/docs/concepts/model-failover.md +152 -0
- package/docs/concepts/model-providers.md +607 -0
- package/docs/concepts/models.md +225 -0
- package/docs/concepts/multi-agent.md +552 -0
- package/docs/concepts/oauth.md +158 -0
- package/docs/concepts/presence.md +102 -0
- package/docs/concepts/queue.md +89 -0
- package/docs/concepts/retry.md +69 -0
- package/docs/concepts/session-pruning.md +121 -0
- package/docs/concepts/session-tool.md +242 -0
- package/docs/concepts/session.md +310 -0
- package/docs/concepts/streaming.md +155 -0
- package/docs/concepts/system-prompt.md +132 -0
- package/docs/concepts/timezone.md +91 -0
- package/docs/concepts/typebox.md +291 -0
- package/docs/concepts/typing-indicators.md +68 -0
- package/docs/concepts/usage-tracking.md +35 -0
- package/docs/date-time.md +128 -0
- package/docs/debug/node-issue.md +85 -0
- package/docs/diagnostics/flags.md +91 -0
- package/docs/docs.json +2078 -0
- package/docs/gateway/authentication.md +179 -0
- package/docs/gateway/background-process.md +97 -0
- package/docs/gateway/bonjour.md +177 -0
- package/docs/gateway/bridge-protocol.md +91 -0
- package/docs/gateway/cli-backends.md +225 -0
- package/docs/gateway/configuration-examples.md +651 -0
- package/docs/gateway/configuration-reference.md +3123 -0
- package/docs/gateway/configuration.md +633 -0
- package/docs/gateway/discovery.md +123 -0
- package/docs/gateway/doctor.md +362 -0
- package/docs/gateway/gateway-lock.md +34 -0
- package/docs/gateway/health.md +44 -0
- package/docs/gateway/heartbeat.md +393 -0
- package/docs/gateway/index.md +261 -0
- package/docs/gateway/local-models.md +152 -0
- package/docs/gateway/logging.md +113 -0
- package/docs/gateway/multiple-gateways.md +112 -0
- package/docs/gateway/network-model.md +22 -0
- package/docs/gateway/openai-http-api.md +132 -0
- package/docs/gateway/openresponses-http-api.md +295 -0
- package/docs/gateway/openshell.md +307 -0
- package/docs/gateway/pairing.md +99 -0
- package/docs/gateway/protocol.md +267 -0
- package/docs/gateway/remote-gateway-readme.md +158 -0
- package/docs/gateway/remote.md +153 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +134 -0
- package/docs/gateway/sandboxing.md +469 -0
- package/docs/gateway/secrets-plan-contract.md +116 -0
- package/docs/gateway/secrets.md +503 -0
- package/docs/gateway/security/index.md +1220 -0
- package/docs/gateway/tailscale.md +132 -0
- package/docs/gateway/tools-invoke-http-api.md +118 -0
- package/docs/gateway/troubleshooting.md +378 -0
- package/docs/gateway/trusted-proxy-auth.md +330 -0
- package/docs/help/debugging.md +168 -0
- package/docs/help/environment.md +163 -0
- package/docs/help/faq.md +2997 -0
- package/docs/help/index.md +28 -0
- package/docs/help/scripts.md +28 -0
- package/docs/help/testing.md +526 -0
- package/docs/help/troubleshooting.md +297 -0
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-step2-create-app.png +0 -0
- package/docs/images/feishu-step3-credentials.png +0 -0
- package/docs/images/feishu-step4-permissions.png +0 -0
- package/docs/images/feishu-step5-bot-capability.png +0 -0
- package/docs/images/feishu-step6-event-subscription.png +0 -0
- package/docs/images/feishu-verification-token.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 +230 -0
- package/docs/install/azure.md +311 -0
- package/docs/install/bun.md +55 -0
- package/docs/install/development-channels.md +120 -0
- package/docs/install/digitalocean.md +129 -0
- package/docs/install/docker-vm-runtime.md +142 -0
- package/docs/install/docker.md +375 -0
- package/docs/install/exe-dev.md +126 -0
- package/docs/install/fly.md +501 -0
- package/docs/install/gcp.md +402 -0
- package/docs/install/hetzner.md +251 -0
- package/docs/install/index.md +183 -0
- package/docs/install/installer.md +415 -0
- package/docs/install/kubernetes.md +191 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-matrix.md +346 -0
- package/docs/install/migrating.md +110 -0
- package/docs/install/nix.md +89 -0
- package/docs/install/node.md +138 -0
- package/docs/install/northflank.mdx +54 -0
- package/docs/install/oracle.md +156 -0
- package/docs/install/podman.md +133 -0
- package/docs/install/railway.mdx +100 -0
- package/docs/install/raspberry-pi.md +159 -0
- package/docs/install/render.mdx +169 -0
- package/docs/install/uninstall.md +128 -0
- package/docs/install/updating.md +128 -0
- package/docs/ja-JP/index.md +186 -0
- package/docs/ja-JP/start/getting-started.md +125 -0
- package/docs/ja-JP/start/wizard.md +77 -0
- package/docs/logging.md +352 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +54 -0
- package/docs/nodes/audio.md +187 -0
- package/docs/nodes/camera.md +162 -0
- package/docs/nodes/images.md +72 -0
- package/docs/nodes/index.md +393 -0
- package/docs/nodes/location-command.md +98 -0
- package/docs/nodes/media-understanding.md +394 -0
- package/docs/nodes/talk.md +92 -0
- package/docs/nodes/troubleshooting.md +114 -0
- package/docs/nodes/voicewake.md +66 -0
- package/docs/perplexity.md +174 -0
- package/docs/pi-dev.md +80 -0
- package/docs/pi.md +567 -0
- package/docs/platforms/android.md +168 -0
- package/docs/platforms/digitalocean.md +266 -0
- package/docs/platforms/index.md +54 -0
- package/docs/platforms/ios.md +220 -0
- package/docs/platforms/linux.md +94 -0
- package/docs/platforms/mac/bundled-gateway.md +73 -0
- package/docs/platforms/mac/canvas.md +125 -0
- package/docs/platforms/mac/child-process.md +69 -0
- package/docs/platforms/mac/dev-setup.md +104 -0
- package/docs/platforms/mac/health.md +34 -0
- package/docs/platforms/mac/icon.md +31 -0
- package/docs/platforms/mac/logging.md +57 -0
- package/docs/platforms/mac/menu-bar.md +81 -0
- package/docs/platforms/mac/peekaboo.md +65 -0
- package/docs/platforms/mac/permissions.md +50 -0
- package/docs/platforms/mac/remote.md +84 -0
- package/docs/platforms/mac/signing.md +47 -0
- package/docs/platforms/mac/skills.md +33 -0
- package/docs/platforms/mac/voice-overlay.md +60 -0
- package/docs/platforms/mac/voicewake.md +67 -0
- package/docs/platforms/mac/webchat.md +43 -0
- package/docs/platforms/mac/xpc.md +61 -0
- package/docs/platforms/macos.md +226 -0
- package/docs/platforms/oracle.md +303 -0
- package/docs/platforms/raspberry-pi.md +412 -0
- package/docs/platforms/windows.md +241 -0
- package/docs/plugins/agent-tools.md +10 -0
- package/docs/plugins/architecture.md +1366 -0
- package/docs/plugins/building-extensions.md +10 -0
- package/docs/plugins/building-plugins.md +239 -0
- package/docs/plugins/bundles.md +181 -0
- package/docs/plugins/community.md +145 -0
- package/docs/plugins/manifest.md +241 -0
- package/docs/plugins/sdk-channel-plugins.md +370 -0
- package/docs/plugins/sdk-entrypoints.md +161 -0
- package/docs/plugins/sdk-migration.md +172 -0
- package/docs/plugins/sdk-overview.md +196 -0
- package/docs/plugins/sdk-provider-plugins.md +370 -0
- package/docs/plugins/sdk-runtime.md +345 -0
- package/docs/plugins/sdk-setup.md +331 -0
- package/docs/plugins/sdk-testing.md +263 -0
- package/docs/plugins/voice-call.md +380 -0
- package/docs/plugins/zalouser.md +77 -0
- package/docs/prose.md +134 -0
- package/docs/providers/anthropic.md +259 -0
- package/docs/providers/bedrock.md +176 -0
- package/docs/providers/claude-max-api-proxy.md +154 -0
- package/docs/providers/cloudflare-ai-gateway.md +71 -0
- package/docs/providers/deepgram.md +93 -0
- package/docs/providers/github-copilot.md +72 -0
- package/docs/providers/glm.md +43 -0
- package/docs/providers/google.md +78 -0
- package/docs/providers/groq.md +96 -0
- package/docs/providers/huggingface.md +209 -0
- package/docs/providers/index.md +69 -0
- package/docs/providers/kilocode.md +74 -0
- package/docs/providers/litellm.md +154 -0
- package/docs/providers/minimax.md +224 -0
- package/docs/providers/mistral.md +54 -0
- package/docs/providers/models.md +45 -0
- package/docs/providers/modelstudio.md +66 -0
- package/docs/providers/moonshot.md +175 -0
- package/docs/providers/nvidia.md +55 -0
- package/docs/providers/ollama.md +352 -0
- package/docs/providers/openai.md +303 -0
- package/docs/providers/opencode-go.md +45 -0
- package/docs/providers/opencode.md +64 -0
- package/docs/providers/openrouter.md +37 -0
- package/docs/providers/perplexity-provider.md +62 -0
- package/docs/providers/qianfan.md +38 -0
- package/docs/providers/qwen.md +53 -0
- package/docs/providers/sglang.md +104 -0
- package/docs/providers/synthetic.md +99 -0
- package/docs/providers/together.md +66 -0
- package/docs/providers/venice.md +282 -0
- package/docs/providers/vercel-ai-gateway.md +60 -0
- package/docs/providers/vllm.md +92 -0
- package/docs/providers/volcengine.md +74 -0
- package/docs/providers/xai.md +60 -0
- package/docs/providers/xiaomi.md +86 -0
- package/docs/providers/zai.md +46 -0
- package/docs/reference/AGENTS.default.md +126 -0
- package/docs/reference/RELEASING.md +42 -0
- package/docs/reference/api-usage-costs.md +144 -0
- package/docs/reference/credits.md +30 -0
- package/docs/reference/device-models.md +47 -0
- package/docs/reference/memory-config.md +711 -0
- package/docs/reference/prompt-caching.md +185 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +140 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +563 -0
- package/docs/reference/session-management-compaction.md +324 -0
- package/docs/reference/templates/AGENTS.dev.md +83 -0
- package/docs/reference/templates/AGENTS.md +219 -0
- package/docs/reference/templates/BOOT.md +11 -0
- package/docs/reference/templates/BOOTSTRAP.md +62 -0
- package/docs/reference/templates/HEARTBEAT.md +14 -0
- package/docs/reference/templates/IDENTITY.dev.md +47 -0
- package/docs/reference/templates/IDENTITY.md +29 -0
- package/docs/reference/templates/SOUL.dev.md +76 -0
- package/docs/reference/templates/SOUL.md +43 -0
- package/docs/reference/templates/TOOLS.dev.md +24 -0
- package/docs/reference/templates/TOOLS.md +47 -0
- package/docs/reference/templates/USER.dev.md +18 -0
- package/docs/reference/templates/USER.md +23 -0
- package/docs/reference/test.md +90 -0
- package/docs/reference/token-use.md +175 -0
- package/docs/reference/transcript-hygiene.md +151 -0
- package/docs/reference/wizard.md +235 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +167 -0
- package/docs/start/bootstrapping.md +41 -0
- package/docs/start/docs-directory.md +66 -0
- package/docs/start/getting-started.md +116 -0
- package/docs/start/hubs.md +198 -0
- package/docs/start/lore.md +219 -0
- package/docs/start/onboarding-overview.md +67 -0
- package/docs/start/onboarding.md +91 -0
- package/docs/start/openclaw.md +221 -0
- package/docs/start/quickstart.md +22 -0
- package/docs/start/setup.md +164 -0
- package/docs/start/showcase.md +418 -0
- package/docs/start/wizard-cli-automation.md +215 -0
- package/docs/start/wizard-cli-reference.md +299 -0
- package/docs/start/wizard.md +125 -0
- package/docs/style.css +37 -0
- package/docs/tools/acp-agents.md +623 -0
- package/docs/tools/agent-send.md +100 -0
- package/docs/tools/apply-patch.md +51 -0
- package/docs/tools/brave-search.md +93 -0
- package/docs/tools/browser-linux-troubleshooting.md +138 -0
- package/docs/tools/browser-login.md +73 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +211 -0
- package/docs/tools/browser.md +731 -0
- package/docs/tools/btw.md +142 -0
- package/docs/tools/capability-cookbook.md +119 -0
- package/docs/tools/clawhub.md +298 -0
- package/docs/tools/creating-skills.md +117 -0
- package/docs/tools/diffs.md +386 -0
- package/docs/tools/elevated.md +114 -0
- package/docs/tools/exec-approvals.md +430 -0
- package/docs/tools/exec.md +207 -0
- package/docs/tools/firecrawl.md +140 -0
- package/docs/tools/index.md +137 -0
- package/docs/tools/llm-task.md +119 -0
- package/docs/tools/lobster.md +340 -0
- package/docs/tools/loop-detection.md +100 -0
- package/docs/tools/multi-agent-sandbox-tools.md +364 -0
- package/docs/tools/pdf.md +156 -0
- package/docs/tools/perplexity-search.md +174 -0
- package/docs/tools/plugin.md +255 -0
- package/docs/tools/reactions.md +64 -0
- package/docs/tools/skills-config.md +86 -0
- package/docs/tools/skills.md +309 -0
- package/docs/tools/slash-commands.md +294 -0
- package/docs/tools/subagents.md +295 -0
- package/docs/tools/tavily.md +125 -0
- package/docs/tools/thinking.md +96 -0
- package/docs/tools/tts.md +406 -0
- package/docs/tools/web.md +516 -0
- package/docs/tts.md +406 -0
- package/docs/vps.md +112 -0
- package/docs/web/control-ui.md +275 -0
- package/docs/web/dashboard.md +54 -0
- package/docs/web/index.md +120 -0
- package/docs/web/tui.md +170 -0
- package/docs/web/webchat.md +61 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/docs/zh-CN/AGENTS.md +61 -0
- package/docs/zh-CN/automation/auth-monitoring.md +47 -0
- package/docs/zh-CN/automation/cron-jobs.md +435 -0
- package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
- package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
- package/docs/zh-CN/automation/hooks.md +1051 -0
- package/docs/zh-CN/automation/poll.md +76 -0
- package/docs/zh-CN/automation/troubleshooting.md +8 -0
- package/docs/zh-CN/automation/webhook.md +163 -0
- package/docs/zh-CN/brave-search.md +60 -0
- package/docs/zh-CN/channels/bluebubbles.md +354 -0
- package/docs/zh-CN/channels/broadcast-groups.md +449 -0
- package/docs/zh-CN/channels/channel-routing.md +117 -0
- package/docs/zh-CN/channels/discord.md +468 -0
- package/docs/zh-CN/channels/feishu.md +728 -0
- package/docs/zh-CN/channels/googlechat.md +257 -0
- package/docs/zh-CN/channels/grammy.md +38 -0
- package/docs/zh-CN/channels/group-messages.md +91 -0
- package/docs/zh-CN/channels/groups.md +379 -0
- package/docs/zh-CN/channels/imessage.md +302 -0
- package/docs/zh-CN/channels/index.md +53 -0
- package/docs/zh-CN/channels/line.md +180 -0
- package/docs/zh-CN/channels/location.md +63 -0
- package/docs/zh-CN/channels/matrix.md +221 -0
- package/docs/zh-CN/channels/mattermost.md +144 -0
- package/docs/zh-CN/channels/msteams.md +775 -0
- package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
- package/docs/zh-CN/channels/nostr.md +249 -0
- package/docs/zh-CN/channels/pairing.md +89 -0
- package/docs/zh-CN/channels/signal.md +209 -0
- package/docs/zh-CN/channels/slack.md +531 -0
- package/docs/zh-CN/channels/synology-chat.md +138 -0
- package/docs/zh-CN/channels/telegram.md +751 -0
- package/docs/zh-CN/channels/tlon.md +136 -0
- package/docs/zh-CN/channels/troubleshooting.md +36 -0
- package/docs/zh-CN/channels/twitch.md +385 -0
- package/docs/zh-CN/channels/whatsapp.md +411 -0
- package/docs/zh-CN/channels/zalo.md +196 -0
- package/docs/zh-CN/channels/zalouser.md +147 -0
- package/docs/zh-CN/cli/acp.md +173 -0
- package/docs/zh-CN/cli/agent.md +30 -0
- package/docs/zh-CN/cli/agents.md +82 -0
- package/docs/zh-CN/cli/approvals.md +57 -0
- package/docs/zh-CN/cli/browser.md +114 -0
- package/docs/zh-CN/cli/channels.md +86 -0
- package/docs/zh-CN/cli/config.md +57 -0
- package/docs/zh-CN/cli/configure.md +38 -0
- package/docs/zh-CN/cli/cron.md +43 -0
- package/docs/zh-CN/cli/dashboard.md +23 -0
- package/docs/zh-CN/cli/devices.md +74 -0
- package/docs/zh-CN/cli/directory.md +70 -0
- package/docs/zh-CN/cli/dns.md +30 -0
- package/docs/zh-CN/cli/docs.md +22 -0
- package/docs/zh-CN/cli/doctor.md +48 -0
- package/docs/zh-CN/cli/gateway.md +206 -0
- package/docs/zh-CN/cli/health.md +28 -0
- package/docs/zh-CN/cli/hooks.md +298 -0
- package/docs/zh-CN/cli/index.md +1143 -0
- package/docs/zh-CN/cli/logs.md +31 -0
- package/docs/zh-CN/cli/memory.md +52 -0
- package/docs/zh-CN/cli/message.md +246 -0
- package/docs/zh-CN/cli/models.md +85 -0
- package/docs/zh-CN/cli/node.md +115 -0
- package/docs/zh-CN/cli/nodes.md +80 -0
- package/docs/zh-CN/cli/onboard.md +164 -0
- package/docs/zh-CN/cli/pairing.md +28 -0
- package/docs/zh-CN/cli/plugins.md +66 -0
- package/docs/zh-CN/cli/reset.md +24 -0
- package/docs/zh-CN/cli/sandbox.md +158 -0
- package/docs/zh-CN/cli/security.md +33 -0
- package/docs/zh-CN/cli/sessions.md +23 -0
- package/docs/zh-CN/cli/setup.md +36 -0
- package/docs/zh-CN/cli/skills.md +33 -0
- package/docs/zh-CN/cli/status.md +33 -0
- package/docs/zh-CN/cli/system.md +63 -0
- package/docs/zh-CN/cli/tui.md +30 -0
- package/docs/zh-CN/cli/uninstall.md +24 -0
- package/docs/zh-CN/cli/update.md +101 -0
- package/docs/zh-CN/cli/voicecall.md +41 -0
- package/docs/zh-CN/cli/webhooks.md +32 -0
- package/docs/zh-CN/concepts/agent-loop.md +146 -0
- package/docs/zh-CN/concepts/agent-workspace.md +219 -0
- package/docs/zh-CN/concepts/agent.md +115 -0
- package/docs/zh-CN/concepts/architecture.md +123 -0
- package/docs/zh-CN/concepts/compaction.md +67 -0
- package/docs/zh-CN/concepts/context.md +168 -0
- package/docs/zh-CN/concepts/features.md +59 -0
- package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
- package/docs/zh-CN/concepts/memory.md +412 -0
- package/docs/zh-CN/concepts/messages.md +141 -0
- package/docs/zh-CN/concepts/model-failover.md +145 -0
- package/docs/zh-CN/concepts/model-providers.md +606 -0
- package/docs/zh-CN/concepts/models.md +225 -0
- package/docs/zh-CN/concepts/multi-agent.md +372 -0
- package/docs/zh-CN/concepts/oauth.md +164 -0
- package/docs/zh-CN/concepts/presence.md +99 -0
- package/docs/zh-CN/concepts/queue.md +94 -0
- package/docs/zh-CN/concepts/retry.md +76 -0
- package/docs/zh-CN/concepts/session-pruning.md +129 -0
- package/docs/zh-CN/concepts/session-tool.md +200 -0
- package/docs/zh-CN/concepts/session.md +166 -0
- package/docs/zh-CN/concepts/streaming.md +133 -0
- package/docs/zh-CN/concepts/system-prompt.md +101 -0
- package/docs/zh-CN/concepts/timezone.md +96 -0
- package/docs/zh-CN/concepts/typebox.md +284 -0
- package/docs/zh-CN/concepts/typing-indicators.md +74 -0
- package/docs/zh-CN/concepts/usage-tracking.md +42 -0
- package/docs/zh-CN/date-time.md +129 -0
- package/docs/zh-CN/debug/node-issue.md +90 -0
- package/docs/zh-CN/diagnostics/flags.md +98 -0
- package/docs/zh-CN/gateway/authentication.md +184 -0
- package/docs/zh-CN/gateway/background-process.md +100 -0
- package/docs/zh-CN/gateway/bonjour.md +174 -0
- package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
- package/docs/zh-CN/gateway/cli-backends.md +213 -0
- package/docs/zh-CN/gateway/configuration-examples.md +587 -0
- package/docs/zh-CN/gateway/configuration-reference.md +3103 -0
- package/docs/zh-CN/gateway/configuration.md +640 -0
- package/docs/zh-CN/gateway/discovery.md +123 -0
- package/docs/zh-CN/gateway/doctor.md +238 -0
- package/docs/zh-CN/gateway/gateway-lock.md +41 -0
- package/docs/zh-CN/gateway/health.md +42 -0
- package/docs/zh-CN/gateway/heartbeat.md +274 -0
- package/docs/zh-CN/gateway/index.md +335 -0
- package/docs/zh-CN/gateway/local-models.md +159 -0
- package/docs/zh-CN/gateway/logging.md +114 -0
- package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
- package/docs/zh-CN/gateway/network-model.md +23 -0
- package/docs/zh-CN/gateway/openai-http-api.md +125 -0
- package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
- package/docs/zh-CN/gateway/pairing.md +99 -0
- package/docs/zh-CN/gateway/protocol.md +220 -0
- package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
- package/docs/zh-CN/gateway/remote.md +133 -0
- package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
- package/docs/zh-CN/gateway/sandboxing.md +188 -0
- package/docs/zh-CN/gateway/security/index.md +777 -0
- package/docs/zh-CN/gateway/tailscale.md +124 -0
- package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
- package/docs/zh-CN/gateway/troubleshooting.md +771 -0
- package/docs/zh-CN/help/debugging.md +160 -0
- package/docs/zh-CN/help/environment.md +88 -0
- package/docs/zh-CN/help/faq.md +2640 -0
- package/docs/zh-CN/help/index.md +28 -0
- package/docs/zh-CN/help/scripts.md +35 -0
- package/docs/zh-CN/help/testing.md +375 -0
- package/docs/zh-CN/help/troubleshooting.md +104 -0
- package/docs/zh-CN/index.md +186 -0
- package/docs/zh-CN/install/ansible.md +215 -0
- package/docs/zh-CN/install/bun.md +65 -0
- package/docs/zh-CN/install/development-channels.md +81 -0
- package/docs/zh-CN/install/docker.md +532 -0
- package/docs/zh-CN/install/exe-dev.md +133 -0
- package/docs/zh-CN/install/fly.md +490 -0
- package/docs/zh-CN/install/gcp.md +510 -0
- package/docs/zh-CN/install/hetzner.md +337 -0
- package/docs/zh-CN/install/index.md +235 -0
- package/docs/zh-CN/install/installer.md +422 -0
- package/docs/zh-CN/install/macos-vm.md +288 -0
- package/docs/zh-CN/install/migrating.md +199 -0
- package/docs/zh-CN/install/nix.md +99 -0
- package/docs/zh-CN/install/node.md +8 -0
- package/docs/zh-CN/install/northflank.mdx +60 -0
- package/docs/zh-CN/install/railway.mdx +106 -0
- package/docs/zh-CN/install/render.mdx +169 -0
- package/docs/zh-CN/install/uninstall.md +135 -0
- package/docs/zh-CN/install/updating.md +233 -0
- package/docs/zh-CN/logging.md +329 -0
- package/docs/zh-CN/network.md +59 -0
- package/docs/zh-CN/nodes/audio.md +120 -0
- package/docs/zh-CN/nodes/camera.md +162 -0
- package/docs/zh-CN/nodes/images.md +79 -0
- package/docs/zh-CN/nodes/index.md +348 -0
- package/docs/zh-CN/nodes/location-command.md +120 -0
- package/docs/zh-CN/nodes/media-understanding.md +380 -0
- package/docs/zh-CN/nodes/talk.md +97 -0
- package/docs/zh-CN/nodes/troubleshooting.md +8 -0
- package/docs/zh-CN/nodes/voicewake.md +72 -0
- package/docs/zh-CN/perplexity.md +102 -0
- package/docs/zh-CN/pi-dev.md +77 -0
- package/docs/zh-CN/pi.md +619 -0
- package/docs/zh-CN/platforms/android.md +155 -0
- package/docs/zh-CN/platforms/digitalocean.md +273 -0
- package/docs/zh-CN/platforms/index.md +60 -0
- package/docs/zh-CN/platforms/ios.md +114 -0
- package/docs/zh-CN/platforms/linux.md +100 -0
- package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
- package/docs/zh-CN/platforms/mac/canvas.md +128 -0
- package/docs/zh-CN/platforms/mac/child-process.md +73 -0
- package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
- package/docs/zh-CN/platforms/mac/health.md +41 -0
- package/docs/zh-CN/platforms/mac/icon.md +38 -0
- package/docs/zh-CN/platforms/mac/logging.md +64 -0
- package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
- package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
- package/docs/zh-CN/platforms/mac/permissions.md +46 -0
- package/docs/zh-CN/platforms/mac/remote.md +90 -0
- package/docs/zh-CN/platforms/mac/signing.md +54 -0
- package/docs/zh-CN/platforms/mac/skills.md +40 -0
- package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
- package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
- package/docs/zh-CN/platforms/mac/webchat.md +43 -0
- package/docs/zh-CN/platforms/mac/xpc.md +68 -0
- package/docs/zh-CN/platforms/macos.md +193 -0
- package/docs/zh-CN/platforms/oracle.md +310 -0
- package/docs/zh-CN/platforms/raspberry-pi.md +416 -0
- package/docs/zh-CN/platforms/windows.md +247 -0
- package/docs/zh-CN/plugins/agent-tools.md +99 -0
- package/docs/zh-CN/plugins/manifest.md +68 -0
- package/docs/zh-CN/plugins/voice-call.md +250 -0
- package/docs/zh-CN/plugins/zalouser.md +88 -0
- package/docs/zh-CN/prose.md +141 -0
- package/docs/zh-CN/providers/anthropic.md +265 -0
- package/docs/zh-CN/providers/bedrock.md +170 -0
- package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
- package/docs/zh-CN/providers/cloudflare-ai-gateway.md +78 -0
- package/docs/zh-CN/providers/deepgram.md +97 -0
- package/docs/zh-CN/providers/github-copilot.md +67 -0
- package/docs/zh-CN/providers/glm.md +50 -0
- package/docs/zh-CN/providers/huggingface.md +216 -0
- package/docs/zh-CN/providers/index.md +69 -0
- package/docs/zh-CN/providers/kilocode.md +80 -0
- package/docs/zh-CN/providers/litellm.md +160 -0
- package/docs/zh-CN/providers/minimax.md +222 -0
- package/docs/zh-CN/providers/mistral.md +61 -0
- package/docs/zh-CN/providers/models.md +51 -0
- package/docs/zh-CN/providers/moonshot.md +182 -0
- package/docs/zh-CN/providers/nvidia.md +62 -0
- package/docs/zh-CN/providers/ollama.md +359 -0
- package/docs/zh-CN/providers/openai.md +308 -0
- package/docs/zh-CN/providers/opencode-go.md +52 -0
- package/docs/zh-CN/providers/opencode.md +71 -0
- package/docs/zh-CN/providers/openrouter.md +44 -0
- package/docs/zh-CN/providers/qianfan.md +45 -0
- package/docs/zh-CN/providers/qwen.md +55 -0
- package/docs/zh-CN/providers/sglang.md +111 -0
- package/docs/zh-CN/providers/synthetic.md +106 -0
- package/docs/zh-CN/providers/together.md +72 -0
- package/docs/zh-CN/providers/venice.md +289 -0
- package/docs/zh-CN/providers/vercel-ai-gateway.md +66 -0
- package/docs/zh-CN/providers/xiaomi.md +93 -0
- package/docs/zh-CN/providers/zai.md +53 -0
- package/docs/zh-CN/reference/AGENTS.default.md +131 -0
- package/docs/zh-CN/reference/RELEASING.md +48 -0
- package/docs/zh-CN/reference/api-usage-costs.md +141 -0
- package/docs/zh-CN/reference/credits.md +34 -0
- package/docs/zh-CN/reference/device-models.md +54 -0
- package/docs/zh-CN/reference/rpc.md +48 -0
- package/docs/zh-CN/reference/session-management-compaction.md +287 -0
- package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
- package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
- package/docs/zh-CN/reference/templates/BOOT.md +17 -0
- package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
- package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
- package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
- package/docs/zh-CN/reference/templates/IDENTITY.md +36 -0
- package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
- package/docs/zh-CN/reference/templates/SOUL.md +49 -0
- package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
- package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
- package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
- package/docs/zh-CN/reference/templates/USER.md +30 -0
- package/docs/zh-CN/reference/test.md +57 -0
- package/docs/zh-CN/reference/token-use.md +119 -0
- package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
- package/docs/zh-CN/reference/wizard.md +242 -0
- package/docs/zh-CN/security/formal-verification.md +171 -0
- package/docs/zh-CN/start/bootstrapping.md +9 -0
- package/docs/zh-CN/start/docs-directory.md +70 -0
- package/docs/zh-CN/start/getting-started.md +143 -0
- package/docs/zh-CN/start/hubs.md +194 -0
- package/docs/zh-CN/start/lore.md +226 -0
- package/docs/zh-CN/start/onboarding-overview.md +58 -0
- package/docs/zh-CN/start/onboarding.md +105 -0
- package/docs/zh-CN/start/openclaw.md +248 -0
- package/docs/zh-CN/start/quickstart.md +88 -0
- package/docs/zh-CN/start/setup.md +153 -0
- package/docs/zh-CN/start/showcase.md +423 -0
- package/docs/zh-CN/start/wizard-cli-automation.md +222 -0
- package/docs/zh-CN/start/wizard-cli-reference.md +306 -0
- package/docs/zh-CN/start/wizard.md +132 -0
- package/docs/zh-CN/tools/agent-send.md +59 -0
- package/docs/zh-CN/tools/apply-patch.md +57 -0
- package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
- package/docs/zh-CN/tools/browser-login.md +75 -0
- package/docs/zh-CN/tools/browser.md +553 -0
- package/docs/zh-CN/tools/chrome-extension.md +183 -0
- package/docs/zh-CN/tools/clawhub.md +209 -0
- package/docs/zh-CN/tools/creating-skills.md +61 -0
- package/docs/zh-CN/tools/elevated.md +64 -0
- package/docs/zh-CN/tools/exec-approvals.md +234 -0
- package/docs/zh-CN/tools/exec.md +169 -0
- package/docs/zh-CN/tools/firecrawl.md +68 -0
- package/docs/zh-CN/tools/index.md +515 -0
- package/docs/zh-CN/tools/llm-task.md +117 -0
- package/docs/zh-CN/tools/lobster.md +349 -0
- package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +401 -0
- package/docs/zh-CN/tools/plugin.md +1612 -0
- package/docs/zh-CN/tools/reactions.md +29 -0
- package/docs/zh-CN/tools/skills-config.md +78 -0
- package/docs/zh-CN/tools/skills.md +279 -0
- package/docs/zh-CN/tools/slash-commands.md +205 -0
- package/docs/zh-CN/tools/subagents.md +167 -0
- package/docs/zh-CN/tools/thinking.md +80 -0
- package/docs/zh-CN/tools/web.md +289 -0
- package/docs/zh-CN/tts.md +375 -0
- package/docs/zh-CN/vps.md +47 -0
- package/docs/zh-CN/web/control-ui.md +191 -0
- package/docs/zh-CN/web/dashboard.md +53 -0
- package/docs/zh-CN/web/index.md +118 -0
- package/docs/zh-CN/web/tui.md +166 -0
- package/docs/zh-CN/web/webchat.md +56 -0
- package/package.json +841 -0
- package/quantumclaw.mjs +135 -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/bluebubbles/SKILL.md +131 -0
- package/skills/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +198 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +295 -0
- package/skills/discord/SKILL.md +197 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +43 -0
- package/skills/gh-issues/SKILL.md +865 -0
- package/skills/gifgrep/SKILL.md +79 -0
- package/skills/github/SKILL.md +163 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +245 -0
- package/skills/himalaya/SKILL.md +257 -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/model-usage/SKILL.md +69 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +320 -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/notion/SKILL.md +174 -0
- package/skills/obsidian/SKILL.md +81 -0
- package/skills/openai-image-gen/SKILL.md +92 -0
- package/skills/openai-image-gen/scripts/gen.py +328 -0
- package/skills/openai-image-gen/scripts/test_gen.py +140 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +52 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +125 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/session-logs/SKILL.md +115 -0
- package/skills/sherpa-onnx-tts/SKILL.md +103 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +372 -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 +159 -0
- package/skills/skill-creator/scripts/test_package_skill.py +160 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
- package/skills/slack/SKILL.md +144 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +153 -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 +95 -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 +112 -0
- package/skills/xurl/SKILL.md +461 -0
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: “Per-agent sandbox + tool restrictions, precedence, and examples”
|
|
3
|
+
title: Multi-Agent Sandbox & Tools
|
|
4
|
+
read_when: “You want per-agent sandboxing or per-agent tool allow/deny policies in a multi-agent gateway.”
|
|
5
|
+
status: active
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Multi-Agent Sandbox & Tools Configuration
|
|
9
|
+
|
|
10
|
+
Each agent in a multi-agent setup can override the global sandbox and tool
|
|
11
|
+
policy. This page covers per-agent configuration, precedence rules, and
|
|
12
|
+
examples.
|
|
13
|
+
|
|
14
|
+
- **Sandbox backends and modes**: see [Sandboxing](/gateway/sandboxing).
|
|
15
|
+
- **Debugging blocked tools**: see [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated) and `quantumclaw sandbox explain`.
|
|
16
|
+
- **Elevated exec**: see [Elevated Mode](/tools/elevated).
|
|
17
|
+
|
|
18
|
+
Auth is per-agent: each agent reads from its own `agentDir` auth store at
|
|
19
|
+
`~/.quantumclaw/agents/<agentId>/agent/auth-profiles.json`.
|
|
20
|
+
Credentials are **not** shared between agents. Never reuse `agentDir` across agents.
|
|
21
|
+
If you want to share creds, copy `auth-profiles.json` into the other agent's `agentDir`.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Configuration Examples
|
|
26
|
+
|
|
27
|
+
### Example 1: Personal + Restricted Family Agent
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"agents": {
|
|
32
|
+
"list": [
|
|
33
|
+
{
|
|
34
|
+
"id": "main",
|
|
35
|
+
"default": true,
|
|
36
|
+
"name": "Personal Assistant",
|
|
37
|
+
"workspace": "~/.quantumclaw/workspace",
|
|
38
|
+
"sandbox": { "mode": "off" }
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "family",
|
|
42
|
+
"name": "Family Bot",
|
|
43
|
+
"workspace": "~/.quantumclaw/workspace-family",
|
|
44
|
+
"sandbox": {
|
|
45
|
+
"mode": "all",
|
|
46
|
+
"scope": "agent"
|
|
47
|
+
},
|
|
48
|
+
"tools": {
|
|
49
|
+
"allow": ["read"],
|
|
50
|
+
"deny": ["exec", "write", "edit", "apply_patch", "process", "browser"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"bindings": [
|
|
56
|
+
{
|
|
57
|
+
"agentId": "family",
|
|
58
|
+
"match": {
|
|
59
|
+
"provider": "whatsapp",
|
|
60
|
+
"accountId": "*",
|
|
61
|
+
"peer": {
|
|
62
|
+
"kind": "group",
|
|
63
|
+
"id": "120363424282127706@g.us"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Result:**
|
|
72
|
+
|
|
73
|
+
- `main` agent: Runs on host, full tool access
|
|
74
|
+
- `family` agent: Runs in Docker (one container per agent), only `read` tool
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
### Example 2: Work Agent with Shared Sandbox
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
{
|
|
82
|
+
"agents": {
|
|
83
|
+
"list": [
|
|
84
|
+
{
|
|
85
|
+
"id": "personal",
|
|
86
|
+
"workspace": "~/.quantumclaw/workspace-personal",
|
|
87
|
+
"sandbox": { "mode": "off" }
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "work",
|
|
91
|
+
"workspace": "~/.quantumclaw/workspace-work",
|
|
92
|
+
"sandbox": {
|
|
93
|
+
"mode": "all",
|
|
94
|
+
"scope": "shared",
|
|
95
|
+
"workspaceRoot": "/tmp/work-sandboxes"
|
|
96
|
+
},
|
|
97
|
+
"tools": {
|
|
98
|
+
"allow": ["read", "write", "apply_patch", "exec"],
|
|
99
|
+
"deny": ["browser", "gateway", "discord"]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### Example 2b: Global coding profile + messaging-only agent
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"tools": { "profile": "coding" },
|
|
114
|
+
"agents": {
|
|
115
|
+
"list": [
|
|
116
|
+
{
|
|
117
|
+
"id": "support",
|
|
118
|
+
"tools": { "profile": "messaging", "allow": ["slack"] }
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Result:**
|
|
126
|
+
|
|
127
|
+
- default agents get coding tools
|
|
128
|
+
- `support` agent is messaging-only (+ Slack tool)
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
### Example 3: Different Sandbox Modes per Agent
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"agents": {
|
|
137
|
+
"defaults": {
|
|
138
|
+
"sandbox": {
|
|
139
|
+
"mode": "non-main", // Global default
|
|
140
|
+
"scope": "session"
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
"list": [
|
|
144
|
+
{
|
|
145
|
+
"id": "main",
|
|
146
|
+
"workspace": "~/.quantumclaw/workspace",
|
|
147
|
+
"sandbox": {
|
|
148
|
+
"mode": "off" // Override: main never sandboxed
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "public",
|
|
153
|
+
"workspace": "~/.quantumclaw/workspace-public",
|
|
154
|
+
"sandbox": {
|
|
155
|
+
"mode": "all", // Override: public always sandboxed
|
|
156
|
+
"scope": "agent"
|
|
157
|
+
},
|
|
158
|
+
"tools": {
|
|
159
|
+
"allow": ["read"],
|
|
160
|
+
"deny": ["exec", "write", "edit", "apply_patch"]
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## Configuration Precedence
|
|
171
|
+
|
|
172
|
+
When both global (`agents.defaults.*`) and agent-specific (`agents.list[].*`) configs exist:
|
|
173
|
+
|
|
174
|
+
### Sandbox Config
|
|
175
|
+
|
|
176
|
+
Agent-specific settings override global:
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
agents.list[].sandbox.mode > agents.defaults.sandbox.mode
|
|
180
|
+
agents.list[].sandbox.scope > agents.defaults.sandbox.scope
|
|
181
|
+
agents.list[].sandbox.workspaceRoot > agents.defaults.sandbox.workspaceRoot
|
|
182
|
+
agents.list[].sandbox.workspaceAccess > agents.defaults.sandbox.workspaceAccess
|
|
183
|
+
agents.list[].sandbox.docker.* > agents.defaults.sandbox.docker.*
|
|
184
|
+
agents.list[].sandbox.browser.* > agents.defaults.sandbox.browser.*
|
|
185
|
+
agents.list[].sandbox.prune.* > agents.defaults.sandbox.prune.*
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Notes:**
|
|
189
|
+
|
|
190
|
+
- `agents.list[].sandbox.{docker,browser,prune}.*` overrides `agents.defaults.sandbox.{docker,browser,prune}.*` for that agent (ignored when sandbox scope resolves to `"shared"`).
|
|
191
|
+
|
|
192
|
+
### Tool Restrictions
|
|
193
|
+
|
|
194
|
+
The filtering order is:
|
|
195
|
+
|
|
196
|
+
1. **Tool profile** (`tools.profile` or `agents.list[].tools.profile`)
|
|
197
|
+
2. **Provider tool profile** (`tools.byProvider[provider].profile` or `agents.list[].tools.byProvider[provider].profile`)
|
|
198
|
+
3. **Global tool policy** (`tools.allow` / `tools.deny`)
|
|
199
|
+
4. **Provider tool policy** (`tools.byProvider[provider].allow/deny`)
|
|
200
|
+
5. **Agent-specific tool policy** (`agents.list[].tools.allow/deny`)
|
|
201
|
+
6. **Agent provider policy** (`agents.list[].tools.byProvider[provider].allow/deny`)
|
|
202
|
+
7. **Sandbox tool policy** (`tools.sandbox.tools` or `agents.list[].tools.sandbox.tools`)
|
|
203
|
+
8. **Subagent tool policy** (`tools.subagents.tools`, if applicable)
|
|
204
|
+
|
|
205
|
+
Each level can further restrict tools, but cannot grant back denied tools from earlier levels.
|
|
206
|
+
If `agents.list[].tools.sandbox.tools` is set, it replaces `tools.sandbox.tools` for that agent.
|
|
207
|
+
If `agents.list[].tools.profile` is set, it overrides `tools.profile` for that agent.
|
|
208
|
+
Provider tool keys accept either `provider` (e.g. `google-antigravity`) or `provider/model` (e.g. `openai/gpt-5.2`).
|
|
209
|
+
|
|
210
|
+
Tool policies support `group:*` shorthands that expand to multiple tools. See [Tool groups](/gateway/sandbox-vs-tool-policy-vs-elevated#tool-groups-shorthands) for the full list.
|
|
211
|
+
|
|
212
|
+
Per-agent elevated overrides (`agents.list[].tools.elevated`) can further restrict elevated exec for specific agents. See [Elevated Mode](/tools/elevated) for details.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Migration from Single Agent
|
|
217
|
+
|
|
218
|
+
**Before (single agent):**
|
|
219
|
+
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"agents": {
|
|
223
|
+
"defaults": {
|
|
224
|
+
"workspace": "~/.quantumclaw/workspace",
|
|
225
|
+
"sandbox": {
|
|
226
|
+
"mode": "non-main"
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
"tools": {
|
|
231
|
+
"sandbox": {
|
|
232
|
+
"tools": {
|
|
233
|
+
"allow": ["read", "write", "apply_patch", "exec"],
|
|
234
|
+
"deny": []
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**After (multi-agent with different profiles):**
|
|
242
|
+
|
|
243
|
+
```json
|
|
244
|
+
{
|
|
245
|
+
"agents": {
|
|
246
|
+
"list": [
|
|
247
|
+
{
|
|
248
|
+
"id": "main",
|
|
249
|
+
"default": true,
|
|
250
|
+
"workspace": "~/.quantumclaw/workspace",
|
|
251
|
+
"sandbox": { "mode": "off" }
|
|
252
|
+
}
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Legacy `agent.*` configs are migrated by `quantumclaw doctor`; prefer `agents.defaults` + `agents.list` going forward.
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Tool Restriction Examples
|
|
263
|
+
|
|
264
|
+
### Read-only Agent
|
|
265
|
+
|
|
266
|
+
```json
|
|
267
|
+
{
|
|
268
|
+
"tools": {
|
|
269
|
+
"allow": ["read"],
|
|
270
|
+
"deny": ["exec", "write", "edit", "apply_patch", "process"]
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Safe Execution Agent (no file modifications)
|
|
276
|
+
|
|
277
|
+
```json
|
|
278
|
+
{
|
|
279
|
+
"tools": {
|
|
280
|
+
"allow": ["read", "exec", "process"],
|
|
281
|
+
"deny": ["write", "edit", "apply_patch", "browser", "gateway"]
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Communication-only Agent
|
|
287
|
+
|
|
288
|
+
```json
|
|
289
|
+
{
|
|
290
|
+
"tools": {
|
|
291
|
+
"sessions": { "visibility": "tree" },
|
|
292
|
+
"allow": ["sessions_list", "sessions_send", "sessions_history", "session_status"],
|
|
293
|
+
"deny": ["exec", "write", "edit", "apply_patch", "read", "browser"]
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Common Pitfall: "non-main"
|
|
301
|
+
|
|
302
|
+
`agents.defaults.sandbox.mode: "non-main"` is based on `session.mainKey` (default `"main"`),
|
|
303
|
+
not the agent id. Group/channel sessions always get their own keys, so they
|
|
304
|
+
are treated as non-main and will be sandboxed. If you want an agent to never
|
|
305
|
+
sandbox, set `agents.list[].sandbox.mode: "off"`.
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Testing
|
|
310
|
+
|
|
311
|
+
After configuring multi-agent sandbox and tools:
|
|
312
|
+
|
|
313
|
+
1. **Check agent resolution:**
|
|
314
|
+
|
|
315
|
+
```exec
|
|
316
|
+
quantumclaw agents list --bindings
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
2. **Verify sandbox containers:**
|
|
320
|
+
|
|
321
|
+
```exec
|
|
322
|
+
docker ps --filter "name=quantumclaw-sbx-"
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
3. **Test tool restrictions:**
|
|
326
|
+
- Send a message requiring restricted tools
|
|
327
|
+
- Verify the agent cannot use denied tools
|
|
328
|
+
|
|
329
|
+
4. **Monitor logs:**
|
|
330
|
+
|
|
331
|
+
```exec
|
|
332
|
+
tail -f "${QUANTUMCLAW_STATE_DIR:-$HOME/.quantumclaw}/logs/gateway.log" | grep -E "routing|sandbox|tools"
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Troubleshooting
|
|
338
|
+
|
|
339
|
+
### Agent not sandboxed despite `mode: "all"`
|
|
340
|
+
|
|
341
|
+
- Check if there's a global `agents.defaults.sandbox.mode` that overrides it
|
|
342
|
+
- Agent-specific config takes precedence, so set `agents.list[].sandbox.mode: "all"`
|
|
343
|
+
|
|
344
|
+
### Tools still available despite deny list
|
|
345
|
+
|
|
346
|
+
- Check tool filtering order: global → agent → sandbox → subagent
|
|
347
|
+
- Each level can only further restrict, not grant back
|
|
348
|
+
- Verify with logs: `[tools] filtering tools for agent:${agentId}`
|
|
349
|
+
|
|
350
|
+
### Container not isolated per agent
|
|
351
|
+
|
|
352
|
+
- Set `scope: "agent"` in agent-specific sandbox config
|
|
353
|
+
- Default is `"session"` which creates one container per session
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## See also
|
|
358
|
+
|
|
359
|
+
- [Sandboxing](/gateway/sandboxing) -- full sandbox reference (modes, scopes, backends, images)
|
|
360
|
+
- [Sandbox vs Tool Policy vs Elevated](/gateway/sandbox-vs-tool-policy-vs-elevated) -- debugging "why is this blocked?"
|
|
361
|
+
- [Elevated Mode](/tools/elevated)
|
|
362
|
+
- [Multi-Agent Routing](/concepts/multi-agent)
|
|
363
|
+
- [Sandbox Configuration](/gateway/configuration-reference#agents-defaults-sandbox)
|
|
364
|
+
- [Session Management](/concepts/session)
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "PDF Tool"
|
|
3
|
+
summary: "Analyze one or more PDF documents with native provider support and extraction fallback"
|
|
4
|
+
read_when:
|
|
5
|
+
- You want to analyze PDFs from agents
|
|
6
|
+
- You need exact pdf tool parameters and limits
|
|
7
|
+
- You are debugging native PDF mode vs extraction fallback
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# PDF tool
|
|
11
|
+
|
|
12
|
+
`pdf` analyzes one or more PDF documents and returns text.
|
|
13
|
+
|
|
14
|
+
Quick behavior:
|
|
15
|
+
|
|
16
|
+
- Native provider mode for Anthropic and Google model providers.
|
|
17
|
+
- Extraction fallback mode for other providers (extract text first, then page images when needed).
|
|
18
|
+
- Supports single (`pdf`) or multi (`pdfs`) input, max 10 PDFs per call.
|
|
19
|
+
|
|
20
|
+
## Availability
|
|
21
|
+
|
|
22
|
+
The tool is only registered when QuantumClaw can resolve a PDF-capable model config for the agent:
|
|
23
|
+
|
|
24
|
+
1. `agents.defaults.pdfModel`
|
|
25
|
+
2. fallback to `agents.defaults.imageModel`
|
|
26
|
+
3. fallback to best effort provider defaults based on available auth
|
|
27
|
+
|
|
28
|
+
If no usable model can be resolved, the `pdf` tool is not exposed.
|
|
29
|
+
|
|
30
|
+
## Input reference
|
|
31
|
+
|
|
32
|
+
- `pdf` (`string`): one PDF path or URL
|
|
33
|
+
- `pdfs` (`string[]`): multiple PDF paths or URLs, up to 10 total
|
|
34
|
+
- `prompt` (`string`): analysis prompt, default `Analyze this PDF document.`
|
|
35
|
+
- `pages` (`string`): page filter like `1-5` or `1,3,7-9`
|
|
36
|
+
- `model` (`string`): optional model override (`provider/model`)
|
|
37
|
+
- `maxBytesMb` (`number`): per-PDF size cap in MB
|
|
38
|
+
|
|
39
|
+
Input notes:
|
|
40
|
+
|
|
41
|
+
- `pdf` and `pdfs` are merged and deduplicated before loading.
|
|
42
|
+
- If no PDF input is provided, the tool errors.
|
|
43
|
+
- `pages` is parsed as 1-based page numbers, deduped, sorted, and clamped to the configured max pages.
|
|
44
|
+
- `maxBytesMb` defaults to `agents.defaults.pdfMaxBytesMb` or `10`.
|
|
45
|
+
|
|
46
|
+
## Supported PDF references
|
|
47
|
+
|
|
48
|
+
- local file path (including `~` expansion)
|
|
49
|
+
- `file://` URL
|
|
50
|
+
- `http://` and `https://` URL
|
|
51
|
+
|
|
52
|
+
Reference notes:
|
|
53
|
+
|
|
54
|
+
- Other URI schemes (for example `ftp://`) are rejected with `unsupported_pdf_reference`.
|
|
55
|
+
- In sandbox mode, remote `http(s)` URLs are rejected.
|
|
56
|
+
- With workspace-only file policy enabled, local file paths outside allowed roots are rejected.
|
|
57
|
+
|
|
58
|
+
## Execution modes
|
|
59
|
+
|
|
60
|
+
### Native provider mode
|
|
61
|
+
|
|
62
|
+
Native mode is used for provider `anthropic` and `google`.
|
|
63
|
+
The tool sends raw PDF bytes directly to provider APIs.
|
|
64
|
+
|
|
65
|
+
Native mode limits:
|
|
66
|
+
|
|
67
|
+
- `pages` is not supported. If set, the tool returns an error.
|
|
68
|
+
|
|
69
|
+
### Extraction fallback mode
|
|
70
|
+
|
|
71
|
+
Fallback mode is used for non-native providers.
|
|
72
|
+
|
|
73
|
+
Flow:
|
|
74
|
+
|
|
75
|
+
1. Extract text from selected pages (up to `agents.defaults.pdfMaxPages`, default `20`).
|
|
76
|
+
2. If extracted text length is below `200` chars, render selected pages to PNG images and include them.
|
|
77
|
+
3. Send extracted content plus prompt to the selected model.
|
|
78
|
+
|
|
79
|
+
Fallback details:
|
|
80
|
+
|
|
81
|
+
- Page image extraction uses a pixel budget of `4,000,000`.
|
|
82
|
+
- If the target model does not support image input and there is no extractable text, the tool errors.
|
|
83
|
+
- Extraction fallback requires `pdfjs-dist` (and `@napi-rs/canvas` for image rendering).
|
|
84
|
+
|
|
85
|
+
## Config
|
|
86
|
+
|
|
87
|
+
```json5
|
|
88
|
+
{
|
|
89
|
+
agents: {
|
|
90
|
+
defaults: {
|
|
91
|
+
pdfModel: {
|
|
92
|
+
primary: "anthropic/claude-opus-4-6",
|
|
93
|
+
fallbacks: ["openai/gpt-5-mini"],
|
|
94
|
+
},
|
|
95
|
+
pdfMaxBytesMb: 10,
|
|
96
|
+
pdfMaxPages: 20,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
See [Configuration Reference](/gateway/configuration-reference) for full field details.
|
|
103
|
+
|
|
104
|
+
## Output details
|
|
105
|
+
|
|
106
|
+
The tool returns text in `content[0].text` and structured metadata in `details`.
|
|
107
|
+
|
|
108
|
+
Common `details` fields:
|
|
109
|
+
|
|
110
|
+
- `model`: resolved model ref (`provider/model`)
|
|
111
|
+
- `native`: `true` for native provider mode, `false` for fallback
|
|
112
|
+
- `attempts`: fallback attempts that failed before success
|
|
113
|
+
|
|
114
|
+
Path fields:
|
|
115
|
+
|
|
116
|
+
- single PDF input: `details.pdf`
|
|
117
|
+
- multiple PDF inputs: `details.pdfs[]` with `pdf` entries
|
|
118
|
+
- sandbox path rewrite metadata (when applicable): `rewrittenFrom`
|
|
119
|
+
|
|
120
|
+
## Error behavior
|
|
121
|
+
|
|
122
|
+
- Missing PDF input: throws `pdf required: provide a path or URL to a PDF document`
|
|
123
|
+
- Too many PDFs: returns structured error in `details.error = "too_many_pdfs"`
|
|
124
|
+
- Unsupported reference scheme: returns `details.error = "unsupported_pdf_reference"`
|
|
125
|
+
- Native mode with `pages`: throws clear `pages is not supported with native PDF providers` error
|
|
126
|
+
|
|
127
|
+
## Examples
|
|
128
|
+
|
|
129
|
+
Single PDF:
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"pdf": "/tmp/report.pdf",
|
|
134
|
+
"prompt": "Summarize this report in 5 bullets"
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Multiple PDFs:
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"pdfs": ["/tmp/q1.pdf", "/tmp/q2.pdf"],
|
|
143
|
+
"prompt": "Compare risks and timeline changes across both documents"
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Page-filtered fallback model:
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"pdf": "https://example.com/report.pdf",
|
|
152
|
+
"pages": "1-3,7",
|
|
153
|
+
"model": "openai/gpt-5-mini",
|
|
154
|
+
"prompt": "Extract only customer-impacting incidents"
|
|
155
|
+
}
|
|
156
|
+
```
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Perplexity Search API and Sonar/OpenRouter compatibility for web_search"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to use Perplexity Search for web search
|
|
5
|
+
- You need PERPLEXITY_API_KEY or OPENROUTER_API_KEY setup
|
|
6
|
+
title: "Perplexity Search"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Perplexity Search API
|
|
10
|
+
|
|
11
|
+
QuantumClaw supports Perplexity Search API as a `web_search` provider.
|
|
12
|
+
It returns structured results with `title`, `url`, and `snippet` fields.
|
|
13
|
+
|
|
14
|
+
For compatibility, QuantumClaw also supports legacy Perplexity Sonar/OpenRouter setups.
|
|
15
|
+
If you use `OPENROUTER_API_KEY`, an `sk-or-...` key in `plugins.entries.perplexity.config.webSearch.apiKey`, or set `plugins.entries.perplexity.config.webSearch.baseUrl` / `model`, the provider switches to the chat-completions path and returns AI-synthesized answers with citations instead of structured Search API results.
|
|
16
|
+
|
|
17
|
+
## Getting a Perplexity API key
|
|
18
|
+
|
|
19
|
+
1. Create a Perplexity account at [perplexity.ai/settings/api](https://www.perplexity.ai/settings/api)
|
|
20
|
+
2. Generate an API key in the dashboard
|
|
21
|
+
3. Store the key in config or set `PERPLEXITY_API_KEY` in the Gateway environment.
|
|
22
|
+
|
|
23
|
+
## OpenRouter compatibility
|
|
24
|
+
|
|
25
|
+
If you were already using OpenRouter for Perplexity Sonar, keep `provider: "perplexity"` and set `OPENROUTER_API_KEY` in the Gateway environment, or store an `sk-or-...` key in `plugins.entries.perplexity.config.webSearch.apiKey`.
|
|
26
|
+
|
|
27
|
+
Optional compatibility controls:
|
|
28
|
+
|
|
29
|
+
- `plugins.entries.perplexity.config.webSearch.baseUrl`
|
|
30
|
+
- `plugins.entries.perplexity.config.webSearch.model`
|
|
31
|
+
|
|
32
|
+
## Config examples
|
|
33
|
+
|
|
34
|
+
### Native Perplexity Search API
|
|
35
|
+
|
|
36
|
+
```json5
|
|
37
|
+
{
|
|
38
|
+
plugins: {
|
|
39
|
+
entries: {
|
|
40
|
+
perplexity: {
|
|
41
|
+
config: {
|
|
42
|
+
webSearch: {
|
|
43
|
+
apiKey: "pplx-...",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
tools: {
|
|
50
|
+
web: {
|
|
51
|
+
search: {
|
|
52
|
+
provider: "perplexity",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### OpenRouter / Sonar compatibility
|
|
60
|
+
|
|
61
|
+
```json5
|
|
62
|
+
{
|
|
63
|
+
plugins: {
|
|
64
|
+
entries: {
|
|
65
|
+
perplexity: {
|
|
66
|
+
config: {
|
|
67
|
+
webSearch: {
|
|
68
|
+
apiKey: "<openrouter-api-key>",
|
|
69
|
+
baseUrl: "https://openrouter.ai/api/v1",
|
|
70
|
+
model: "perplexity/sonar-pro",
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
tools: {
|
|
77
|
+
web: {
|
|
78
|
+
search: {
|
|
79
|
+
provider: "perplexity",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Where to set the key
|
|
87
|
+
|
|
88
|
+
**Via config:** run `quantumclaw configure --section web`. It stores the key in
|
|
89
|
+
`~/.quantumclaw/quantumclaw.json` under `plugins.entries.perplexity.config.webSearch.apiKey`.
|
|
90
|
+
That field also accepts SecretRef objects.
|
|
91
|
+
|
|
92
|
+
**Via environment:** set `PERPLEXITY_API_KEY` or `OPENROUTER_API_KEY`
|
|
93
|
+
in the Gateway process environment. For a gateway install, put it in
|
|
94
|
+
`~/.quantumclaw/.env` (or your service environment). See [Env vars](/help/faq#how-does-quantumclaw-load-environment-variables).
|
|
95
|
+
|
|
96
|
+
If `provider: "perplexity"` is configured and the Perplexity key SecretRef is unresolved with no env fallback, startup/reload fails fast.
|
|
97
|
+
|
|
98
|
+
## Tool parameters
|
|
99
|
+
|
|
100
|
+
These parameters apply to the native Perplexity Search API path.
|
|
101
|
+
|
|
102
|
+
| Parameter | Description |
|
|
103
|
+
| --------------------- | ---------------------------------------------------- |
|
|
104
|
+
| `query` | Search query (required) |
|
|
105
|
+
| `count` | Number of results to return (1-10, default: 5) |
|
|
106
|
+
| `country` | 2-letter ISO country code (e.g., "US", "DE") |
|
|
107
|
+
| `language` | ISO 639-1 language code (e.g., "en", "de", "fr") |
|
|
108
|
+
| `freshness` | Time filter: `day` (24h), `week`, `month`, or `year` |
|
|
109
|
+
| `date_after` | Only results published after this date (YYYY-MM-DD) |
|
|
110
|
+
| `date_before` | Only results published before this date (YYYY-MM-DD) |
|
|
111
|
+
| `domain_filter` | Domain allowlist/denylist array (max 20) |
|
|
112
|
+
| `max_tokens` | Total content budget (default: 25000, max: 1000000) |
|
|
113
|
+
| `max_tokens_per_page` | Per-page token limit (default: 2048) |
|
|
114
|
+
|
|
115
|
+
For the legacy Sonar/OpenRouter compatibility path, only `query` and `freshness` are supported.
|
|
116
|
+
Search API-only filters such as `country`, `language`, `date_after`, `date_before`, `domain_filter`, `max_tokens`, and `max_tokens_per_page` return explicit errors.
|
|
117
|
+
|
|
118
|
+
**Examples:**
|
|
119
|
+
|
|
120
|
+
```javascript
|
|
121
|
+
// Country and language-specific search
|
|
122
|
+
await web_search({
|
|
123
|
+
query: "renewable energy",
|
|
124
|
+
country: "DE",
|
|
125
|
+
language: "de",
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// Recent results (past week)
|
|
129
|
+
await web_search({
|
|
130
|
+
query: "AI news",
|
|
131
|
+
freshness: "week",
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// Date range search
|
|
135
|
+
await web_search({
|
|
136
|
+
query: "AI developments",
|
|
137
|
+
date_after: "2024-01-01",
|
|
138
|
+
date_before: "2024-06-30",
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// Domain filtering (allowlist)
|
|
142
|
+
await web_search({
|
|
143
|
+
query: "climate research",
|
|
144
|
+
domain_filter: ["nature.com", "science.org", ".edu"],
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
// Domain filtering (denylist - prefix with -)
|
|
148
|
+
await web_search({
|
|
149
|
+
query: "product reviews",
|
|
150
|
+
domain_filter: ["-reddit.com", "-pinterest.com"],
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
// More content extraction
|
|
154
|
+
await web_search({
|
|
155
|
+
query: "detailed AI research",
|
|
156
|
+
max_tokens: 50000,
|
|
157
|
+
max_tokens_per_page: 4096,
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Domain filter rules
|
|
162
|
+
|
|
163
|
+
- Maximum 20 domains per filter
|
|
164
|
+
- Cannot mix allowlist and denylist in the same request
|
|
165
|
+
- Use `-` prefix for denylist entries (e.g., `["-reddit.com"]`)
|
|
166
|
+
|
|
167
|
+
## Notes
|
|
168
|
+
|
|
169
|
+
- Perplexity Search API returns structured web search results (`title`, `url`, `snippet`)
|
|
170
|
+
- OpenRouter or explicit `plugins.entries.perplexity.config.webSearch.baseUrl` / `model` switches Perplexity back to Sonar chat completions for compatibility
|
|
171
|
+
- Results are cached for 15 minutes by default (configurable via `cacheTtlMinutes`)
|
|
172
|
+
|
|
173
|
+
See [Web tools](/tools/web) for the full web_search configuration.
|
|
174
|
+
See [Perplexity Search API docs](https://docs.perplexity.ai/docs/search/quickstart) for more details.
|