@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,330 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Trusted Proxy Auth"
|
|
3
|
+
summary: "Delegate gateway authentication to a trusted reverse proxy (Pomerium, Caddy, nginx + OAuth)"
|
|
4
|
+
read_when:
|
|
5
|
+
- Running QuantumClaw behind an identity-aware proxy
|
|
6
|
+
- Setting up Pomerium, Caddy, or nginx with OAuth in front of QuantumClaw
|
|
7
|
+
- Fixing WebSocket 1008 unauthorized errors with reverse proxy setups
|
|
8
|
+
- Deciding where to set HSTS and other HTTP hardening headers
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Trusted Proxy Auth
|
|
12
|
+
|
|
13
|
+
> ⚠️ **Security-sensitive feature.** This mode delegates authentication entirely to your reverse proxy. Misconfiguration can expose your Gateway to unauthorized access. Read this page carefully before enabling.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
Use `trusted-proxy` auth mode when:
|
|
18
|
+
|
|
19
|
+
- You run QuantumClaw behind an **identity-aware proxy** (Pomerium, Caddy + OAuth, nginx + oauth2-proxy, Traefik + forward auth)
|
|
20
|
+
- Your proxy handles all authentication and passes user identity via headers
|
|
21
|
+
- You're in a Kubernetes or container environment where the proxy is the only path to the Gateway
|
|
22
|
+
- You're hitting WebSocket `1008 unauthorized` errors because browsers can't pass tokens in WS payloads
|
|
23
|
+
|
|
24
|
+
## When NOT to Use
|
|
25
|
+
|
|
26
|
+
- If your proxy doesn't authenticate users (just a TLS terminator or load balancer)
|
|
27
|
+
- If there's any path to the Gateway that bypasses the proxy (firewall holes, internal network access)
|
|
28
|
+
- If you're unsure whether your proxy correctly strips/overwrites forwarded headers
|
|
29
|
+
- If you only need personal single-user access (consider Tailscale Serve + loopback for simpler setup)
|
|
30
|
+
|
|
31
|
+
## How It Works
|
|
32
|
+
|
|
33
|
+
1. Your reverse proxy authenticates users (OAuth, OIDC, SAML, etc.)
|
|
34
|
+
2. Proxy adds a header with the authenticated user identity (e.g., `x-forwarded-user: nick@example.com`)
|
|
35
|
+
3. QuantumClaw checks that the request came from a **trusted proxy IP** (configured in `gateway.trustedProxies`)
|
|
36
|
+
4. QuantumClaw extracts the user identity from the configured header
|
|
37
|
+
5. If everything checks out, the request is authorized
|
|
38
|
+
|
|
39
|
+
## Control UI Pairing Behavior
|
|
40
|
+
|
|
41
|
+
When `gateway.auth.mode = "trusted-proxy"` is active and the request passes
|
|
42
|
+
trusted-proxy checks, Control UI WebSocket sessions can connect without device
|
|
43
|
+
pairing identity.
|
|
44
|
+
|
|
45
|
+
Implications:
|
|
46
|
+
|
|
47
|
+
- Pairing is no longer the primary gate for Control UI access in this mode.
|
|
48
|
+
- Your reverse proxy auth policy and `allowUsers` become the effective access control.
|
|
49
|
+
- Keep gateway ingress locked to trusted proxy IPs only (`gateway.trustedProxies` + firewall).
|
|
50
|
+
|
|
51
|
+
## Configuration
|
|
52
|
+
|
|
53
|
+
```json5
|
|
54
|
+
{
|
|
55
|
+
gateway: {
|
|
56
|
+
// Use loopback for same-host proxy setups; use lan/custom for remote proxy hosts
|
|
57
|
+
bind: "loopback",
|
|
58
|
+
|
|
59
|
+
// CRITICAL: Only add your proxy's IP(s) here
|
|
60
|
+
trustedProxies: ["10.0.0.1", "172.17.0.1"],
|
|
61
|
+
|
|
62
|
+
auth: {
|
|
63
|
+
mode: "trusted-proxy",
|
|
64
|
+
trustedProxy: {
|
|
65
|
+
// Header containing authenticated user identity (required)
|
|
66
|
+
userHeader: "x-forwarded-user",
|
|
67
|
+
|
|
68
|
+
// Optional: headers that MUST be present (proxy verification)
|
|
69
|
+
requiredHeaders: ["x-forwarded-proto", "x-forwarded-host"],
|
|
70
|
+
|
|
71
|
+
// Optional: restrict to specific users (empty = allow all)
|
|
72
|
+
allowUsers: ["nick@example.com", "admin@company.org"],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
If `gateway.bind` is `loopback`, include a loopback proxy address in
|
|
80
|
+
`gateway.trustedProxies` (`127.0.0.1`, `::1`, or an equivalent loopback CIDR).
|
|
81
|
+
|
|
82
|
+
### Configuration Reference
|
|
83
|
+
|
|
84
|
+
| Field | Required | Description |
|
|
85
|
+
| ------------------------------------------- | -------- | --------------------------------------------------------------------------- |
|
|
86
|
+
| `gateway.trustedProxies` | Yes | Array of proxy IP addresses to trust. Requests from other IPs are rejected. |
|
|
87
|
+
| `gateway.auth.mode` | Yes | Must be `"trusted-proxy"` |
|
|
88
|
+
| `gateway.auth.trustedProxy.userHeader` | Yes | Header name containing the authenticated user identity |
|
|
89
|
+
| `gateway.auth.trustedProxy.requiredHeaders` | No | Additional headers that must be present for the request to be trusted |
|
|
90
|
+
| `gateway.auth.trustedProxy.allowUsers` | No | Allowlist of user identities. Empty means allow all authenticated users. |
|
|
91
|
+
|
|
92
|
+
## TLS termination and HSTS
|
|
93
|
+
|
|
94
|
+
Use one TLS termination point and apply HSTS there.
|
|
95
|
+
|
|
96
|
+
### Recommended pattern: proxy TLS termination
|
|
97
|
+
|
|
98
|
+
When your reverse proxy handles HTTPS for `https://control.example.com`, set
|
|
99
|
+
`Strict-Transport-Security` at the proxy for that domain.
|
|
100
|
+
|
|
101
|
+
- Good fit for internet-facing deployments.
|
|
102
|
+
- Keeps certificate + HTTP hardening policy in one place.
|
|
103
|
+
- QuantumClaw can stay on loopback HTTP behind the proxy.
|
|
104
|
+
|
|
105
|
+
Example header value:
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
Strict-Transport-Security: max-age=31536000; includeSubDomains
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Gateway TLS termination
|
|
112
|
+
|
|
113
|
+
If QuantumClaw itself serves HTTPS directly (no TLS-terminating proxy), set:
|
|
114
|
+
|
|
115
|
+
```json5
|
|
116
|
+
{
|
|
117
|
+
gateway: {
|
|
118
|
+
tls: { enabled: true },
|
|
119
|
+
http: {
|
|
120
|
+
securityHeaders: {
|
|
121
|
+
strictTransportSecurity: "max-age=31536000; includeSubDomains",
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
`strictTransportSecurity` accepts a string header value, or `false` to disable explicitly.
|
|
129
|
+
|
|
130
|
+
### Rollout guidance
|
|
131
|
+
|
|
132
|
+
- Start with a short max age first (for example `max-age=300`) while validating traffic.
|
|
133
|
+
- Increase to long-lived values (for example `max-age=31536000`) only after confidence is high.
|
|
134
|
+
- Add `includeSubDomains` only if every subdomain is HTTPS-ready.
|
|
135
|
+
- Use preload only if you intentionally meet preload requirements for your full domain set.
|
|
136
|
+
- Loopback-only local development does not benefit from HSTS.
|
|
137
|
+
|
|
138
|
+
## Proxy Setup Examples
|
|
139
|
+
|
|
140
|
+
### Pomerium
|
|
141
|
+
|
|
142
|
+
Pomerium passes identity in `x-pomerium-claim-email` (or other claim headers) and a JWT in `x-pomerium-jwt-assertion`.
|
|
143
|
+
|
|
144
|
+
```json5
|
|
145
|
+
{
|
|
146
|
+
gateway: {
|
|
147
|
+
bind: "lan",
|
|
148
|
+
trustedProxies: ["10.0.0.1"], // Pomerium's IP
|
|
149
|
+
auth: {
|
|
150
|
+
mode: "trusted-proxy",
|
|
151
|
+
trustedProxy: {
|
|
152
|
+
userHeader: "x-pomerium-claim-email",
|
|
153
|
+
requiredHeaders: ["x-pomerium-jwt-assertion"],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Pomerium config snippet:
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
routes:
|
|
164
|
+
- from: https://quantumclaw.example.com
|
|
165
|
+
to: http://quantumclaw-gateway:18789
|
|
166
|
+
policy:
|
|
167
|
+
- allow:
|
|
168
|
+
or:
|
|
169
|
+
- email:
|
|
170
|
+
is: nick@example.com
|
|
171
|
+
pass_identity_headers: true
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Caddy with OAuth
|
|
175
|
+
|
|
176
|
+
Caddy with the `caddy-security` plugin can authenticate users and pass identity headers.
|
|
177
|
+
|
|
178
|
+
```json5
|
|
179
|
+
{
|
|
180
|
+
gateway: {
|
|
181
|
+
bind: "lan",
|
|
182
|
+
trustedProxies: ["127.0.0.1"], // Caddy's IP (if on same host)
|
|
183
|
+
auth: {
|
|
184
|
+
mode: "trusted-proxy",
|
|
185
|
+
trustedProxy: {
|
|
186
|
+
userHeader: "x-forwarded-user",
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Caddyfile snippet:
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
quantumclaw.example.com {
|
|
197
|
+
authenticate with oauth2_provider
|
|
198
|
+
authorize with policy1
|
|
199
|
+
|
|
200
|
+
reverse_proxy quantumclaw:18789 {
|
|
201
|
+
header_up X-Forwarded-User {http.auth.user.email}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### nginx + oauth2-proxy
|
|
207
|
+
|
|
208
|
+
oauth2-proxy authenticates users and passes identity in `x-auth-request-email`.
|
|
209
|
+
|
|
210
|
+
```json5
|
|
211
|
+
{
|
|
212
|
+
gateway: {
|
|
213
|
+
bind: "lan",
|
|
214
|
+
trustedProxies: ["10.0.0.1"], // nginx/oauth2-proxy IP
|
|
215
|
+
auth: {
|
|
216
|
+
mode: "trusted-proxy",
|
|
217
|
+
trustedProxy: {
|
|
218
|
+
userHeader: "x-auth-request-email",
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
},
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
nginx config snippet:
|
|
226
|
+
|
|
227
|
+
```nginx
|
|
228
|
+
location / {
|
|
229
|
+
auth_request /oauth2/auth;
|
|
230
|
+
auth_request_set $user $upstream_http_x_auth_request_email;
|
|
231
|
+
|
|
232
|
+
proxy_pass http://quantumclaw:18789;
|
|
233
|
+
proxy_set_header X-Auth-Request-Email $user;
|
|
234
|
+
proxy_http_version 1.1;
|
|
235
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
236
|
+
proxy_set_header Connection "upgrade";
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Traefik with Forward Auth
|
|
241
|
+
|
|
242
|
+
```json5
|
|
243
|
+
{
|
|
244
|
+
gateway: {
|
|
245
|
+
bind: "lan",
|
|
246
|
+
trustedProxies: ["172.17.0.1"], // Traefik container IP
|
|
247
|
+
auth: {
|
|
248
|
+
mode: "trusted-proxy",
|
|
249
|
+
trustedProxy: {
|
|
250
|
+
userHeader: "x-forwarded-user",
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
},
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Security Checklist
|
|
258
|
+
|
|
259
|
+
Before enabling trusted-proxy auth, verify:
|
|
260
|
+
|
|
261
|
+
- [ ] **Proxy is the only path**: The Gateway port is firewalled from everything except your proxy
|
|
262
|
+
- [ ] **trustedProxies is minimal**: Only your actual proxy IPs, not entire subnets
|
|
263
|
+
- [ ] **Proxy strips headers**: Your proxy overwrites (not appends) `x-forwarded-*` headers from clients
|
|
264
|
+
- [ ] **TLS termination**: Your proxy handles TLS; users connect via HTTPS
|
|
265
|
+
- [ ] **allowUsers is set** (recommended): Restrict to known users rather than allowing anyone authenticated
|
|
266
|
+
|
|
267
|
+
## Security Audit
|
|
268
|
+
|
|
269
|
+
`quantumclaw security audit` will flag trusted-proxy auth with a **critical** severity finding. This is intentional — it's a reminder that you're delegating security to your proxy setup.
|
|
270
|
+
|
|
271
|
+
The audit checks for:
|
|
272
|
+
|
|
273
|
+
- Missing `trustedProxies` configuration
|
|
274
|
+
- Missing `userHeader` configuration
|
|
275
|
+
- Empty `allowUsers` (allows any authenticated user)
|
|
276
|
+
|
|
277
|
+
## Troubleshooting
|
|
278
|
+
|
|
279
|
+
### "trusted_proxy_untrusted_source"
|
|
280
|
+
|
|
281
|
+
The request didn't come from an IP in `gateway.trustedProxies`. Check:
|
|
282
|
+
|
|
283
|
+
- Is the proxy IP correct? (Docker container IPs can change)
|
|
284
|
+
- Is there a load balancer in front of your proxy?
|
|
285
|
+
- Use `docker inspect` or `kubectl get pods -o wide` to find actual IPs
|
|
286
|
+
|
|
287
|
+
### "trusted_proxy_user_missing"
|
|
288
|
+
|
|
289
|
+
The user header was empty or missing. Check:
|
|
290
|
+
|
|
291
|
+
- Is your proxy configured to pass identity headers?
|
|
292
|
+
- Is the header name correct? (case-insensitive, but spelling matters)
|
|
293
|
+
- Is the user actually authenticated at the proxy?
|
|
294
|
+
|
|
295
|
+
### "trusted*proxy_missing_header*\*"
|
|
296
|
+
|
|
297
|
+
A required header wasn't present. Check:
|
|
298
|
+
|
|
299
|
+
- Your proxy configuration for those specific headers
|
|
300
|
+
- Whether headers are being stripped somewhere in the chain
|
|
301
|
+
|
|
302
|
+
### "trusted_proxy_user_not_allowed"
|
|
303
|
+
|
|
304
|
+
The user is authenticated but not in `allowUsers`. Either add them or remove the allowlist.
|
|
305
|
+
|
|
306
|
+
### WebSocket Still Failing
|
|
307
|
+
|
|
308
|
+
Make sure your proxy:
|
|
309
|
+
|
|
310
|
+
- Supports WebSocket upgrades (`Upgrade: websocket`, `Connection: upgrade`)
|
|
311
|
+
- Passes the identity headers on WebSocket upgrade requests (not just HTTP)
|
|
312
|
+
- Doesn't have a separate auth path for WebSocket connections
|
|
313
|
+
|
|
314
|
+
## Migration from Token Auth
|
|
315
|
+
|
|
316
|
+
If you're moving from token auth to trusted-proxy:
|
|
317
|
+
|
|
318
|
+
1. Configure your proxy to authenticate users and pass headers
|
|
319
|
+
2. Test the proxy setup independently (curl with headers)
|
|
320
|
+
3. Update QuantumClaw config with trusted-proxy auth
|
|
321
|
+
4. Restart the Gateway
|
|
322
|
+
5. Test WebSocket connections from the Control UI
|
|
323
|
+
6. Run `quantumclaw security audit` and review findings
|
|
324
|
+
|
|
325
|
+
## Related
|
|
326
|
+
|
|
327
|
+
- [Security](/gateway/security) — full security guide
|
|
328
|
+
- [Configuration](/gateway/configuration) — config reference
|
|
329
|
+
- [Remote Access](/gateway/remote) — other remote access patterns
|
|
330
|
+
- [Tailscale](/gateway/tailscale) — simpler alternative for tailnet-only access
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Debugging tools: watch mode, raw model streams, and tracing reasoning leakage"
|
|
3
|
+
read_when:
|
|
4
|
+
- You need to inspect raw model output for reasoning leakage
|
|
5
|
+
- You want to run the Gateway in watch mode while iterating
|
|
6
|
+
- You need a repeatable debugging workflow
|
|
7
|
+
title: "Debugging"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Debugging
|
|
11
|
+
|
|
12
|
+
This page covers debugging helpers for streaming output, especially when a
|
|
13
|
+
provider mixes reasoning into normal text.
|
|
14
|
+
|
|
15
|
+
## Runtime debug overrides
|
|
16
|
+
|
|
17
|
+
Use `/debug` in chat to set **runtime-only** config overrides (memory, not disk).
|
|
18
|
+
`/debug` is disabled by default; enable with `commands.debug: true`.
|
|
19
|
+
This is handy when you need to toggle obscure settings without editing `quantumclaw.json`.
|
|
20
|
+
|
|
21
|
+
Examples:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
/debug show
|
|
25
|
+
/debug set messages.responsePrefix="[quantumclaw]"
|
|
26
|
+
/debug unset messages.responsePrefix
|
|
27
|
+
/debug reset
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`/debug reset` clears all overrides and returns to the on-disk config.
|
|
31
|
+
|
|
32
|
+
## Gateway watch mode
|
|
33
|
+
|
|
34
|
+
For fast iteration, run the gateway under the file watcher:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
pnpm gateway:watch
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
This maps to:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
node scripts/watch-node.mjs gateway --force
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
The watcher restarts on build-relevant files under `src/`, extension source files,
|
|
47
|
+
extension `package.json` and `quantumclaw.plugin.json` metadata, `tsconfig.json`,
|
|
48
|
+
`package.json`, and `tsdown.config.ts`. Extension metadata changes restart the
|
|
49
|
+
gateway without forcing a `tsdown` rebuild; source and config changes still
|
|
50
|
+
rebuild `dist` first.
|
|
51
|
+
|
|
52
|
+
Add any gateway CLI flags after `gateway:watch` and they will be passed through on
|
|
53
|
+
each restart.
|
|
54
|
+
|
|
55
|
+
## Dev profile + dev gateway (--dev)
|
|
56
|
+
|
|
57
|
+
Use the dev profile to isolate state and spin up a safe, disposable setup for
|
|
58
|
+
debugging. There are **two** `--dev` flags:
|
|
59
|
+
|
|
60
|
+
- **Global `--dev` (profile):** isolates state under `~/.quantumclaw-dev` and
|
|
61
|
+
defaults the gateway port to `19001` (derived ports shift with it).
|
|
62
|
+
- **`gateway --dev`: tells the Gateway to auto-create a default config +
|
|
63
|
+
workspace** when missing (and skip BOOTSTRAP.md).
|
|
64
|
+
|
|
65
|
+
Recommended flow (dev profile + dev bootstrap):
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pnpm gateway:dev
|
|
69
|
+
QUANTUMCLAW_PROFILE=dev quantumclaw tui
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If you don’t have a global install yet, run the CLI via `pnpm quantumclaw ...`.
|
|
73
|
+
|
|
74
|
+
What this does:
|
|
75
|
+
|
|
76
|
+
1. **Profile isolation** (global `--dev`)
|
|
77
|
+
- `QUANTUMCLAW_PROFILE=dev`
|
|
78
|
+
- `QUANTUMCLAW_STATE_DIR=~/.quantumclaw-dev`
|
|
79
|
+
- `QUANTUMCLAW_CONFIG_PATH=~/.quantumclaw-dev/quantumclaw.json`
|
|
80
|
+
- `QUANTUMCLAW_GATEWAY_PORT=19001` (browser/canvas shift accordingly)
|
|
81
|
+
|
|
82
|
+
2. **Dev bootstrap** (`gateway --dev`)
|
|
83
|
+
- Writes a minimal config if missing (`gateway.mode=local`, bind loopback).
|
|
84
|
+
- Sets `agent.workspace` to the dev workspace.
|
|
85
|
+
- Sets `agent.skipBootstrap=true` (no BOOTSTRAP.md).
|
|
86
|
+
- Seeds the workspace files if missing:
|
|
87
|
+
`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`.
|
|
88
|
+
- Default identity: **C3‑PO** (protocol droid).
|
|
89
|
+
- Skips channel providers in dev mode (`QUANTUMCLAW_SKIP_CHANNELS=1`).
|
|
90
|
+
|
|
91
|
+
Reset flow (fresh start):
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pnpm gateway:dev:reset
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Note: `--dev` is a **global** profile flag and gets eaten by some runners.
|
|
98
|
+
If you need to spell it out, use the env var form:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
QUANTUMCLAW_PROFILE=dev quantumclaw gateway --dev --reset
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`--reset` wipes config, credentials, sessions, and the dev workspace (using
|
|
105
|
+
`trash`, not `rm`), then recreates the default dev setup.
|
|
106
|
+
|
|
107
|
+
Tip: if a non‑dev gateway is already running (launchd/systemd), stop it first:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
quantumclaw gateway stop
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Raw stream logging (QuantumClaw)
|
|
114
|
+
|
|
115
|
+
QuantumClaw can log the **raw assistant stream** before any filtering/formatting.
|
|
116
|
+
This is the best way to see whether reasoning is arriving as plain text deltas
|
|
117
|
+
(or as separate thinking blocks).
|
|
118
|
+
|
|
119
|
+
Enable it via CLI:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
pnpm gateway:watch --raw-stream
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Optional path override:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
pnpm gateway:watch --raw-stream --raw-stream-path ~/.quantumclaw/logs/raw-stream.jsonl
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Equivalent env vars:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
QUANTUMCLAW_RAW_STREAM=1
|
|
135
|
+
QUANTUMCLAW_RAW_STREAM_PATH=~/.quantumclaw/logs/raw-stream.jsonl
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Default file:
|
|
139
|
+
|
|
140
|
+
`~/.quantumclaw/logs/raw-stream.jsonl`
|
|
141
|
+
|
|
142
|
+
## Raw chunk logging (pi-mono)
|
|
143
|
+
|
|
144
|
+
To capture **raw OpenAI-compat chunks** before they are parsed into blocks,
|
|
145
|
+
pi-mono exposes a separate logger:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
PI_RAW_STREAM=1
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Optional path:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
PI_RAW_STREAM_PATH=~/.pi-mono/logs/raw-openai-completions.jsonl
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Default file:
|
|
158
|
+
|
|
159
|
+
`~/.pi-mono/logs/raw-openai-completions.jsonl`
|
|
160
|
+
|
|
161
|
+
> Note: this is only emitted by processes using pi-mono’s
|
|
162
|
+
> `openai-completions` provider.
|
|
163
|
+
|
|
164
|
+
## Safety notes
|
|
165
|
+
|
|
166
|
+
- Raw stream logs can include full prompts, tool output, and user data.
|
|
167
|
+
- Keep logs local and delete them after debugging.
|
|
168
|
+
- If you share logs, scrub secrets and PII first.
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Where QuantumClaw loads environment variables and the precedence order"
|
|
3
|
+
read_when:
|
|
4
|
+
- You need to know which env vars are loaded, and in what order
|
|
5
|
+
- You are debugging missing API keys in the Gateway
|
|
6
|
+
- You are documenting provider auth or deployment environments
|
|
7
|
+
title: "Environment Variables"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Environment variables
|
|
11
|
+
|
|
12
|
+
QuantumClaw pulls environment variables from multiple sources. The rule is **never override existing values**.
|
|
13
|
+
|
|
14
|
+
## Precedence (highest → lowest)
|
|
15
|
+
|
|
16
|
+
1. **Process environment** (what the Gateway process already has from the parent shell/daemon).
|
|
17
|
+
2. **`.env` in the current working directory** (dotenv default; does not override).
|
|
18
|
+
3. **Global `.env`** at `~/.quantumclaw/.env` (aka `$QUANTUMCLAW_STATE_DIR/.env`; does not override).
|
|
19
|
+
4. **Config `env` block** in `~/.quantumclaw/quantumclaw.json` (applied only if missing).
|
|
20
|
+
5. **Optional login-shell import** (`env.shellEnv.enabled` or `QUANTUMCLAW_LOAD_SHELL_ENV=1`), applied only for missing expected keys.
|
|
21
|
+
|
|
22
|
+
If the config file is missing entirely, step 4 is skipped; shell import still runs if enabled.
|
|
23
|
+
|
|
24
|
+
## Config `env` block
|
|
25
|
+
|
|
26
|
+
Two equivalent ways to set inline env vars (both are non-overriding):
|
|
27
|
+
|
|
28
|
+
```json5
|
|
29
|
+
{
|
|
30
|
+
env: {
|
|
31
|
+
OPENROUTER_API_KEY: "sk-or-...",
|
|
32
|
+
vars: {
|
|
33
|
+
GROQ_API_KEY: "gsk-...",
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Shell env import
|
|
40
|
+
|
|
41
|
+
`env.shellEnv` runs your login shell and imports only **missing** expected keys:
|
|
42
|
+
|
|
43
|
+
```json5
|
|
44
|
+
{
|
|
45
|
+
env: {
|
|
46
|
+
shellEnv: {
|
|
47
|
+
enabled: true,
|
|
48
|
+
timeoutMs: 15000,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Env var equivalents:
|
|
55
|
+
|
|
56
|
+
- `QUANTUMCLAW_LOAD_SHELL_ENV=1`
|
|
57
|
+
- `QUANTUMCLAW_SHELL_ENV_TIMEOUT_MS=15000`
|
|
58
|
+
|
|
59
|
+
## Runtime-injected env vars
|
|
60
|
+
|
|
61
|
+
QuantumClaw also injects context markers into spawned child processes:
|
|
62
|
+
|
|
63
|
+
- `QUANTUMCLAW_SHELL=exec`: set for commands run through the `exec` tool.
|
|
64
|
+
- `QUANTUMCLAW_SHELL=acp`: set for ACP runtime backend process spawns (for example `acpx`).
|
|
65
|
+
- `QUANTUMCLAW_SHELL=acp-client`: set for `quantumclaw acp client` when it spawns the ACP bridge process.
|
|
66
|
+
- `QUANTUMCLAW_SHELL=tui-local`: set for local TUI `!` shell commands.
|
|
67
|
+
|
|
68
|
+
These are runtime markers (not required user config). They can be used in shell/profile logic
|
|
69
|
+
to apply context-specific rules.
|
|
70
|
+
|
|
71
|
+
## UI env vars
|
|
72
|
+
|
|
73
|
+
- `QUANTUMCLAW_THEME=light`: force the light TUI palette when your terminal has a light background.
|
|
74
|
+
- `QUANTUMCLAW_THEME=dark`: force the dark TUI palette.
|
|
75
|
+
- `COLORFGBG`: if your terminal exports it, QuantumClaw uses the background color hint to auto-pick the TUI palette.
|
|
76
|
+
|
|
77
|
+
## Env var substitution in config
|
|
78
|
+
|
|
79
|
+
You can reference env vars directly in config string values using `${VAR_NAME}` syntax:
|
|
80
|
+
|
|
81
|
+
```json5
|
|
82
|
+
{
|
|
83
|
+
models: {
|
|
84
|
+
providers: {
|
|
85
|
+
"vercel-gateway": {
|
|
86
|
+
apiKey: "${VERCEL_GATEWAY_API_KEY}",
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
See [Configuration: Env var substitution](/gateway/configuration-reference#env-var-substitution) for full details.
|
|
94
|
+
|
|
95
|
+
## Secret refs vs `${ENV}` strings
|
|
96
|
+
|
|
97
|
+
QuantumClaw supports two env-driven patterns:
|
|
98
|
+
|
|
99
|
+
- `${VAR}` string substitution in config values.
|
|
100
|
+
- SecretRef objects (`{ source: "env", provider: "default", id: "VAR" }`) for fields that support secrets references.
|
|
101
|
+
|
|
102
|
+
Both resolve from process env at activation time. SecretRef details are documented in [Secrets Management](/gateway/secrets).
|
|
103
|
+
|
|
104
|
+
## Path-related env vars
|
|
105
|
+
|
|
106
|
+
| Variable | Purpose |
|
|
107
|
+
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
108
|
+
| `QUANTUMCLAW_HOME` | Override the home directory used for all internal path resolution (`~/.quantumclaw/`, agent dirs, sessions, credentials). Useful when running QuantumClaw as a dedicated service user. |
|
|
109
|
+
| `QUANTUMCLAW_STATE_DIR` | Override the state directory (default `~/.quantumclaw`). |
|
|
110
|
+
| `QUANTUMCLAW_CONFIG_PATH` | Override the config file path (default `~/.quantumclaw/quantumclaw.json`). |
|
|
111
|
+
|
|
112
|
+
## Logging
|
|
113
|
+
|
|
114
|
+
| Variable | Purpose |
|
|
115
|
+
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
116
|
+
| `QUANTUMCLAW_LOG_LEVEL` | Override log level for both file and console (e.g. `debug`, `trace`). Takes precedence over `logging.level` and `logging.consoleLevel` in config. Invalid values are ignored with a warning. |
|
|
117
|
+
|
|
118
|
+
### `QUANTUMCLAW_HOME`
|
|
119
|
+
|
|
120
|
+
When set, `QUANTUMCLAW_HOME` replaces the system home directory (`$HOME` / `os.homedir()`) for all internal path resolution. This enables full filesystem isolation for headless service accounts.
|
|
121
|
+
|
|
122
|
+
**Precedence:** `QUANTUMCLAW_HOME` > `$HOME` > `USERPROFILE` > `os.homedir()`
|
|
123
|
+
|
|
124
|
+
**Example** (macOS LaunchDaemon):
|
|
125
|
+
|
|
126
|
+
```xml
|
|
127
|
+
<key>EnvironmentVariables</key>
|
|
128
|
+
<dict>
|
|
129
|
+
<key>QUANTUMCLAW_HOME</key>
|
|
130
|
+
<string>/Users/kira</string>
|
|
131
|
+
</dict>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
`QUANTUMCLAW_HOME` can also be set to a tilde path (e.g. `~/svc`), which gets expanded using `$HOME` before use.
|
|
135
|
+
|
|
136
|
+
## nvm users: web_fetch TLS failures
|
|
137
|
+
|
|
138
|
+
If Node.js was installed via **nvm** (not the system package manager), the built-in `fetch()` uses
|
|
139
|
+
nvm's bundled CA store, which may be missing modern root CAs (ISRG Root X1/X2 for Let's Encrypt,
|
|
140
|
+
DigiCert Global Root G2, etc.). This causes `web_fetch` to fail with `"fetch failed"` on most HTTPS sites.
|
|
141
|
+
|
|
142
|
+
On Linux, QuantumClaw automatically detects nvm and applies the fix in the actual startup environment:
|
|
143
|
+
|
|
144
|
+
- `quantumclaw gateway install` writes `NODE_EXTRA_CA_CERTS` into the systemd service environment
|
|
145
|
+
- the `quantumclaw` CLI entrypoint re-execs itself with `NODE_EXTRA_CA_CERTS` set before Node startup
|
|
146
|
+
|
|
147
|
+
**Manual fix (for older versions or direct `node ...` launches):**
|
|
148
|
+
|
|
149
|
+
Export the variable before starting QuantumClaw:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
export NODE_EXTRA_CA_CERTS=/etc/ssl/certs/ca-certificates.crt
|
|
153
|
+
quantumclaw gateway run
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Do not rely on writing only to `~/.quantumclaw/.env` for this variable; Node reads
|
|
157
|
+
`NODE_EXTRA_CA_CERTS` at process startup.
|
|
158
|
+
|
|
159
|
+
## Related
|
|
160
|
+
|
|
161
|
+
- [Gateway configuration](/gateway/configuration)
|
|
162
|
+
- [FAQ: env vars and .env loading](/help/faq#env-vars-and-env-loading)
|
|
163
|
+
- [Models overview](/concepts/models)
|