@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,552 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Multi-agent routing: isolated agents, channel accounts, and bindings"
|
|
3
|
+
title: Multi-Agent Routing
|
|
4
|
+
read_when: "You want multiple isolated agents (workspaces + auth) in one gateway process."
|
|
5
|
+
status: active
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Multi-Agent Routing
|
|
9
|
+
|
|
10
|
+
Goal: multiple _isolated_ agents (separate workspace + `agentDir` + sessions), plus multiple channel accounts (e.g. two WhatsApps) in one running Gateway. Inbound is routed to an agent via bindings.
|
|
11
|
+
|
|
12
|
+
## What is "one agent"?
|
|
13
|
+
|
|
14
|
+
An **agent** is a fully scoped brain with its own:
|
|
15
|
+
|
|
16
|
+
- **Workspace** (files, AGENTS.md/SOUL.md/USER.md, local notes, persona rules).
|
|
17
|
+
- **State directory** (`agentDir`) for auth profiles, model registry, and per-agent config.
|
|
18
|
+
- **Session store** (chat history + routing state) under `~/.quantumclaw/agents/<agentId>/sessions`.
|
|
19
|
+
|
|
20
|
+
Auth profiles are **per-agent**. Each agent reads from its own:
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
~/.quantumclaw/agents/<agentId>/agent/auth-profiles.json
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Main agent credentials are **not** shared automatically. Never reuse `agentDir`
|
|
27
|
+
across agents (it causes auth/session collisions). If you want to share creds,
|
|
28
|
+
copy `auth-profiles.json` into the other agent's `agentDir`.
|
|
29
|
+
|
|
30
|
+
Skills are per-agent via each workspace’s `skills/` folder, with shared skills
|
|
31
|
+
available from `~/.quantumclaw/skills`. See [Skills: per-agent vs shared](/tools/skills#per-agent-vs-shared-skills).
|
|
32
|
+
|
|
33
|
+
The Gateway can host **one agent** (default) or **many agents** side-by-side.
|
|
34
|
+
|
|
35
|
+
**Workspace note:** each agent’s workspace is the **default cwd**, not a hard
|
|
36
|
+
sandbox. Relative paths resolve inside the workspace, but absolute paths can
|
|
37
|
+
reach other host locations unless sandboxing is enabled. See
|
|
38
|
+
[Sandboxing](/gateway/sandboxing).
|
|
39
|
+
|
|
40
|
+
## Paths (quick map)
|
|
41
|
+
|
|
42
|
+
- Config: `~/.quantumclaw/quantumclaw.json` (or `QUANTUMCLAW_CONFIG_PATH`)
|
|
43
|
+
- State dir: `~/.quantumclaw` (or `QUANTUMCLAW_STATE_DIR`)
|
|
44
|
+
- Workspace: `~/.quantumclaw/workspace` (or `~/.quantumclaw/workspace-<agentId>`)
|
|
45
|
+
- Agent dir: `~/.quantumclaw/agents/<agentId>/agent` (or `agents.list[].agentDir`)
|
|
46
|
+
- Sessions: `~/.quantumclaw/agents/<agentId>/sessions`
|
|
47
|
+
|
|
48
|
+
### Single-agent mode (default)
|
|
49
|
+
|
|
50
|
+
If you do nothing, QuantumClaw runs a single agent:
|
|
51
|
+
|
|
52
|
+
- `agentId` defaults to **`main`**.
|
|
53
|
+
- Sessions are keyed as `agent:main:<mainKey>`.
|
|
54
|
+
- Workspace defaults to `~/.quantumclaw/workspace` (or `~/.quantumclaw/workspace-<profile>` when `QUANTUMCLAW_PROFILE` is set).
|
|
55
|
+
- State defaults to `~/.quantumclaw/agents/main/agent`.
|
|
56
|
+
|
|
57
|
+
## Agent helper
|
|
58
|
+
|
|
59
|
+
Use the agent wizard to add a new isolated agent:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
quantumclaw agents add work
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Then add `bindings` (or let the wizard do it) to route inbound messages.
|
|
66
|
+
|
|
67
|
+
Verify with:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
quantumclaw agents list --bindings
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Quick start
|
|
74
|
+
|
|
75
|
+
<Steps>
|
|
76
|
+
<Step title="Create each agent workspace">
|
|
77
|
+
|
|
78
|
+
Use the wizard or create workspaces manually:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
quantumclaw agents add coding
|
|
82
|
+
quantumclaw agents add social
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Each agent gets its own workspace with `SOUL.md`, `AGENTS.md`, and optional `USER.md`, plus a dedicated `agentDir` and session store under `~/.quantumclaw/agents/<agentId>`.
|
|
86
|
+
|
|
87
|
+
</Step>
|
|
88
|
+
|
|
89
|
+
<Step title="Create channel accounts">
|
|
90
|
+
|
|
91
|
+
Create one account per agent on your preferred channels:
|
|
92
|
+
|
|
93
|
+
- Discord: one bot per agent, enable Message Content Intent, copy each token.
|
|
94
|
+
- Telegram: one bot per agent via BotFather, copy each token.
|
|
95
|
+
- WhatsApp: link each phone number per account.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
quantumclaw channels login --channel whatsapp --account work
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
See channel guides: [Discord](/channels/discord), [Telegram](/channels/telegram), [WhatsApp](/channels/whatsapp).
|
|
102
|
+
|
|
103
|
+
</Step>
|
|
104
|
+
|
|
105
|
+
<Step title="Add agents, accounts, and bindings">
|
|
106
|
+
|
|
107
|
+
Add agents under `agents.list`, channel accounts under `channels.<channel>.accounts`, and connect them with `bindings` (examples below).
|
|
108
|
+
|
|
109
|
+
</Step>
|
|
110
|
+
|
|
111
|
+
<Step title="Restart and verify">
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
quantumclaw gateway restart
|
|
115
|
+
quantumclaw agents list --bindings
|
|
116
|
+
quantumclaw channels status --probe
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
</Step>
|
|
120
|
+
</Steps>
|
|
121
|
+
|
|
122
|
+
## Multiple agents = multiple people, multiple personalities
|
|
123
|
+
|
|
124
|
+
With **multiple agents**, each `agentId` becomes a **fully isolated persona**:
|
|
125
|
+
|
|
126
|
+
- **Different phone numbers/accounts** (per channel `accountId`).
|
|
127
|
+
- **Different personalities** (per-agent workspace files like `AGENTS.md` and `SOUL.md`).
|
|
128
|
+
- **Separate auth + sessions** (no cross-talk unless explicitly enabled).
|
|
129
|
+
|
|
130
|
+
This lets **multiple people** share one Gateway server while keeping their AI “brains” and data isolated.
|
|
131
|
+
|
|
132
|
+
## One WhatsApp number, multiple people (DM split)
|
|
133
|
+
|
|
134
|
+
You can route **different WhatsApp DMs** to different agents while staying on **one WhatsApp account**. Match on sender E.164 (like `+15551234567`) with `peer.kind: "direct"`. Replies still come from the same WhatsApp number (no per‑agent sender identity).
|
|
135
|
+
|
|
136
|
+
Important detail: direct chats collapse to the agent’s **main session key**, so true isolation requires **one agent per person**.
|
|
137
|
+
|
|
138
|
+
Example:
|
|
139
|
+
|
|
140
|
+
```json5
|
|
141
|
+
{
|
|
142
|
+
agents: {
|
|
143
|
+
list: [
|
|
144
|
+
{ id: "alex", workspace: "~/.quantumclaw/workspace-alex" },
|
|
145
|
+
{ id: "mia", workspace: "~/.quantumclaw/workspace-mia" },
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
bindings: [
|
|
149
|
+
{
|
|
150
|
+
agentId: "alex",
|
|
151
|
+
match: { channel: "whatsapp", peer: { kind: "direct", id: "+15551230001" } },
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
agentId: "mia",
|
|
155
|
+
match: { channel: "whatsapp", peer: { kind: "direct", id: "+15551230002" } },
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
channels: {
|
|
159
|
+
whatsapp: {
|
|
160
|
+
dmPolicy: "allowlist",
|
|
161
|
+
allowFrom: ["+15551230001", "+15551230002"],
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Notes:
|
|
168
|
+
|
|
169
|
+
- DM access control is **global per WhatsApp account** (pairing/allowlist), not per agent.
|
|
170
|
+
- For shared groups, bind the group to one agent or use [Broadcast groups](/channels/broadcast-groups).
|
|
171
|
+
|
|
172
|
+
## Routing rules (how messages pick an agent)
|
|
173
|
+
|
|
174
|
+
Bindings are **deterministic** and **most-specific wins**:
|
|
175
|
+
|
|
176
|
+
1. `peer` match (exact DM/group/channel id)
|
|
177
|
+
2. `parentPeer` match (thread inheritance)
|
|
178
|
+
3. `guildId + roles` (Discord role routing)
|
|
179
|
+
4. `guildId` (Discord)
|
|
180
|
+
5. `teamId` (Slack)
|
|
181
|
+
6. `accountId` match for a channel
|
|
182
|
+
7. channel-level match (`accountId: "*"`)
|
|
183
|
+
8. fallback to default agent (`agents.list[].default`, else first list entry, default: `main`)
|
|
184
|
+
|
|
185
|
+
If multiple bindings match in the same tier, the first one in config order wins.
|
|
186
|
+
If a binding sets multiple match fields (for example `peer` + `guildId`), all specified fields are required (`AND` semantics).
|
|
187
|
+
|
|
188
|
+
Important account-scope detail:
|
|
189
|
+
|
|
190
|
+
- A binding that omits `accountId` matches the default account only.
|
|
191
|
+
- Use `accountId: "*"` for a channel-wide fallback across all accounts.
|
|
192
|
+
- If you later add the same binding for the same agent with an explicit account id, QuantumClaw upgrades the existing channel-only binding to account-scoped instead of duplicating it.
|
|
193
|
+
|
|
194
|
+
## Multiple accounts / phone numbers
|
|
195
|
+
|
|
196
|
+
Channels that support **multiple accounts** (e.g. WhatsApp) use `accountId` to identify
|
|
197
|
+
each login. Each `accountId` can be routed to a different agent, so one server can host
|
|
198
|
+
multiple phone numbers without mixing sessions.
|
|
199
|
+
|
|
200
|
+
If you want a channel-wide default account when `accountId` is omitted, set
|
|
201
|
+
`channels.<channel>.defaultAccount` (optional). When unset, QuantumClaw falls back
|
|
202
|
+
to `default` if present, otherwise the first configured account id (sorted).
|
|
203
|
+
|
|
204
|
+
Common channels supporting this pattern include:
|
|
205
|
+
|
|
206
|
+
- `whatsapp`, `telegram`, `discord`, `slack`, `signal`, `imessage`
|
|
207
|
+
- `irc`, `line`, `googlechat`, `mattermost`, `matrix`, `nextcloud-talk`
|
|
208
|
+
- `bluebubbles`, `zalo`, `zalouser`, `nostr`, `feishu`
|
|
209
|
+
|
|
210
|
+
## Concepts
|
|
211
|
+
|
|
212
|
+
- `agentId`: one “brain” (workspace, per-agent auth, per-agent session store).
|
|
213
|
+
- `accountId`: one channel account instance (e.g. WhatsApp account `"personal"` vs `"biz"`).
|
|
214
|
+
- `binding`: routes inbound messages to an `agentId` by `(channel, accountId, peer)` and optionally guild/team ids.
|
|
215
|
+
- Direct chats collapse to `agent:<agentId>:<mainKey>` (per-agent “main”; `session.mainKey`).
|
|
216
|
+
|
|
217
|
+
## Platform examples
|
|
218
|
+
|
|
219
|
+
### Discord bots per agent
|
|
220
|
+
|
|
221
|
+
Each Discord bot account maps to a unique `accountId`. Bind each account to an agent and keep allowlists per bot.
|
|
222
|
+
|
|
223
|
+
```json5
|
|
224
|
+
{
|
|
225
|
+
agents: {
|
|
226
|
+
list: [
|
|
227
|
+
{ id: "main", workspace: "~/.quantumclaw/workspace-main" },
|
|
228
|
+
{ id: "coding", workspace: "~/.quantumclaw/workspace-coding" },
|
|
229
|
+
],
|
|
230
|
+
},
|
|
231
|
+
bindings: [
|
|
232
|
+
{ agentId: "main", match: { channel: "discord", accountId: "default" } },
|
|
233
|
+
{ agentId: "coding", match: { channel: "discord", accountId: "coding" } },
|
|
234
|
+
],
|
|
235
|
+
channels: {
|
|
236
|
+
discord: {
|
|
237
|
+
groupPolicy: "allowlist",
|
|
238
|
+
accounts: {
|
|
239
|
+
default: {
|
|
240
|
+
token: "DISCORD_BOT_TOKEN_MAIN",
|
|
241
|
+
guilds: {
|
|
242
|
+
"123456789012345678": {
|
|
243
|
+
channels: {
|
|
244
|
+
"222222222222222222": { allow: true, requireMention: false },
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
coding: {
|
|
250
|
+
token: "DISCORD_BOT_TOKEN_CODING",
|
|
251
|
+
guilds: {
|
|
252
|
+
"123456789012345678": {
|
|
253
|
+
channels: {
|
|
254
|
+
"333333333333333333": { allow: true, requireMention: false },
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Notes:
|
|
266
|
+
|
|
267
|
+
- Invite each bot to the guild and enable Message Content Intent.
|
|
268
|
+
- Tokens live in `channels.discord.accounts.<id>.token` (default account can use `DISCORD_BOT_TOKEN`).
|
|
269
|
+
|
|
270
|
+
### Telegram bots per agent
|
|
271
|
+
|
|
272
|
+
```json5
|
|
273
|
+
{
|
|
274
|
+
agents: {
|
|
275
|
+
list: [
|
|
276
|
+
{ id: "main", workspace: "~/.quantumclaw/workspace-main" },
|
|
277
|
+
{ id: "alerts", workspace: "~/.quantumclaw/workspace-alerts" },
|
|
278
|
+
],
|
|
279
|
+
},
|
|
280
|
+
bindings: [
|
|
281
|
+
{ agentId: "main", match: { channel: "telegram", accountId: "default" } },
|
|
282
|
+
{ agentId: "alerts", match: { channel: "telegram", accountId: "alerts" } },
|
|
283
|
+
],
|
|
284
|
+
channels: {
|
|
285
|
+
telegram: {
|
|
286
|
+
accounts: {
|
|
287
|
+
default: {
|
|
288
|
+
botToken: "123456:ABC...",
|
|
289
|
+
dmPolicy: "pairing",
|
|
290
|
+
},
|
|
291
|
+
alerts: {
|
|
292
|
+
botToken: "987654:XYZ...",
|
|
293
|
+
dmPolicy: "allowlist",
|
|
294
|
+
allowFrom: ["tg:123456789"],
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Notes:
|
|
303
|
+
|
|
304
|
+
- Create one bot per agent with BotFather and copy each token.
|
|
305
|
+
- Tokens live in `channels.telegram.accounts.<id>.botToken` (default account can use `TELEGRAM_BOT_TOKEN`).
|
|
306
|
+
|
|
307
|
+
### WhatsApp numbers per agent
|
|
308
|
+
|
|
309
|
+
Link each account before starting the gateway:
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
quantumclaw channels login --channel whatsapp --account personal
|
|
313
|
+
quantumclaw channels login --channel whatsapp --account biz
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
`~/.quantumclaw/quantumclaw.json` (JSON5):
|
|
317
|
+
|
|
318
|
+
```js
|
|
319
|
+
{
|
|
320
|
+
agents: {
|
|
321
|
+
list: [
|
|
322
|
+
{
|
|
323
|
+
id: "home",
|
|
324
|
+
default: true,
|
|
325
|
+
name: "Home",
|
|
326
|
+
workspace: "~/.quantumclaw/workspace-home",
|
|
327
|
+
agentDir: "~/.quantumclaw/agents/home/agent",
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
id: "work",
|
|
331
|
+
name: "Work",
|
|
332
|
+
workspace: "~/.quantumclaw/workspace-work",
|
|
333
|
+
agentDir: "~/.quantumclaw/agents/work/agent",
|
|
334
|
+
},
|
|
335
|
+
],
|
|
336
|
+
},
|
|
337
|
+
|
|
338
|
+
// Deterministic routing: first match wins (most-specific first).
|
|
339
|
+
bindings: [
|
|
340
|
+
{ agentId: "home", match: { channel: "whatsapp", accountId: "personal" } },
|
|
341
|
+
{ agentId: "work", match: { channel: "whatsapp", accountId: "biz" } },
|
|
342
|
+
|
|
343
|
+
// Optional per-peer override (example: send a specific group to work agent).
|
|
344
|
+
{
|
|
345
|
+
agentId: "work",
|
|
346
|
+
match: {
|
|
347
|
+
channel: "whatsapp",
|
|
348
|
+
accountId: "personal",
|
|
349
|
+
peer: { kind: "group", id: "1203630...@g.us" },
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
],
|
|
353
|
+
|
|
354
|
+
// Off by default: agent-to-agent messaging must be explicitly enabled + allowlisted.
|
|
355
|
+
tools: {
|
|
356
|
+
agentToAgent: {
|
|
357
|
+
enabled: false,
|
|
358
|
+
allow: ["home", "work"],
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
|
|
362
|
+
channels: {
|
|
363
|
+
whatsapp: {
|
|
364
|
+
accounts: {
|
|
365
|
+
personal: {
|
|
366
|
+
// Optional override. Default: ~/.quantumclaw/credentials/whatsapp/personal
|
|
367
|
+
// authDir: "~/.quantumclaw/credentials/whatsapp/personal",
|
|
368
|
+
},
|
|
369
|
+
biz: {
|
|
370
|
+
// Optional override. Default: ~/.quantumclaw/credentials/whatsapp/biz
|
|
371
|
+
// authDir: "~/.quantumclaw/credentials/whatsapp/biz",
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
## Example: WhatsApp daily chat + Telegram deep work
|
|
380
|
+
|
|
381
|
+
Split by channel: route WhatsApp to a fast everyday agent and Telegram to an Opus agent.
|
|
382
|
+
|
|
383
|
+
```json5
|
|
384
|
+
{
|
|
385
|
+
agents: {
|
|
386
|
+
list: [
|
|
387
|
+
{
|
|
388
|
+
id: "chat",
|
|
389
|
+
name: "Everyday",
|
|
390
|
+
workspace: "~/.quantumclaw/workspace-chat",
|
|
391
|
+
model: "anthropic/claude-sonnet-4-6",
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
id: "opus",
|
|
395
|
+
name: "Deep Work",
|
|
396
|
+
workspace: "~/.quantumclaw/workspace-opus",
|
|
397
|
+
model: "anthropic/claude-opus-4-6",
|
|
398
|
+
},
|
|
399
|
+
],
|
|
400
|
+
},
|
|
401
|
+
bindings: [
|
|
402
|
+
{ agentId: "chat", match: { channel: "whatsapp" } },
|
|
403
|
+
{ agentId: "opus", match: { channel: "telegram" } },
|
|
404
|
+
],
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
Notes:
|
|
409
|
+
|
|
410
|
+
- If you have multiple accounts for a channel, add `accountId` to the binding (for example `{ channel: "whatsapp", accountId: "personal" }`).
|
|
411
|
+
- To route a single DM/group to Opus while keeping the rest on chat, add a `match.peer` binding for that peer; peer matches always win over channel-wide rules.
|
|
412
|
+
|
|
413
|
+
## Example: same channel, one peer to Opus
|
|
414
|
+
|
|
415
|
+
Keep WhatsApp on the fast agent, but route one DM to Opus:
|
|
416
|
+
|
|
417
|
+
```json5
|
|
418
|
+
{
|
|
419
|
+
agents: {
|
|
420
|
+
list: [
|
|
421
|
+
{
|
|
422
|
+
id: "chat",
|
|
423
|
+
name: "Everyday",
|
|
424
|
+
workspace: "~/.quantumclaw/workspace-chat",
|
|
425
|
+
model: "anthropic/claude-sonnet-4-6",
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
id: "opus",
|
|
429
|
+
name: "Deep Work",
|
|
430
|
+
workspace: "~/.quantumclaw/workspace-opus",
|
|
431
|
+
model: "anthropic/claude-opus-4-6",
|
|
432
|
+
},
|
|
433
|
+
],
|
|
434
|
+
},
|
|
435
|
+
bindings: [
|
|
436
|
+
{
|
|
437
|
+
agentId: "opus",
|
|
438
|
+
match: { channel: "whatsapp", peer: { kind: "direct", id: "+15551234567" } },
|
|
439
|
+
},
|
|
440
|
+
{ agentId: "chat", match: { channel: "whatsapp" } },
|
|
441
|
+
],
|
|
442
|
+
}
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
Peer bindings always win, so keep them above the channel-wide rule.
|
|
446
|
+
|
|
447
|
+
## Family agent bound to a WhatsApp group
|
|
448
|
+
|
|
449
|
+
Bind a dedicated family agent to a single WhatsApp group, with mention gating
|
|
450
|
+
and a tighter tool policy:
|
|
451
|
+
|
|
452
|
+
```json5
|
|
453
|
+
{
|
|
454
|
+
agents: {
|
|
455
|
+
list: [
|
|
456
|
+
{
|
|
457
|
+
id: "family",
|
|
458
|
+
name: "Family",
|
|
459
|
+
workspace: "~/.quantumclaw/workspace-family",
|
|
460
|
+
identity: { name: "Family Bot" },
|
|
461
|
+
groupChat: {
|
|
462
|
+
mentionPatterns: ["@family", "@familybot", "@Family Bot"],
|
|
463
|
+
},
|
|
464
|
+
sandbox: {
|
|
465
|
+
mode: "all",
|
|
466
|
+
scope: "agent",
|
|
467
|
+
},
|
|
468
|
+
tools: {
|
|
469
|
+
allow: [
|
|
470
|
+
"exec",
|
|
471
|
+
"read",
|
|
472
|
+
"sessions_list",
|
|
473
|
+
"sessions_history",
|
|
474
|
+
"sessions_send",
|
|
475
|
+
"sessions_spawn",
|
|
476
|
+
"session_status",
|
|
477
|
+
],
|
|
478
|
+
deny: ["write", "edit", "apply_patch", "browser", "canvas", "nodes", "cron"],
|
|
479
|
+
},
|
|
480
|
+
},
|
|
481
|
+
],
|
|
482
|
+
},
|
|
483
|
+
bindings: [
|
|
484
|
+
{
|
|
485
|
+
agentId: "family",
|
|
486
|
+
match: {
|
|
487
|
+
channel: "whatsapp",
|
|
488
|
+
peer: { kind: "group", id: "120363999999999999@g.us" },
|
|
489
|
+
},
|
|
490
|
+
},
|
|
491
|
+
],
|
|
492
|
+
}
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
Notes:
|
|
496
|
+
|
|
497
|
+
- Tool allow/deny lists are **tools**, not skills. If a skill needs to run a
|
|
498
|
+
binary, ensure `exec` is allowed and the binary exists in the sandbox.
|
|
499
|
+
- For stricter gating, set `agents.list[].groupChat.mentionPatterns` and keep
|
|
500
|
+
group allowlists enabled for the channel.
|
|
501
|
+
|
|
502
|
+
## Per-Agent Sandbox and Tool Configuration
|
|
503
|
+
|
|
504
|
+
Each agent can have its own sandbox and tool restrictions:
|
|
505
|
+
|
|
506
|
+
```js
|
|
507
|
+
{
|
|
508
|
+
agents: {
|
|
509
|
+
list: [
|
|
510
|
+
{
|
|
511
|
+
id: "personal",
|
|
512
|
+
workspace: "~/.quantumclaw/workspace-personal",
|
|
513
|
+
sandbox: {
|
|
514
|
+
mode: "off", // No sandbox for personal agent
|
|
515
|
+
},
|
|
516
|
+
// No tool restrictions - all tools available
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
id: "family",
|
|
520
|
+
workspace: "~/.quantumclaw/workspace-family",
|
|
521
|
+
sandbox: {
|
|
522
|
+
mode: "all", // Always sandboxed
|
|
523
|
+
scope: "agent", // One container per agent
|
|
524
|
+
docker: {
|
|
525
|
+
// Optional one-time setup after container creation
|
|
526
|
+
setupCommand: "apt-get update && apt-get install -y git curl",
|
|
527
|
+
},
|
|
528
|
+
},
|
|
529
|
+
tools: {
|
|
530
|
+
allow: ["read"], // Only read tool
|
|
531
|
+
deny: ["exec", "write", "edit", "apply_patch"], // Deny others
|
|
532
|
+
},
|
|
533
|
+
},
|
|
534
|
+
],
|
|
535
|
+
},
|
|
536
|
+
}
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
Note: `setupCommand` lives under `sandbox.docker` and runs once on container creation.
|
|
540
|
+
Per-agent `sandbox.docker.*` overrides are ignored when the resolved scope is `"shared"`.
|
|
541
|
+
|
|
542
|
+
**Benefits:**
|
|
543
|
+
|
|
544
|
+
- **Security isolation**: Restrict tools for untrusted agents
|
|
545
|
+
- **Resource control**: Sandbox specific agents while keeping others on host
|
|
546
|
+
- **Flexible policies**: Different permissions per agent
|
|
547
|
+
|
|
548
|
+
Note: `tools.elevated` is **global** and sender-based; it is not configurable per agent.
|
|
549
|
+
If you need per-agent boundaries, use `agents.list[].tools` to deny `exec`.
|
|
550
|
+
For group targeting, use `agents.list[].groupChat.mentionPatterns` so @mentions map cleanly to the intended agent.
|
|
551
|
+
|
|
552
|
+
See [Multi-Agent Sandbox & Tools](/tools/multi-agent-sandbox-tools) for detailed examples.
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "OAuth in QuantumClaw: token exchange, storage, and multi-account patterns"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to understand QuantumClaw OAuth end-to-end
|
|
5
|
+
- You hit token invalidation / logout issues
|
|
6
|
+
- You want setup-token or OAuth auth flows
|
|
7
|
+
- You want multiple accounts or profile routing
|
|
8
|
+
title: "OAuth"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# OAuth
|
|
12
|
+
|
|
13
|
+
QuantumClaw supports “subscription auth” via OAuth for providers that offer it (notably **OpenAI Codex (ChatGPT OAuth)**). For Anthropic subscriptions, use the **setup-token** flow. Anthropic subscription use outside Claude Code has been restricted for some users in the past, so treat it as a user-choice risk and verify current Anthropic policy yourself. OpenAI Codex OAuth is explicitly supported for use in external tools like QuantumClaw. This page explains:
|
|
14
|
+
|
|
15
|
+
For Anthropic in production, API key auth is the safer recommended path over subscription setup-token auth.
|
|
16
|
+
|
|
17
|
+
- how the OAuth **token exchange** works (PKCE)
|
|
18
|
+
- where tokens are **stored** (and why)
|
|
19
|
+
- how to handle **multiple accounts** (profiles + per-session overrides)
|
|
20
|
+
|
|
21
|
+
QuantumClaw also supports **provider plugins** that ship their own OAuth or API‑key
|
|
22
|
+
flows. Run them via:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
quantumclaw models auth login --provider <id>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## The token sink (why it exists)
|
|
29
|
+
|
|
30
|
+
OAuth providers commonly mint a **new refresh token** during login/refresh flows. Some providers (or OAuth clients) can invalidate older refresh tokens when a new one is issued for the same user/app.
|
|
31
|
+
|
|
32
|
+
Practical symptom:
|
|
33
|
+
|
|
34
|
+
- you log in via QuantumClaw _and_ via Claude Code / Codex CLI → one of them randomly gets “logged out” later
|
|
35
|
+
|
|
36
|
+
To reduce that, QuantumClaw treats `auth-profiles.json` as a **token sink**:
|
|
37
|
+
|
|
38
|
+
- the runtime reads credentials from **one place**
|
|
39
|
+
- we can keep multiple profiles and route them deterministically
|
|
40
|
+
|
|
41
|
+
## Storage (where tokens live)
|
|
42
|
+
|
|
43
|
+
Secrets are stored **per-agent**:
|
|
44
|
+
|
|
45
|
+
- Auth profiles (OAuth + API keys + optional value-level refs): `~/.quantumclaw/agents/<agentId>/agent/auth-profiles.json`
|
|
46
|
+
- Legacy compatibility file: `~/.quantumclaw/agents/<agentId>/agent/auth.json`
|
|
47
|
+
(static `api_key` entries are scrubbed when discovered)
|
|
48
|
+
|
|
49
|
+
Legacy import-only file (still supported, but not the main store):
|
|
50
|
+
|
|
51
|
+
- `~/.quantumclaw/credentials/oauth.json` (imported into `auth-profiles.json` on first use)
|
|
52
|
+
|
|
53
|
+
All of the above also respect `$QUANTUMCLAW_STATE_DIR` (state dir override). Full reference: [/gateway/configuration](/gateway/configuration-reference#auth-storage)
|
|
54
|
+
|
|
55
|
+
For static secret refs and runtime snapshot activation behavior, see [Secrets Management](/gateway/secrets).
|
|
56
|
+
|
|
57
|
+
## Anthropic setup-token (subscription auth)
|
|
58
|
+
|
|
59
|
+
<Warning>
|
|
60
|
+
Anthropic setup-token support is technical compatibility, not a policy guarantee.
|
|
61
|
+
Anthropic has blocked some subscription usage outside Claude Code in the past.
|
|
62
|
+
Decide for yourself whether to use subscription auth, and verify Anthropic's current terms.
|
|
63
|
+
</Warning>
|
|
64
|
+
|
|
65
|
+
Run `claude setup-token` on any machine, then paste it into QuantumClaw:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
quantumclaw models auth setup-token --provider anthropic
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If you generated the token elsewhere, paste it manually:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
quantumclaw models auth paste-token --provider anthropic
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Verify:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
quantumclaw models status
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## OAuth exchange (how login works)
|
|
84
|
+
|
|
85
|
+
QuantumClaw’s interactive login flows are implemented in `@mariozechner/pi-ai` and wired into the wizards/commands.
|
|
86
|
+
|
|
87
|
+
### Anthropic setup-token
|
|
88
|
+
|
|
89
|
+
Flow shape:
|
|
90
|
+
|
|
91
|
+
1. run `claude setup-token`
|
|
92
|
+
2. paste the token into QuantumClaw
|
|
93
|
+
3. store as a token auth profile (no refresh)
|
|
94
|
+
|
|
95
|
+
The wizard path is `quantumclaw onboard` → auth choice `setup-token` (Anthropic).
|
|
96
|
+
|
|
97
|
+
### OpenAI Codex (ChatGPT OAuth)
|
|
98
|
+
|
|
99
|
+
OpenAI Codex OAuth is explicitly supported for use outside the Codex CLI, including QuantumClaw workflows.
|
|
100
|
+
|
|
101
|
+
Flow shape (PKCE):
|
|
102
|
+
|
|
103
|
+
1. generate PKCE verifier/challenge + random `state`
|
|
104
|
+
2. open `https://auth.openai.com/oauth/authorize?...`
|
|
105
|
+
3. try to capture callback on `http://127.0.0.1:1455/auth/callback`
|
|
106
|
+
4. if callback can’t bind (or you’re remote/headless), paste the redirect URL/code
|
|
107
|
+
5. exchange at `https://auth.openai.com/oauth/token`
|
|
108
|
+
6. extract `accountId` from the access token and store `{ access, refresh, expires, accountId }`
|
|
109
|
+
|
|
110
|
+
Wizard path is `quantumclaw onboard` → auth choice `openai-codex`.
|
|
111
|
+
|
|
112
|
+
## Refresh + expiry
|
|
113
|
+
|
|
114
|
+
Profiles store an `expires` timestamp.
|
|
115
|
+
|
|
116
|
+
At runtime:
|
|
117
|
+
|
|
118
|
+
- if `expires` is in the future → use the stored access token
|
|
119
|
+
- if expired → refresh (under a file lock) and overwrite the stored credentials
|
|
120
|
+
|
|
121
|
+
The refresh flow is automatic; you generally don't need to manage tokens manually.
|
|
122
|
+
|
|
123
|
+
## Multiple accounts (profiles) + routing
|
|
124
|
+
|
|
125
|
+
Two patterns:
|
|
126
|
+
|
|
127
|
+
### 1) Preferred: separate agents
|
|
128
|
+
|
|
129
|
+
If you want “personal” and “work” to never interact, use isolated agents (separate sessions + credentials + workspace):
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
quantumclaw agents add work
|
|
133
|
+
quantumclaw agents add personal
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Then configure auth per-agent (wizard) and route chats to the right agent.
|
|
137
|
+
|
|
138
|
+
### 2) Advanced: multiple profiles in one agent
|
|
139
|
+
|
|
140
|
+
`auth-profiles.json` supports multiple profile IDs for the same provider.
|
|
141
|
+
|
|
142
|
+
Pick which profile is used:
|
|
143
|
+
|
|
144
|
+
- globally via config ordering (`auth.order`)
|
|
145
|
+
- per-session via `/model ...@<profileId>`
|
|
146
|
+
|
|
147
|
+
Example (session override):
|
|
148
|
+
|
|
149
|
+
- `/model Opus@anthropic:work`
|
|
150
|
+
|
|
151
|
+
How to see what profile IDs exist:
|
|
152
|
+
|
|
153
|
+
- `quantumclaw channels list --json` (shows `auth[]`)
|
|
154
|
+
|
|
155
|
+
Related docs:
|
|
156
|
+
|
|
157
|
+
- [/concepts/model-failover](/concepts/model-failover) (rotation + cooldown rules)
|
|
158
|
+
- [/tools/slash-commands](/tools/slash-commands) (command surface)
|