@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,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Browser-based control UI for the Gateway (chat, nodes, config)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to operate the Gateway from a browser
|
|
5
|
+
- You want Tailnet access without SSH tunnels
|
|
6
|
+
title: "Control UI"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Control UI (browser)
|
|
10
|
+
|
|
11
|
+
The Control UI is a small **Vite + Lit** single-page app served by the Gateway:
|
|
12
|
+
|
|
13
|
+
- default: `http://<host>:18789/`
|
|
14
|
+
- optional prefix: set `gateway.controlUi.basePath` (e.g. `/quantumclaw`)
|
|
15
|
+
|
|
16
|
+
It speaks **directly to the Gateway WebSocket** on the same port.
|
|
17
|
+
|
|
18
|
+
## Quick open (local)
|
|
19
|
+
|
|
20
|
+
If the Gateway is running on the same computer, open:
|
|
21
|
+
|
|
22
|
+
- [http://127.0.0.1:18789/](http://127.0.0.1:18789/) (or [http://localhost:18789/](http://localhost:18789/))
|
|
23
|
+
|
|
24
|
+
If the page fails to load, start the Gateway first: `quantumclaw gateway`.
|
|
25
|
+
|
|
26
|
+
Auth is supplied during the WebSocket handshake via:
|
|
27
|
+
|
|
28
|
+
- `connect.params.auth.token`
|
|
29
|
+
- `connect.params.auth.password`
|
|
30
|
+
The dashboard settings panel keeps a token for the current browser tab session and selected gateway URL; passwords are not persisted.
|
|
31
|
+
Onboarding generates a gateway token by default, so paste it here on first connect.
|
|
32
|
+
|
|
33
|
+
## Device pairing (first connection)
|
|
34
|
+
|
|
35
|
+
When you connect to the Control UI from a new browser or device, the Gateway
|
|
36
|
+
requires a **one-time pairing approval** — even if you're on the same Tailnet
|
|
37
|
+
with `gateway.auth.allowTailscale: true`. This is a security measure to prevent
|
|
38
|
+
unauthorized access.
|
|
39
|
+
|
|
40
|
+
**What you'll see:** "disconnected (1008): pairing required"
|
|
41
|
+
|
|
42
|
+
**To approve the device:**
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# List pending requests
|
|
46
|
+
quantumclaw devices list
|
|
47
|
+
|
|
48
|
+
# Approve by request ID
|
|
49
|
+
quantumclaw devices approve <requestId>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If the browser retries pairing with changed auth details (role/scopes/public
|
|
53
|
+
key), the previous pending request is superseded and a new `requestId` is
|
|
54
|
+
created. Re-run `quantumclaw devices list` before approval.
|
|
55
|
+
|
|
56
|
+
Once approved, the device is remembered and won't require re-approval unless
|
|
57
|
+
you revoke it with `quantumclaw devices revoke --device <id> --role <role>`. See
|
|
58
|
+
[Devices CLI](/cli/devices) for token rotation and revocation.
|
|
59
|
+
|
|
60
|
+
**Notes:**
|
|
61
|
+
|
|
62
|
+
- Local connections (`127.0.0.1`) are auto-approved.
|
|
63
|
+
- Remote connections (LAN, Tailnet, etc.) require explicit approval.
|
|
64
|
+
- Each browser profile generates a unique device ID, so switching browsers or
|
|
65
|
+
clearing browser data will require re-pairing.
|
|
66
|
+
|
|
67
|
+
## Language support
|
|
68
|
+
|
|
69
|
+
The Control UI can localize itself on first load based on your browser locale, and you can override it later from the language picker in the Access card.
|
|
70
|
+
|
|
71
|
+
- Supported locales: `en`, `zh-CN`, `zh-TW`, `pt-BR`, `de`, `es`
|
|
72
|
+
- Non-English translations are lazy-loaded in the browser.
|
|
73
|
+
- The selected locale is saved in browser storage and reused on future visits.
|
|
74
|
+
- Missing translation keys fall back to English.
|
|
75
|
+
|
|
76
|
+
## What it can do (today)
|
|
77
|
+
|
|
78
|
+
- Chat with the model via Gateway WS (`chat.history`, `chat.send`, `chat.abort`, `chat.inject`)
|
|
79
|
+
- Stream tool calls + live tool output cards in Chat (agent events)
|
|
80
|
+
- Channels: WhatsApp/Telegram/Discord/Slack + plugin channels (Mattermost, etc.) status + QR login + per-channel config (`channels.status`, `web.login.*`, `config.patch`)
|
|
81
|
+
- Instances: presence list + refresh (`system-presence`)
|
|
82
|
+
- Sessions: list + per-session thinking/fast/verbose/reasoning overrides (`sessions.list`, `sessions.patch`)
|
|
83
|
+
- Cron jobs: list/add/edit/run/enable/disable + run history (`cron.*`)
|
|
84
|
+
- Skills: status, enable/disable, install, API key updates (`skills.*`)
|
|
85
|
+
- Nodes: list + caps (`node.list`)
|
|
86
|
+
- Exec approvals: edit gateway or node allowlists + ask policy for `exec host=gateway/node` (`exec.approvals.*`)
|
|
87
|
+
- Config: view/edit `~/.quantumclaw/quantumclaw.json` (`config.get`, `config.set`)
|
|
88
|
+
- Config: apply + restart with validation (`config.apply`) and wake the last active session
|
|
89
|
+
- Config writes include a base-hash guard to prevent clobbering concurrent edits
|
|
90
|
+
- Config schema + form rendering (`config.schema`, including plugin + channel schemas); Raw JSON editor remains available
|
|
91
|
+
- Debug: status/health/models snapshots + event log + manual RPC calls (`status`, `health`, `models.list`)
|
|
92
|
+
- Logs: live tail of gateway file logs with filter/export (`logs.tail`)
|
|
93
|
+
- Update: run a package/git update + restart (`update.run`) with a restart report
|
|
94
|
+
|
|
95
|
+
Cron jobs panel notes:
|
|
96
|
+
|
|
97
|
+
- For isolated jobs, delivery defaults to announce summary. You can switch to none if you want internal-only runs.
|
|
98
|
+
- Channel/target fields appear when announce is selected.
|
|
99
|
+
- Webhook mode uses `delivery.mode = "webhook"` with `delivery.to` set to a valid HTTP(S) webhook URL.
|
|
100
|
+
- For main-session jobs, webhook and none delivery modes are available.
|
|
101
|
+
- Advanced edit controls include delete-after-run, clear agent override, cron exact/stagger options,
|
|
102
|
+
agent model/thinking overrides, and best-effort delivery toggles.
|
|
103
|
+
- Form validation is inline with field-level errors; invalid values disable the save button until fixed.
|
|
104
|
+
- Set `cron.webhookToken` to send a dedicated bearer token, if omitted the webhook is sent without an auth header.
|
|
105
|
+
- Deprecated fallback: stored legacy jobs with `notify: true` can still use `cron.webhook` until migrated.
|
|
106
|
+
|
|
107
|
+
## Chat behavior
|
|
108
|
+
|
|
109
|
+
- `chat.send` is **non-blocking**: it acks immediately with `{ runId, status: "started" }` and the response streams via `chat` events.
|
|
110
|
+
- Re-sending with the same `idempotencyKey` returns `{ status: "in_flight" }` while running, and `{ status: "ok" }` after completion.
|
|
111
|
+
- `chat.history` responses are size-bounded for UI safety. When transcript entries are too large, Gateway may truncate long text fields, omit heavy metadata blocks, and replace oversized messages with a placeholder (`[chat.history omitted: message too large]`).
|
|
112
|
+
- `chat.inject` appends an assistant note to the session transcript and broadcasts a `chat` event for UI-only updates (no agent run, no channel delivery).
|
|
113
|
+
- Stop:
|
|
114
|
+
- Click **Stop** (calls `chat.abort`)
|
|
115
|
+
- Type `/stop` (or standalone abort phrases like `stop`, `stop action`, `stop run`, `stop quantumclaw`, `please stop`) to abort out-of-band
|
|
116
|
+
- `chat.abort` supports `{ sessionKey }` (no `runId`) to abort all active runs for that session
|
|
117
|
+
- Abort partial retention:
|
|
118
|
+
- When a run is aborted, partial assistant text can still be shown in the UI
|
|
119
|
+
- Gateway persists aborted partial assistant text into transcript history when buffered output exists
|
|
120
|
+
- Persisted entries include abort metadata so transcript consumers can tell abort partials from normal completion output
|
|
121
|
+
|
|
122
|
+
## Tailnet access (recommended)
|
|
123
|
+
|
|
124
|
+
### Integrated Tailscale Serve (preferred)
|
|
125
|
+
|
|
126
|
+
Keep the Gateway on loopback and let Tailscale Serve proxy it with HTTPS:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
quantumclaw gateway --tailscale serve
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Open:
|
|
133
|
+
|
|
134
|
+
- `https://<magicdns>/` (or your configured `gateway.controlUi.basePath`)
|
|
135
|
+
|
|
136
|
+
By default, Control UI/WebSocket Serve requests can authenticate via Tailscale identity headers
|
|
137
|
+
(`tailscale-user-login`) when `gateway.auth.allowTailscale` is `true`. QuantumClaw
|
|
138
|
+
verifies the identity by resolving the `x-forwarded-for` address with
|
|
139
|
+
`tailscale whois` and matching it to the header, and only accepts these when the
|
|
140
|
+
request hits loopback with Tailscale’s `x-forwarded-*` headers. Set
|
|
141
|
+
`gateway.auth.allowTailscale: false` (or force `gateway.auth.mode: "password"`)
|
|
142
|
+
if you want to require a token/password even for Serve traffic.
|
|
143
|
+
Tokenless Serve auth assumes the gateway host is trusted. If untrusted local
|
|
144
|
+
code may run on that host, require token/password auth.
|
|
145
|
+
|
|
146
|
+
### Bind to tailnet + token
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
quantumclaw gateway --bind tailnet --token "$(openssl rand -hex 32)"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Then open:
|
|
153
|
+
|
|
154
|
+
- `http://<tailscale-ip>:18789/` (or your configured `gateway.controlUi.basePath`)
|
|
155
|
+
|
|
156
|
+
Paste the token into the UI settings (sent as `connect.params.auth.token`).
|
|
157
|
+
|
|
158
|
+
## Insecure HTTP
|
|
159
|
+
|
|
160
|
+
If you open the dashboard over plain HTTP (`http://<lan-ip>` or `http://<tailscale-ip>`),
|
|
161
|
+
the browser runs in a **non-secure context** and blocks WebCrypto. By default,
|
|
162
|
+
QuantumClaw **blocks** Control UI connections without device identity.
|
|
163
|
+
|
|
164
|
+
**Recommended fix:** use HTTPS (Tailscale Serve) or open the UI locally:
|
|
165
|
+
|
|
166
|
+
- `https://<magicdns>/` (Serve)
|
|
167
|
+
- `http://127.0.0.1:18789/` (on the gateway host)
|
|
168
|
+
|
|
169
|
+
**Insecure-auth toggle behavior:**
|
|
170
|
+
|
|
171
|
+
```json5
|
|
172
|
+
{
|
|
173
|
+
gateway: {
|
|
174
|
+
controlUi: { allowInsecureAuth: true },
|
|
175
|
+
bind: "tailnet",
|
|
176
|
+
auth: { mode: "token", token: "replace-me" },
|
|
177
|
+
},
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
`allowInsecureAuth` is a local compatibility toggle only:
|
|
182
|
+
|
|
183
|
+
- It allows localhost Control UI sessions to proceed without device identity in
|
|
184
|
+
non-secure HTTP contexts.
|
|
185
|
+
- It does not bypass pairing checks.
|
|
186
|
+
- It does not relax remote (non-localhost) device identity requirements.
|
|
187
|
+
|
|
188
|
+
**Break-glass only:**
|
|
189
|
+
|
|
190
|
+
```json5
|
|
191
|
+
{
|
|
192
|
+
gateway: {
|
|
193
|
+
controlUi: { dangerouslyDisableDeviceAuth: true },
|
|
194
|
+
bind: "tailnet",
|
|
195
|
+
auth: { mode: "token", token: "replace-me" },
|
|
196
|
+
},
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
`dangerouslyDisableDeviceAuth` disables Control UI device identity checks and is a
|
|
201
|
+
severe security downgrade. Revert quickly after emergency use.
|
|
202
|
+
|
|
203
|
+
See [Tailscale](/gateway/tailscale) for HTTPS setup guidance.
|
|
204
|
+
|
|
205
|
+
## Building the UI
|
|
206
|
+
|
|
207
|
+
The Gateway serves static files from `dist/control-ui`. Build them with:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
pnpm ui:build # auto-installs UI deps on first run
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Optional absolute base (when you want fixed asset URLs):
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
QUANTUMCLAW_CONTROL_UI_BASE_PATH=/quantumclaw/ pnpm ui:build
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
For local development (separate dev server):
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
pnpm ui:dev # auto-installs UI deps on first run
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Then point the UI at your Gateway WS URL (e.g. `ws://127.0.0.1:18789`).
|
|
226
|
+
|
|
227
|
+
## Debugging/testing: dev server + remote Gateway
|
|
228
|
+
|
|
229
|
+
The Control UI is static files; the WebSocket target is configurable and can be
|
|
230
|
+
different from the HTTP origin. This is handy when you want the Vite dev server
|
|
231
|
+
locally but the Gateway runs elsewhere.
|
|
232
|
+
|
|
233
|
+
1. Start the UI dev server: `pnpm ui:dev`
|
|
234
|
+
2. Open a URL like:
|
|
235
|
+
|
|
236
|
+
```text
|
|
237
|
+
http://localhost:5173/?gatewayUrl=ws://<gateway-host>:18789
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Optional one-time auth (if needed):
|
|
241
|
+
|
|
242
|
+
```text
|
|
243
|
+
http://localhost:5173/?gatewayUrl=wss://<gateway-host>:18789#token=<gateway-token>
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Notes:
|
|
247
|
+
|
|
248
|
+
- `gatewayUrl` is stored in localStorage after load and removed from the URL.
|
|
249
|
+
- `token` should be passed via the URL fragment (`#token=...`) whenever possible. Fragments are not sent to the server, which avoids request-log and Referer leakage. Legacy `?token=` query params are still imported once for compatibility, but only as a fallback, and are stripped immediately after bootstrap.
|
|
250
|
+
- `password` is kept in memory only.
|
|
251
|
+
- When `gatewayUrl` is set, the UI does not fall back to config or environment credentials.
|
|
252
|
+
Provide `token` (or `password`) explicitly. Missing explicit credentials is an error.
|
|
253
|
+
- Use `wss://` when the Gateway is behind TLS (Tailscale Serve, HTTPS proxy, etc.).
|
|
254
|
+
- `gatewayUrl` is only accepted in a top-level window (not embedded) to prevent clickjacking.
|
|
255
|
+
- Non-loopback Control UI deployments must set `gateway.controlUi.allowedOrigins`
|
|
256
|
+
explicitly (full origins). This includes remote dev setups.
|
|
257
|
+
- Do not use `gateway.controlUi.allowedOrigins: ["*"]` except for tightly controlled
|
|
258
|
+
local testing. It means allow any browser origin, not “match whatever host I am
|
|
259
|
+
using.”
|
|
260
|
+
- `gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true` enables
|
|
261
|
+
Host-header origin fallback mode, but it is a dangerous security mode.
|
|
262
|
+
|
|
263
|
+
Example:
|
|
264
|
+
|
|
265
|
+
```json5
|
|
266
|
+
{
|
|
267
|
+
gateway: {
|
|
268
|
+
controlUi: {
|
|
269
|
+
allowedOrigins: ["http://localhost:5173"],
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Remote access setup details: [Remote access](/gateway/remote).
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Gateway dashboard (Control UI) access and auth"
|
|
3
|
+
read_when:
|
|
4
|
+
- Changing dashboard authentication or exposure modes
|
|
5
|
+
title: "Dashboard"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Dashboard (Control UI)
|
|
9
|
+
|
|
10
|
+
The Gateway dashboard is the browser Control UI served at `/` by default
|
|
11
|
+
(override with `gateway.controlUi.basePath`).
|
|
12
|
+
|
|
13
|
+
Quick open (local Gateway):
|
|
14
|
+
|
|
15
|
+
- [http://127.0.0.1:18789/](http://127.0.0.1:18789/) (or [http://localhost:18789/](http://localhost:18789/))
|
|
16
|
+
|
|
17
|
+
Key references:
|
|
18
|
+
|
|
19
|
+
- [Control UI](/web/control-ui) for usage and UI capabilities.
|
|
20
|
+
- [Tailscale](/gateway/tailscale) for Serve/Funnel automation.
|
|
21
|
+
- [Web surfaces](/web) for bind modes and security notes.
|
|
22
|
+
|
|
23
|
+
Authentication is enforced at the WebSocket handshake via `connect.params.auth`
|
|
24
|
+
(token or password). See `gateway.auth` in [Gateway configuration](/gateway/configuration).
|
|
25
|
+
|
|
26
|
+
Security note: the Control UI is an **admin surface** (chat, config, exec approvals).
|
|
27
|
+
Do not expose it publicly. The UI keeps dashboard URL tokens in sessionStorage
|
|
28
|
+
for the current browser tab session and selected gateway URL, and strips them from the URL after load.
|
|
29
|
+
Prefer localhost, Tailscale Serve, or an SSH tunnel.
|
|
30
|
+
|
|
31
|
+
## Fast path (recommended)
|
|
32
|
+
|
|
33
|
+
- After onboarding, the CLI auto-opens the dashboard and prints a clean (non-tokenized) link.
|
|
34
|
+
- Re-open anytime: `quantumclaw dashboard` (copies link, opens browser if possible, shows SSH hint if headless).
|
|
35
|
+
- If the UI prompts for auth, paste the token from `gateway.auth.token` (or `QUANTUMCLAW_GATEWAY_TOKEN`) into Control UI settings.
|
|
36
|
+
|
|
37
|
+
## Token basics (local vs remote)
|
|
38
|
+
|
|
39
|
+
- **Localhost**: open `http://127.0.0.1:18789/`.
|
|
40
|
+
- **Token source**: `gateway.auth.token` (or `QUANTUMCLAW_GATEWAY_TOKEN`); `quantumclaw dashboard` can pass it via URL fragment for one-time bootstrap, and the Control UI keeps it in sessionStorage for the current browser tab session and selected gateway URL instead of localStorage.
|
|
41
|
+
- If `gateway.auth.token` is SecretRef-managed, `quantumclaw dashboard` prints/copies/opens a non-tokenized URL by design. This avoids exposing externally managed tokens in shell logs, clipboard history, or browser-launch arguments.
|
|
42
|
+
- If `gateway.auth.token` is configured as a SecretRef and is unresolved in your current shell, `quantumclaw dashboard` still prints a non-tokenized URL plus actionable auth setup guidance.
|
|
43
|
+
- **Not localhost**: use Tailscale Serve (tokenless for Control UI/WebSocket if `gateway.auth.allowTailscale: true`, assumes trusted gateway host; HTTP APIs still need token/password), tailnet bind with a token, or an SSH tunnel. See [Web surfaces](/web).
|
|
44
|
+
|
|
45
|
+
## If you see "unauthorized" / 1008
|
|
46
|
+
|
|
47
|
+
- Ensure the gateway is reachable (local: `quantumclaw status`; remote: SSH tunnel `ssh -N -L 18789:127.0.0.1:18789 user@host` then open `http://127.0.0.1:18789/`).
|
|
48
|
+
- For `AUTH_TOKEN_MISMATCH`, clients may do one trusted retry with a cached device token when the gateway returns retry hints. If auth still fails after that retry, resolve token drift manually.
|
|
49
|
+
- For token drift repair steps, follow [Token drift recovery checklist](/cli/devices#token-drift-recovery-checklist).
|
|
50
|
+
- Retrieve or supply the token from the gateway host:
|
|
51
|
+
- Plaintext config: `quantumclaw config get gateway.auth.token`
|
|
52
|
+
- SecretRef-managed config: resolve the external secret provider or export `QUANTUMCLAW_GATEWAY_TOKEN` in this shell, then rerun `quantumclaw dashboard`
|
|
53
|
+
- No token configured: `quantumclaw doctor --generate-gateway-token`
|
|
54
|
+
- In the dashboard settings, paste the token into the auth field, then connect.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Gateway web surfaces: Control UI, bind modes, and security"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to access the Gateway over Tailscale
|
|
5
|
+
- You want the browser Control UI and config editing
|
|
6
|
+
title: "Web"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Web (Gateway)
|
|
10
|
+
|
|
11
|
+
The Gateway serves a small **browser Control UI** (Vite + Lit) from the same port as the Gateway WebSocket:
|
|
12
|
+
|
|
13
|
+
- default: `http://<host>:18789/`
|
|
14
|
+
- optional prefix: set `gateway.controlUi.basePath` (e.g. `/quantumclaw`)
|
|
15
|
+
|
|
16
|
+
Capabilities live in [Control UI](/web/control-ui).
|
|
17
|
+
This page focuses on bind modes, security, and web-facing surfaces.
|
|
18
|
+
|
|
19
|
+
## Webhooks
|
|
20
|
+
|
|
21
|
+
When `hooks.enabled=true`, the Gateway also exposes a small webhook endpoint on the same HTTP server.
|
|
22
|
+
See [Gateway configuration](/gateway/configuration) → `hooks` for auth + payloads.
|
|
23
|
+
|
|
24
|
+
## Config (default-on)
|
|
25
|
+
|
|
26
|
+
The Control UI is **enabled by default** when assets are present (`dist/control-ui`).
|
|
27
|
+
You can control it via config:
|
|
28
|
+
|
|
29
|
+
```json5
|
|
30
|
+
{
|
|
31
|
+
gateway: {
|
|
32
|
+
controlUi: { enabled: true, basePath: "/quantumclaw" }, // basePath optional
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Tailscale access
|
|
38
|
+
|
|
39
|
+
### Integrated Serve (recommended)
|
|
40
|
+
|
|
41
|
+
Keep the Gateway on loopback and let Tailscale Serve proxy it:
|
|
42
|
+
|
|
43
|
+
```json5
|
|
44
|
+
{
|
|
45
|
+
gateway: {
|
|
46
|
+
bind: "loopback",
|
|
47
|
+
tailscale: { mode: "serve" },
|
|
48
|
+
},
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Then start the gateway:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
quantumclaw gateway
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Open:
|
|
59
|
+
|
|
60
|
+
- `https://<magicdns>/` (or your configured `gateway.controlUi.basePath`)
|
|
61
|
+
|
|
62
|
+
### Tailnet bind + token
|
|
63
|
+
|
|
64
|
+
```json5
|
|
65
|
+
{
|
|
66
|
+
gateway: {
|
|
67
|
+
bind: "tailnet",
|
|
68
|
+
controlUi: { enabled: true },
|
|
69
|
+
auth: { mode: "token", token: "your-token" },
|
|
70
|
+
},
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Then start the gateway (token required for non-loopback binds):
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
quantumclaw gateway
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Open:
|
|
81
|
+
|
|
82
|
+
- `http://<tailscale-ip>:18789/` (or your configured `gateway.controlUi.basePath`)
|
|
83
|
+
|
|
84
|
+
### Public internet (Funnel)
|
|
85
|
+
|
|
86
|
+
```json5
|
|
87
|
+
{
|
|
88
|
+
gateway: {
|
|
89
|
+
bind: "loopback",
|
|
90
|
+
tailscale: { mode: "funnel" },
|
|
91
|
+
auth: { mode: "password" }, // or QUANTUMCLAW_GATEWAY_PASSWORD
|
|
92
|
+
},
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Security notes
|
|
97
|
+
|
|
98
|
+
- Gateway auth is required by default (token/password or Tailscale identity headers).
|
|
99
|
+
- Non-loopback binds still **require** a shared token/password (`gateway.auth` or env).
|
|
100
|
+
- The wizard generates a gateway token by default (even on loopback).
|
|
101
|
+
- The UI sends `connect.params.auth.token` or `connect.params.auth.password`.
|
|
102
|
+
- For non-loopback Control UI deployments, set `gateway.controlUi.allowedOrigins`
|
|
103
|
+
explicitly (full origins). Without it, gateway startup is refused by default.
|
|
104
|
+
- `gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=true` enables
|
|
105
|
+
Host-header origin fallback mode, but is a dangerous security downgrade.
|
|
106
|
+
- With Serve, Tailscale identity headers can satisfy Control UI/WebSocket auth
|
|
107
|
+
when `gateway.auth.allowTailscale` is `true` (no token/password required).
|
|
108
|
+
HTTP API endpoints still require token/password. Set
|
|
109
|
+
`gateway.auth.allowTailscale: false` to require explicit credentials. See
|
|
110
|
+
[Tailscale](/gateway/tailscale) and [Security](/gateway/security). This
|
|
111
|
+
tokenless flow assumes the gateway host is trusted.
|
|
112
|
+
- `gateway.tailscale.mode: "funnel"` requires `gateway.auth.mode: "password"` (shared password).
|
|
113
|
+
|
|
114
|
+
## Building the UI
|
|
115
|
+
|
|
116
|
+
The Gateway serves static files from `dist/control-ui`. Build them with:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
pnpm ui:build # auto-installs UI deps on first run
|
|
120
|
+
```
|
package/docs/web/tui.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Terminal UI (TUI): connect to the Gateway from any machine"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want a beginner-friendly walkthrough of the TUI
|
|
5
|
+
- You need the complete list of TUI features, commands, and shortcuts
|
|
6
|
+
title: "TUI"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# TUI (Terminal UI)
|
|
10
|
+
|
|
11
|
+
## Quick start
|
|
12
|
+
|
|
13
|
+
1. Start the Gateway.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
quantumclaw gateway
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
2. Open the TUI.
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
quantumclaw tui
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
3. Type a message and press Enter.
|
|
26
|
+
|
|
27
|
+
Remote Gateway:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
quantumclaw tui --url ws://<host>:<port> --token <gateway-token>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use `--password` if your Gateway uses password auth.
|
|
34
|
+
|
|
35
|
+
## What you see
|
|
36
|
+
|
|
37
|
+
- Header: connection URL, current agent, current session.
|
|
38
|
+
- Chat log: user messages, assistant replies, system notices, tool cards.
|
|
39
|
+
- Status line: connection/run state (connecting, running, streaming, idle, error).
|
|
40
|
+
- Footer: connection state + agent + session + model + think/fast/verbose/reasoning + token counts + deliver.
|
|
41
|
+
- Input: text editor with autocomplete.
|
|
42
|
+
|
|
43
|
+
## Mental model: agents + sessions
|
|
44
|
+
|
|
45
|
+
- Agents are unique slugs (e.g. `main`, `research`). The Gateway exposes the list.
|
|
46
|
+
- Sessions belong to the current agent.
|
|
47
|
+
- Session keys are stored as `agent:<agentId>:<sessionKey>`.
|
|
48
|
+
- If you type `/session main`, the TUI expands it to `agent:<currentAgent>:main`.
|
|
49
|
+
- If you type `/session agent:other:main`, you switch to that agent session explicitly.
|
|
50
|
+
- Session scope:
|
|
51
|
+
- `per-sender` (default): each agent has many sessions.
|
|
52
|
+
- `global`: the TUI always uses the `global` session (the picker may be empty).
|
|
53
|
+
- The current agent + session are always visible in the footer.
|
|
54
|
+
|
|
55
|
+
## Sending + delivery
|
|
56
|
+
|
|
57
|
+
- Messages are sent to the Gateway; delivery to providers is off by default.
|
|
58
|
+
- Turn delivery on:
|
|
59
|
+
- `/deliver on`
|
|
60
|
+
- or the Settings panel
|
|
61
|
+
- or start with `quantumclaw tui --deliver`
|
|
62
|
+
|
|
63
|
+
## Pickers + overlays
|
|
64
|
+
|
|
65
|
+
- Model picker: list available models and set the session override.
|
|
66
|
+
- Agent picker: choose a different agent.
|
|
67
|
+
- Session picker: shows only sessions for the current agent.
|
|
68
|
+
- Settings: toggle deliver, tool output expansion, and thinking visibility.
|
|
69
|
+
|
|
70
|
+
## Keyboard shortcuts
|
|
71
|
+
|
|
72
|
+
- Enter: send message
|
|
73
|
+
- Esc: abort active run
|
|
74
|
+
- Ctrl+C: clear input (press twice to exit)
|
|
75
|
+
- Ctrl+D: exit
|
|
76
|
+
- Ctrl+L: model picker
|
|
77
|
+
- Ctrl+G: agent picker
|
|
78
|
+
- Ctrl+P: session picker
|
|
79
|
+
- Ctrl+O: toggle tool output expansion
|
|
80
|
+
- Ctrl+T: toggle thinking visibility (reloads history)
|
|
81
|
+
|
|
82
|
+
## Slash commands
|
|
83
|
+
|
|
84
|
+
Core:
|
|
85
|
+
|
|
86
|
+
- `/help`
|
|
87
|
+
- `/status`
|
|
88
|
+
- `/agent <id>` (or `/agents`)
|
|
89
|
+
- `/session <key>` (or `/sessions`)
|
|
90
|
+
- `/model <provider/model>` (or `/models`)
|
|
91
|
+
|
|
92
|
+
Session controls:
|
|
93
|
+
|
|
94
|
+
- `/think <off|minimal|low|medium|high>`
|
|
95
|
+
- `/fast <status|on|off>`
|
|
96
|
+
- `/verbose <on|full|off>`
|
|
97
|
+
- `/reasoning <on|off|stream>`
|
|
98
|
+
- `/usage <off|tokens|full>`
|
|
99
|
+
- `/elevated <on|off|ask|full>` (alias: `/elev`)
|
|
100
|
+
- `/activation <mention|always>`
|
|
101
|
+
- `/deliver <on|off>`
|
|
102
|
+
|
|
103
|
+
Session lifecycle:
|
|
104
|
+
|
|
105
|
+
- `/new` or `/reset` (reset the session)
|
|
106
|
+
- `/abort` (abort the active run)
|
|
107
|
+
- `/settings`
|
|
108
|
+
- `/exit`
|
|
109
|
+
|
|
110
|
+
Other Gateway slash commands (for example, `/context`) are forwarded to the Gateway and shown as system output. See [Slash commands](/tools/slash-commands).
|
|
111
|
+
|
|
112
|
+
## Local shell commands
|
|
113
|
+
|
|
114
|
+
- Prefix a line with `!` to run a local shell command on the TUI host.
|
|
115
|
+
- The TUI prompts once per session to allow local execution; declining keeps `!` disabled for the session.
|
|
116
|
+
- Commands run in a fresh, non-interactive shell in the TUI working directory (no persistent `cd`/env).
|
|
117
|
+
- Local shell commands receive `QUANTUMCLAW_SHELL=tui-local` in their environment.
|
|
118
|
+
- A lone `!` is sent as a normal message; leading spaces do not trigger local exec.
|
|
119
|
+
|
|
120
|
+
## Tool output
|
|
121
|
+
|
|
122
|
+
- Tool calls show as cards with args + results.
|
|
123
|
+
- Ctrl+O toggles between collapsed/expanded views.
|
|
124
|
+
- While tools run, partial updates stream into the same card.
|
|
125
|
+
|
|
126
|
+
## Terminal colors
|
|
127
|
+
|
|
128
|
+
- The TUI keeps assistant body text in your terminal's default foreground so dark and light terminals both stay readable.
|
|
129
|
+
- If your terminal uses a light background and auto-detection is wrong, set `QUANTUMCLAW_THEME=light` before launching `quantumclaw tui`.
|
|
130
|
+
- To force the original dark palette instead, set `QUANTUMCLAW_THEME=dark`.
|
|
131
|
+
|
|
132
|
+
## History + streaming
|
|
133
|
+
|
|
134
|
+
- On connect, the TUI loads the latest history (default 200 messages).
|
|
135
|
+
- Streaming responses update in place until finalized.
|
|
136
|
+
- The TUI also listens to agent tool events for richer tool cards.
|
|
137
|
+
|
|
138
|
+
## Connection details
|
|
139
|
+
|
|
140
|
+
- The TUI registers with the Gateway as `mode: "tui"`.
|
|
141
|
+
- Reconnects show a system message; event gaps are surfaced in the log.
|
|
142
|
+
|
|
143
|
+
## Options
|
|
144
|
+
|
|
145
|
+
- `--url <url>`: Gateway WebSocket URL (defaults to config or `ws://127.0.0.1:<port>`)
|
|
146
|
+
- `--token <token>`: Gateway token (if required)
|
|
147
|
+
- `--password <password>`: Gateway password (if required)
|
|
148
|
+
- `--session <key>`: Session key (default: `main`, or `global` when scope is global)
|
|
149
|
+
- `--deliver`: Deliver assistant replies to the provider (default off)
|
|
150
|
+
- `--thinking <level>`: Override thinking level for sends
|
|
151
|
+
- `--timeout-ms <ms>`: Agent timeout in ms (defaults to `agents.defaults.timeoutSeconds`)
|
|
152
|
+
|
|
153
|
+
Note: when you set `--url`, the TUI does not fall back to config or environment credentials.
|
|
154
|
+
Pass `--token` or `--password` explicitly. Missing explicit credentials is an error.
|
|
155
|
+
|
|
156
|
+
## Troubleshooting
|
|
157
|
+
|
|
158
|
+
No output after sending a message:
|
|
159
|
+
|
|
160
|
+
- Run `/status` in the TUI to confirm the Gateway is connected and idle/busy.
|
|
161
|
+
- Check the Gateway logs: `quantumclaw logs --follow`.
|
|
162
|
+
- Confirm the agent can run: `quantumclaw status` and `quantumclaw models status`.
|
|
163
|
+
- If you expect messages in a chat channel, enable delivery (`/deliver on` or `--deliver`).
|
|
164
|
+
- `--history-limit <n>`: History entries to load (default 200)
|
|
165
|
+
|
|
166
|
+
## Connection troubleshooting
|
|
167
|
+
|
|
168
|
+
- `disconnected`: ensure the Gateway is running and your `--url/--token/--password` are correct.
|
|
169
|
+
- No agents in picker: check `quantumclaw agents list` and your routing config.
|
|
170
|
+
- Empty session picker: you might be in global scope or have no sessions yet.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Loopback WebChat static host and Gateway WS usage for chat UI"
|
|
3
|
+
read_when:
|
|
4
|
+
- Debugging or configuring WebChat access
|
|
5
|
+
title: "WebChat"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# WebChat (Gateway WebSocket UI)
|
|
9
|
+
|
|
10
|
+
Status: the macOS/iOS SwiftUI chat UI talks directly to the Gateway WebSocket.
|
|
11
|
+
|
|
12
|
+
## What it is
|
|
13
|
+
|
|
14
|
+
- A native chat UI for the gateway (no embedded browser and no local static server).
|
|
15
|
+
- Uses the same sessions and routing rules as other channels.
|
|
16
|
+
- Deterministic routing: replies always go back to WebChat.
|
|
17
|
+
|
|
18
|
+
## Quick start
|
|
19
|
+
|
|
20
|
+
1. Start the gateway.
|
|
21
|
+
2. Open the WebChat UI (macOS/iOS app) or the Control UI chat tab.
|
|
22
|
+
3. Ensure gateway auth is configured (required by default, even on loopback).
|
|
23
|
+
|
|
24
|
+
## How it works (behavior)
|
|
25
|
+
|
|
26
|
+
- The UI connects to the Gateway WebSocket and uses `chat.history`, `chat.send`, and `chat.inject`.
|
|
27
|
+
- `chat.history` is bounded for stability: Gateway may truncate long text fields, omit heavy metadata, and replace oversized entries with `[chat.history omitted: message too large]`.
|
|
28
|
+
- `chat.inject` appends an assistant note directly to the transcript and broadcasts it to the UI (no agent run).
|
|
29
|
+
- Aborted runs can keep partial assistant output visible in the UI.
|
|
30
|
+
- Gateway persists aborted partial assistant text into transcript history when buffered output exists, and marks those entries with abort metadata.
|
|
31
|
+
- History is always fetched from the gateway (no local file watching).
|
|
32
|
+
- If the gateway is unreachable, WebChat is read-only.
|
|
33
|
+
|
|
34
|
+
## Control UI agents tools panel
|
|
35
|
+
|
|
36
|
+
- The Control UI `/agents` Tools panel fetches a runtime catalog via `tools.catalog` and labels each
|
|
37
|
+
tool as `core` or `plugin:<id>` (plus `optional` for optional plugin tools).
|
|
38
|
+
- If `tools.catalog` is unavailable, the panel falls back to a built-in static list.
|
|
39
|
+
- The panel edits profile and override config, but effective runtime access still follows policy
|
|
40
|
+
precedence (`allow`/`deny`, per-agent and provider/channel overrides).
|
|
41
|
+
|
|
42
|
+
## Remote use
|
|
43
|
+
|
|
44
|
+
- Remote mode tunnels the gateway WebSocket over SSH/Tailscale.
|
|
45
|
+
- You do not need to run a separate WebChat server.
|
|
46
|
+
|
|
47
|
+
## Configuration reference (WebChat)
|
|
48
|
+
|
|
49
|
+
Full configuration: [Configuration](/gateway/configuration)
|
|
50
|
+
|
|
51
|
+
Channel options:
|
|
52
|
+
|
|
53
|
+
- No dedicated `webchat.*` block. WebChat uses the gateway endpoint + auth settings below.
|
|
54
|
+
|
|
55
|
+
Related global options:
|
|
56
|
+
|
|
57
|
+
- `gateway.port`, `gateway.bind`: WebSocket host/port.
|
|
58
|
+
- `gateway.auth.mode`, `gateway.auth.token`, `gateway.auth.password`: WebSocket auth (token/password).
|
|
59
|
+
- `gateway.auth.mode: "trusted-proxy"`: reverse-proxy auth for browser clients (see [Trusted Proxy Auth](/gateway/trusted-proxy-auth)).
|
|
60
|
+
- `gateway.remote.url`, `gateway.remote.token`, `gateway.remote.password`: remote gateway target.
|
|
61
|
+
- `session.*`: session storage and main key defaults.
|
|
Binary file
|
|
Binary file
|