@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,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Android app (node): connection runbook + Connect/Chat/Voice/Canvas command surface"
|
|
3
|
+
read_when:
|
|
4
|
+
- Pairing or reconnecting the Android node
|
|
5
|
+
- Debugging Android gateway discovery or auth
|
|
6
|
+
- Verifying chat history parity across clients
|
|
7
|
+
title: "Android App"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Android App (Node)
|
|
11
|
+
|
|
12
|
+
> **Note:** The Android app has not been publicly released yet. The source code is available in the [QuantumClaw repository](https://github.com/quantumclaw/quantumclaw) under `apps/android`. You can build it yourself using Java 17 and the Android SDK (`./gradlew :app:assemblePlayDebug`). See [apps/android/README.md](https://github.com/quantumclaw/quantumclaw/blob/main/apps/android/README.md) for build instructions.
|
|
13
|
+
|
|
14
|
+
## Support snapshot
|
|
15
|
+
|
|
16
|
+
- Role: companion node app (Android does not host the Gateway).
|
|
17
|
+
- Gateway required: yes (run it on macOS, Linux, or Windows via WSL2).
|
|
18
|
+
- Install: [Getting Started](/start/getting-started) + [Pairing](/channels/pairing).
|
|
19
|
+
- Gateway: [Runbook](/gateway) + [Configuration](/gateway/configuration).
|
|
20
|
+
- Protocols: [Gateway protocol](/gateway/protocol) (nodes + control plane).
|
|
21
|
+
|
|
22
|
+
## System control
|
|
23
|
+
|
|
24
|
+
System control (launchd/systemd) lives on the Gateway host. See [Gateway](/gateway).
|
|
25
|
+
|
|
26
|
+
## Connection Runbook
|
|
27
|
+
|
|
28
|
+
Android node app ⇄ (mDNS/NSD + WebSocket) ⇄ **Gateway**
|
|
29
|
+
|
|
30
|
+
Android connects directly to the Gateway WebSocket (default `ws://<host>:18789`) and uses device pairing (`role: node`).
|
|
31
|
+
|
|
32
|
+
### Prerequisites
|
|
33
|
+
|
|
34
|
+
- You can run the Gateway on the “master” machine.
|
|
35
|
+
- Android device/emulator can reach the gateway WebSocket:
|
|
36
|
+
- Same LAN with mDNS/NSD, **or**
|
|
37
|
+
- Same Tailscale tailnet using Wide-Area Bonjour / unicast DNS-SD (see below), **or**
|
|
38
|
+
- Manual gateway host/port (fallback)
|
|
39
|
+
- You can run the CLI (`quantumclaw`) on the gateway machine (or via SSH).
|
|
40
|
+
|
|
41
|
+
### 1) Start the Gateway
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
quantumclaw gateway --port 18789 --verbose
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Confirm in logs you see something like:
|
|
48
|
+
|
|
49
|
+
- `listening on ws://0.0.0.0:18789`
|
|
50
|
+
|
|
51
|
+
For tailnet-only setups (recommended for Vienna ⇄ London), bind the gateway to the tailnet IP:
|
|
52
|
+
|
|
53
|
+
- Set `gateway.bind: "tailnet"` in `~/.quantumclaw/quantumclaw.json` on the gateway host.
|
|
54
|
+
- Restart the Gateway / macOS menubar app.
|
|
55
|
+
|
|
56
|
+
### 2) Verify discovery (optional)
|
|
57
|
+
|
|
58
|
+
From the gateway machine:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
dns-sd -B _quantumclaw-gw._tcp local.
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
More debugging notes: [Bonjour](/gateway/bonjour).
|
|
65
|
+
|
|
66
|
+
#### Tailnet (Vienna ⇄ London) discovery via unicast DNS-SD
|
|
67
|
+
|
|
68
|
+
Android NSD/mDNS discovery won’t cross networks. If your Android node and the gateway are on different networks but connected via Tailscale, use Wide-Area Bonjour / unicast DNS-SD instead:
|
|
69
|
+
|
|
70
|
+
1. Set up a DNS-SD zone (example `quantumclaw.internal.`) on the gateway host and publish `_quantumclaw-gw._tcp` records.
|
|
71
|
+
2. Configure Tailscale split DNS for your chosen domain pointing at that DNS server.
|
|
72
|
+
|
|
73
|
+
Details and example CoreDNS config: [Bonjour](/gateway/bonjour).
|
|
74
|
+
|
|
75
|
+
### 3) Connect from Android
|
|
76
|
+
|
|
77
|
+
In the Android app:
|
|
78
|
+
|
|
79
|
+
- The app keeps its gateway connection alive via a **foreground service** (persistent notification).
|
|
80
|
+
- Open the **Connect** tab.
|
|
81
|
+
- Use **Setup Code** or **Manual** mode.
|
|
82
|
+
- If discovery is blocked, use manual host/port (and TLS/token/password when required) in **Advanced controls**.
|
|
83
|
+
|
|
84
|
+
After the first successful pairing, Android auto-reconnects on launch:
|
|
85
|
+
|
|
86
|
+
- Manual endpoint (if enabled), otherwise
|
|
87
|
+
- The last discovered gateway (best-effort).
|
|
88
|
+
|
|
89
|
+
### 4) Approve pairing (CLI)
|
|
90
|
+
|
|
91
|
+
On the gateway machine:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
quantumclaw devices list
|
|
95
|
+
quantumclaw devices approve <requestId>
|
|
96
|
+
quantumclaw devices reject <requestId>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Pairing details: [Pairing](/channels/pairing).
|
|
100
|
+
|
|
101
|
+
### 5) Verify the node is connected
|
|
102
|
+
|
|
103
|
+
- Via nodes status:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
quantumclaw nodes status
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
- Via Gateway:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
quantumclaw gateway call node.list --params "{}"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 6) Chat + history
|
|
116
|
+
|
|
117
|
+
The Android Chat tab supports session selection (default `main`, plus other existing sessions):
|
|
118
|
+
|
|
119
|
+
- History: `chat.history`
|
|
120
|
+
- Send: `chat.send`
|
|
121
|
+
- Push updates (best-effort): `chat.subscribe` → `event:"chat"`
|
|
122
|
+
|
|
123
|
+
### 7) Canvas + camera
|
|
124
|
+
|
|
125
|
+
#### Gateway Canvas Host (recommended for web content)
|
|
126
|
+
|
|
127
|
+
If you want the node to show real HTML/CSS/JS that the agent can edit on disk, point the node at the Gateway canvas host.
|
|
128
|
+
|
|
129
|
+
Note: nodes load canvas from the Gateway HTTP server (same port as `gateway.port`, default `18789`).
|
|
130
|
+
|
|
131
|
+
1. Create `~/.quantumclaw/workspace/canvas/index.html` on the gateway host.
|
|
132
|
+
|
|
133
|
+
2. Navigate the node to it (LAN):
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
quantumclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__quantumclaw__/canvas/"}'
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Tailnet (optional): if both devices are on Tailscale, use a MagicDNS name or tailnet IP instead of `.local`, e.g. `http://<gateway-magicdns>:18789/__quantumclaw__/canvas/`.
|
|
140
|
+
|
|
141
|
+
This server injects a live-reload client into HTML and reloads on file changes.
|
|
142
|
+
The A2UI host lives at `http://<gateway-host>:18789/__quantumclaw__/a2ui/`.
|
|
143
|
+
|
|
144
|
+
Canvas commands (foreground only):
|
|
145
|
+
|
|
146
|
+
- `canvas.eval`, `canvas.snapshot`, `canvas.navigate` (use `{"url":""}` or `{"url":"/"}` to return to the default scaffold). `canvas.snapshot` returns `{ format, base64 }` (default `format="jpeg"`).
|
|
147
|
+
- A2UI: `canvas.a2ui.push`, `canvas.a2ui.reset` (`canvas.a2ui.pushJSONL` legacy alias)
|
|
148
|
+
|
|
149
|
+
Camera commands (foreground only; permission-gated):
|
|
150
|
+
|
|
151
|
+
- `camera.snap` (jpg)
|
|
152
|
+
- `camera.clip` (mp4)
|
|
153
|
+
|
|
154
|
+
See [Camera node](/nodes/camera) for parameters and CLI helpers.
|
|
155
|
+
|
|
156
|
+
### 8) Voice + expanded Android command surface
|
|
157
|
+
|
|
158
|
+
- Voice: Android uses a single mic on/off flow in the Voice tab with transcript capture and TTS playback (ElevenLabs when configured, system TTS fallback). Voice stops when the app leaves the foreground.
|
|
159
|
+
- Voice wake/talk-mode toggles are currently removed from Android UX/runtime.
|
|
160
|
+
- Additional Android command families (availability depends on device + permissions):
|
|
161
|
+
- `device.status`, `device.info`, `device.permissions`, `device.health`
|
|
162
|
+
- `notifications.list`, `notifications.actions`
|
|
163
|
+
- `photos.latest`
|
|
164
|
+
- `contacts.search`, `contacts.add`
|
|
165
|
+
- `calendar.events`, `calendar.add`
|
|
166
|
+
- `callLog.search`
|
|
167
|
+
- `sms.search`
|
|
168
|
+
- `motion.activity`, `motion.pedometer`
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "QuantumClaw on DigitalOcean (simple paid VPS option)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up QuantumClaw on DigitalOcean
|
|
5
|
+
- Looking for cheap VPS hosting for QuantumClaw
|
|
6
|
+
title: "DigitalOcean"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# QuantumClaw on DigitalOcean
|
|
10
|
+
|
|
11
|
+
## Goal
|
|
12
|
+
|
|
13
|
+
Run a persistent QuantumClaw Gateway on DigitalOcean for **$6/month** (or $4/mo with reserved pricing).
|
|
14
|
+
|
|
15
|
+
If you want a $0/month option and don’t mind ARM + provider-specific setup, see the [Oracle Cloud guide](/platforms/oracle).
|
|
16
|
+
|
|
17
|
+
## Cost Comparison (2026)
|
|
18
|
+
|
|
19
|
+
| Provider | Plan | Specs | Price/mo | Notes |
|
|
20
|
+
| ------------ | --------------- | ---------------------- | ----------- | ------------------------------------- |
|
|
21
|
+
| Oracle Cloud | Always Free ARM | up to 4 OCPU, 24GB RAM | $0 | ARM, limited capacity / signup quirks |
|
|
22
|
+
| Hetzner | CX22 | 2 vCPU, 4GB RAM | €3.79 (~$4) | Cheapest paid option |
|
|
23
|
+
| DigitalOcean | Basic | 1 vCPU, 1GB RAM | $6 | Easy UI, good docs |
|
|
24
|
+
| Vultr | Cloud Compute | 1 vCPU, 1GB RAM | $6 | Many locations |
|
|
25
|
+
| Linode | Nanode | 1 vCPU, 1GB RAM | $5 | Now part of Akamai |
|
|
26
|
+
|
|
27
|
+
**Picking a provider:**
|
|
28
|
+
|
|
29
|
+
- DigitalOcean: simplest UX + predictable setup (this guide)
|
|
30
|
+
- Hetzner: good price/perf (see [Hetzner guide](/install/hetzner))
|
|
31
|
+
- Oracle Cloud: can be $0/month, but is more finicky and ARM-only (see [Oracle guide](/platforms/oracle))
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Prerequisites
|
|
36
|
+
|
|
37
|
+
- DigitalOcean account ([signup with $200 free credit](https://m.do.co/c/signup))
|
|
38
|
+
- SSH key pair (or willingness to use password auth)
|
|
39
|
+
- ~20 minutes
|
|
40
|
+
|
|
41
|
+
## 1) Create a Droplet
|
|
42
|
+
|
|
43
|
+
<Warning>
|
|
44
|
+
Use a clean base image (Ubuntu 24.04 LTS). Avoid third-party Marketplace 1-click images unless you have reviewed their startup scripts and firewall defaults.
|
|
45
|
+
</Warning>
|
|
46
|
+
|
|
47
|
+
1. Log into [DigitalOcean](https://cloud.digitalocean.com/)
|
|
48
|
+
2. Click **Create → Droplets**
|
|
49
|
+
3. Choose:
|
|
50
|
+
- **Region:** Closest to you (or your users)
|
|
51
|
+
- **Image:** Ubuntu 24.04 LTS
|
|
52
|
+
- **Size:** Basic → Regular → **$6/mo** (1 vCPU, 1GB RAM, 25GB SSD)
|
|
53
|
+
- **Authentication:** SSH key (recommended) or password
|
|
54
|
+
4. Click **Create Droplet**
|
|
55
|
+
5. Note the IP address
|
|
56
|
+
|
|
57
|
+
## 2) Connect via SSH
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
ssh root@YOUR_DROPLET_IP
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 3) Install QuantumClaw
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Update system
|
|
67
|
+
apt update && apt upgrade -y
|
|
68
|
+
|
|
69
|
+
# Install Node.js 24
|
|
70
|
+
curl -fsSL https://deb.nodesource.com/setup_24.x | bash -
|
|
71
|
+
apt install -y nodejs
|
|
72
|
+
|
|
73
|
+
# Install QuantumClaw
|
|
74
|
+
curl -fsSL https://quantumclaw.ai/install.sh | bash
|
|
75
|
+
|
|
76
|
+
# Verify
|
|
77
|
+
quantumclaw --version
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 4) Run Onboarding
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
quantumclaw onboard --install-daemon
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The wizard will walk you through:
|
|
87
|
+
|
|
88
|
+
- Model auth (API keys or OAuth)
|
|
89
|
+
- Channel setup (Telegram, WhatsApp, Discord, etc.)
|
|
90
|
+
- Gateway token (auto-generated)
|
|
91
|
+
- Daemon installation (systemd)
|
|
92
|
+
|
|
93
|
+
## 5) Verify the Gateway
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Check status
|
|
97
|
+
quantumclaw status
|
|
98
|
+
|
|
99
|
+
# Check service
|
|
100
|
+
systemctl --user status quantumclaw-gateway.service
|
|
101
|
+
|
|
102
|
+
# View logs
|
|
103
|
+
journalctl --user -u quantumclaw-gateway.service -f
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 6) Access the Dashboard
|
|
107
|
+
|
|
108
|
+
The gateway binds to loopback by default. To access the Control UI:
|
|
109
|
+
|
|
110
|
+
**Option A: SSH Tunnel (recommended)**
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# From your local machine
|
|
114
|
+
ssh -L 18789:localhost:18789 root@YOUR_DROPLET_IP
|
|
115
|
+
|
|
116
|
+
# Then open: http://localhost:18789
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Option B: Tailscale Serve (HTTPS, loopback-only)**
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# On the droplet
|
|
123
|
+
curl -fsSL https://tailscale.com/install.sh | sh
|
|
124
|
+
tailscale up
|
|
125
|
+
|
|
126
|
+
# Configure Gateway to use Tailscale Serve
|
|
127
|
+
quantumclaw config set gateway.tailscale.mode serve
|
|
128
|
+
quantumclaw gateway restart
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Open: `https://<magicdns>/`
|
|
132
|
+
|
|
133
|
+
Notes:
|
|
134
|
+
|
|
135
|
+
- Serve keeps the Gateway loopback-only and authenticates Control UI/WebSocket traffic via Tailscale identity headers (tokenless auth assumes trusted gateway host; HTTP APIs still require token/password).
|
|
136
|
+
- To require token/password instead, set `gateway.auth.allowTailscale: false` or use `gateway.auth.mode: "password"`.
|
|
137
|
+
|
|
138
|
+
**Option C: Tailnet bind (no Serve)**
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
quantumclaw config set gateway.bind tailnet
|
|
142
|
+
quantumclaw gateway restart
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Open: `http://<tailscale-ip>:18789` (token required).
|
|
146
|
+
|
|
147
|
+
## 7) Connect Your Channels
|
|
148
|
+
|
|
149
|
+
### Telegram
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
quantumclaw pairing list telegram
|
|
153
|
+
quantumclaw pairing approve telegram <CODE>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### WhatsApp
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
quantumclaw channels login whatsapp
|
|
160
|
+
# Scan QR code
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
See [Channels](/channels) for other providers.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Optimizations for 1GB RAM
|
|
168
|
+
|
|
169
|
+
The $6 droplet only has 1GB RAM. To keep things running smoothly:
|
|
170
|
+
|
|
171
|
+
### Add swap (recommended)
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
fallocate -l 2G /swapfile
|
|
175
|
+
chmod 600 /swapfile
|
|
176
|
+
mkswap /swapfile
|
|
177
|
+
swapon /swapfile
|
|
178
|
+
echo '/swapfile none swap sw 0 0' >> /etc/fstab
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Use a lighter model
|
|
182
|
+
|
|
183
|
+
If you're hitting OOMs, consider:
|
|
184
|
+
|
|
185
|
+
- Using API-based models (Claude, GPT) instead of local models
|
|
186
|
+
- Setting `agents.defaults.model.primary` to a smaller model
|
|
187
|
+
|
|
188
|
+
### Monitor memory
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
free -h
|
|
192
|
+
htop
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Persistence
|
|
198
|
+
|
|
199
|
+
All state lives in:
|
|
200
|
+
|
|
201
|
+
- `~/.quantumclaw/` — config, credentials, session data
|
|
202
|
+
- `~/.quantumclaw/workspace/` — workspace (SOUL.md, memory, etc.)
|
|
203
|
+
|
|
204
|
+
These survive reboots. Back them up periodically:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
tar -czvf quantumclaw-backup.tar.gz ~/.quantumclaw ~/.quantumclaw/workspace
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Oracle Cloud Free Alternative
|
|
213
|
+
|
|
214
|
+
Oracle Cloud offers **Always Free** ARM instances that are significantly more powerful than any paid option here — for $0/month.
|
|
215
|
+
|
|
216
|
+
| What you get | Specs |
|
|
217
|
+
| ----------------- | ---------------------- |
|
|
218
|
+
| **4 OCPUs** | ARM Ampere A1 |
|
|
219
|
+
| **24GB RAM** | More than enough |
|
|
220
|
+
| **200GB storage** | Block volume |
|
|
221
|
+
| **Forever free** | No credit card charges |
|
|
222
|
+
|
|
223
|
+
**Caveats:**
|
|
224
|
+
|
|
225
|
+
- Signup can be finicky (retry if it fails)
|
|
226
|
+
- ARM architecture — most things work, but some binaries need ARM builds
|
|
227
|
+
|
|
228
|
+
For the full setup guide, see [Oracle Cloud](/platforms/oracle). For signup tips and troubleshooting the enrollment process, see this [community guide](https://gist.github.com/rssnyder/51e3cfedd730e7dd5f4a816143b25dbd).
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Troubleshooting
|
|
233
|
+
|
|
234
|
+
### Gateway will not start
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
quantumclaw gateway status
|
|
238
|
+
quantumclaw doctor --non-interactive
|
|
239
|
+
journalctl -u quantumclaw --no-pager -n 50
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Port already in use
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
lsof -i :18789
|
|
246
|
+
kill <PID>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Out of memory
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# Check memory
|
|
253
|
+
free -h
|
|
254
|
+
|
|
255
|
+
# Add more swap
|
|
256
|
+
# Or upgrade to $12/mo droplet (2GB RAM)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## See Also
|
|
262
|
+
|
|
263
|
+
- [Hetzner guide](/install/hetzner) — cheaper, more powerful
|
|
264
|
+
- [Docker install](/install/docker) — containerized setup
|
|
265
|
+
- [Tailscale](/gateway/tailscale) — secure remote access
|
|
266
|
+
- [Configuration](/gateway/configuration) — full config reference
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Platform support overview (Gateway + companion apps)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Looking for OS support or install paths
|
|
5
|
+
- Deciding where to run the Gateway
|
|
6
|
+
title: "Platforms"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Platforms
|
|
10
|
+
|
|
11
|
+
QuantumClaw core is written in TypeScript. **Node is the recommended runtime**.
|
|
12
|
+
Bun is not recommended for the Gateway (WhatsApp/Telegram bugs).
|
|
13
|
+
|
|
14
|
+
Companion apps exist for macOS (menu bar app) and mobile nodes (iOS/Android). Windows and
|
|
15
|
+
Linux companion apps are planned, but the Gateway is fully supported today.
|
|
16
|
+
Native companion apps for Windows are also planned; the Gateway is recommended via WSL2.
|
|
17
|
+
|
|
18
|
+
## Choose your OS
|
|
19
|
+
|
|
20
|
+
- macOS: [macOS](/platforms/macos)
|
|
21
|
+
- iOS: [iOS](/platforms/ios)
|
|
22
|
+
- Android: [Android](/platforms/android)
|
|
23
|
+
- Windows: [Windows](/platforms/windows)
|
|
24
|
+
- Linux: [Linux](/platforms/linux)
|
|
25
|
+
|
|
26
|
+
## VPS & hosting
|
|
27
|
+
|
|
28
|
+
- VPS hub: [VPS hosting](/vps)
|
|
29
|
+
- Fly.io: [Fly.io](/install/fly)
|
|
30
|
+
- Hetzner (Docker): [Hetzner](/install/hetzner)
|
|
31
|
+
- GCP (Compute Engine): [GCP](/install/gcp)
|
|
32
|
+
- Azure (Linux VM): [Azure](/install/azure)
|
|
33
|
+
- exe.dev (VM + HTTPS proxy): [exe.dev](/install/exe-dev)
|
|
34
|
+
|
|
35
|
+
## Common links
|
|
36
|
+
|
|
37
|
+
- Install guide: [Getting Started](/start/getting-started)
|
|
38
|
+
- Gateway runbook: [Gateway](/gateway)
|
|
39
|
+
- Gateway configuration: [Configuration](/gateway/configuration)
|
|
40
|
+
- Service status: `quantumclaw gateway status`
|
|
41
|
+
|
|
42
|
+
## Gateway service install (CLI)
|
|
43
|
+
|
|
44
|
+
Use one of these (all supported):
|
|
45
|
+
|
|
46
|
+
- Wizard (recommended): `quantumclaw onboard --install-daemon`
|
|
47
|
+
- Direct: `quantumclaw gateway install`
|
|
48
|
+
- Configure flow: `quantumclaw configure` → select **Gateway service**
|
|
49
|
+
- Repair/migrate: `quantumclaw doctor` (offers to install or fix the service)
|
|
50
|
+
|
|
51
|
+
The service target depends on OS:
|
|
52
|
+
|
|
53
|
+
- macOS: LaunchAgent (`ai.quantumclaw.gateway` or `ai.quantumclaw.<profile>`; legacy `com.quantumclaw.*`)
|
|
54
|
+
- Linux/WSL2: systemd user service (`quantumclaw-gateway[-<profile>].service`)
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "iOS node app: connect to the Gateway, pairing, canvas, and troubleshooting"
|
|
3
|
+
read_when:
|
|
4
|
+
- Pairing or reconnecting the iOS node
|
|
5
|
+
- Running the iOS app from source
|
|
6
|
+
- Debugging gateway discovery or canvas commands
|
|
7
|
+
title: "iOS App"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# iOS App (Node)
|
|
11
|
+
|
|
12
|
+
Availability: internal preview. The iOS app is not publicly distributed yet.
|
|
13
|
+
|
|
14
|
+
## What it does
|
|
15
|
+
|
|
16
|
+
- Connects to a Gateway over WebSocket (LAN or tailnet).
|
|
17
|
+
- Exposes node capabilities: Canvas, Screen snapshot, Camera capture, Location, Talk mode, Voice wake.
|
|
18
|
+
- Receives `node.invoke` commands and reports node status events.
|
|
19
|
+
|
|
20
|
+
## Requirements
|
|
21
|
+
|
|
22
|
+
- Gateway running on another device (macOS, Linux, or Windows via WSL2).
|
|
23
|
+
- Network path:
|
|
24
|
+
- Same LAN via Bonjour, **or**
|
|
25
|
+
- Tailnet via unicast DNS-SD (example domain: `quantumclaw.internal.`), **or**
|
|
26
|
+
- Manual host/port (fallback).
|
|
27
|
+
|
|
28
|
+
## Quick start (pair + connect)
|
|
29
|
+
|
|
30
|
+
1. Start the Gateway:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
quantumclaw gateway --port 18789
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
2. In the iOS app, open Settings and pick a discovered gateway (or enable Manual Host and enter host/port).
|
|
37
|
+
|
|
38
|
+
3. Approve the pairing request on the gateway host:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
quantumclaw devices list
|
|
42
|
+
quantumclaw devices approve <requestId>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
If the app retries pairing with changed auth details (role/scopes/public key),
|
|
46
|
+
the previous pending request is superseded and a new `requestId` is created.
|
|
47
|
+
Run `quantumclaw devices list` again before approval.
|
|
48
|
+
|
|
49
|
+
4. Verify connection:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
quantumclaw nodes status
|
|
53
|
+
quantumclaw gateway call node.list --params "{}"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Relay-backed push for official builds
|
|
57
|
+
|
|
58
|
+
Official distributed iOS builds use the external push relay instead of publishing the raw APNs
|
|
59
|
+
token to the gateway.
|
|
60
|
+
|
|
61
|
+
Gateway-side requirement:
|
|
62
|
+
|
|
63
|
+
```json5
|
|
64
|
+
{
|
|
65
|
+
gateway: {
|
|
66
|
+
push: {
|
|
67
|
+
apns: {
|
|
68
|
+
relay: {
|
|
69
|
+
baseUrl: "https://relay.example.com",
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
How the flow works:
|
|
78
|
+
|
|
79
|
+
- The iOS app registers with the relay using App Attest and the app receipt.
|
|
80
|
+
- The relay returns an opaque relay handle plus a registration-scoped send grant.
|
|
81
|
+
- The iOS app fetches the paired gateway identity and includes it in relay registration, so the relay-backed registration is delegated to that specific gateway.
|
|
82
|
+
- The app forwards that relay-backed registration to the paired gateway with `push.apns.register`.
|
|
83
|
+
- The gateway uses that stored relay handle for `push.test`, background wakes, and wake nudges.
|
|
84
|
+
- The gateway relay base URL must match the relay URL baked into the official/TestFlight iOS build.
|
|
85
|
+
- If the app later connects to a different gateway or a build with a different relay base URL, it refreshes the relay registration instead of reusing the old binding.
|
|
86
|
+
|
|
87
|
+
What the gateway does **not** need for this path:
|
|
88
|
+
|
|
89
|
+
- No deployment-wide relay token.
|
|
90
|
+
- No direct APNs key for official/TestFlight relay-backed sends.
|
|
91
|
+
|
|
92
|
+
Expected operator flow:
|
|
93
|
+
|
|
94
|
+
1. Install the official/TestFlight iOS build.
|
|
95
|
+
2. Set `gateway.push.apns.relay.baseUrl` on the gateway.
|
|
96
|
+
3. Pair the app to the gateway and let it finish connecting.
|
|
97
|
+
4. The app publishes `push.apns.register` automatically after it has an APNs token, the operator session is connected, and relay registration succeeds.
|
|
98
|
+
5. After that, `push.test`, reconnect wakes, and wake nudges can use the stored relay-backed registration.
|
|
99
|
+
|
|
100
|
+
Compatibility note:
|
|
101
|
+
|
|
102
|
+
- `QUANTUMCLAW_APNS_RELAY_BASE_URL` still works as a temporary env override for the gateway.
|
|
103
|
+
|
|
104
|
+
## Authentication and trust flow
|
|
105
|
+
|
|
106
|
+
The relay exists to enforce two constraints that direct APNs-on-gateway cannot provide for
|
|
107
|
+
official iOS builds:
|
|
108
|
+
|
|
109
|
+
- Only genuine QuantumClaw iOS builds distributed through Apple can use the hosted relay.
|
|
110
|
+
- A gateway can send relay-backed pushes only for iOS devices that paired with that specific
|
|
111
|
+
gateway.
|
|
112
|
+
|
|
113
|
+
Hop by hop:
|
|
114
|
+
|
|
115
|
+
1. `iOS app -> gateway`
|
|
116
|
+
- The app first pairs with the gateway through the normal Gateway auth flow.
|
|
117
|
+
- That gives the app an authenticated node session plus an authenticated operator session.
|
|
118
|
+
- The operator session is used to call `gateway.identity.get`.
|
|
119
|
+
|
|
120
|
+
2. `iOS app -> relay`
|
|
121
|
+
- The app calls the relay registration endpoints over HTTPS.
|
|
122
|
+
- Registration includes App Attest proof plus the app receipt.
|
|
123
|
+
- The relay validates the bundle ID, App Attest proof, and Apple receipt, and requires the
|
|
124
|
+
official/production distribution path.
|
|
125
|
+
- This is what blocks local Xcode/dev builds from using the hosted relay. A local build may be
|
|
126
|
+
signed, but it does not satisfy the official Apple distribution proof the relay expects.
|
|
127
|
+
|
|
128
|
+
3. `gateway identity delegation`
|
|
129
|
+
- Before relay registration, the app fetches the paired gateway identity from
|
|
130
|
+
`gateway.identity.get`.
|
|
131
|
+
- The app includes that gateway identity in the relay registration payload.
|
|
132
|
+
- The relay returns a relay handle and a registration-scoped send grant that are delegated to
|
|
133
|
+
that gateway identity.
|
|
134
|
+
|
|
135
|
+
4. `gateway -> relay`
|
|
136
|
+
- The gateway stores the relay handle and send grant from `push.apns.register`.
|
|
137
|
+
- On `push.test`, reconnect wakes, and wake nudges, the gateway signs the send request with its
|
|
138
|
+
own device identity.
|
|
139
|
+
- The relay verifies both the stored send grant and the gateway signature against the delegated
|
|
140
|
+
gateway identity from registration.
|
|
141
|
+
- Another gateway cannot reuse that stored registration, even if it somehow obtains the handle.
|
|
142
|
+
|
|
143
|
+
5. `relay -> APNs`
|
|
144
|
+
- The relay owns the production APNs credentials and the raw APNs token for the official build.
|
|
145
|
+
- The gateway never stores the raw APNs token for relay-backed official builds.
|
|
146
|
+
- The relay sends the final push to APNs on behalf of the paired gateway.
|
|
147
|
+
|
|
148
|
+
Why this design was created:
|
|
149
|
+
|
|
150
|
+
- To keep production APNs credentials out of user gateways.
|
|
151
|
+
- To avoid storing raw official-build APNs tokens on the gateway.
|
|
152
|
+
- To allow hosted relay usage only for official/TestFlight QuantumClaw builds.
|
|
153
|
+
- To prevent one gateway from sending wake pushes to iOS devices owned by a different gateway.
|
|
154
|
+
|
|
155
|
+
Local/manual builds remain on direct APNs. If you are testing those builds without the relay, the
|
|
156
|
+
gateway still needs direct APNs credentials:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
export QUANTUMCLAW_APNS_TEAM_ID="TEAMID"
|
|
160
|
+
export QUANTUMCLAW_APNS_KEY_ID="KEYID"
|
|
161
|
+
export QUANTUMCLAW_APNS_PRIVATE_KEY_P8="$(cat /path/to/AuthKey_KEYID.p8)"
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Discovery paths
|
|
165
|
+
|
|
166
|
+
### Bonjour (LAN)
|
|
167
|
+
|
|
168
|
+
The Gateway advertises `_quantumclaw-gw._tcp` on `local.`. The iOS app lists these automatically.
|
|
169
|
+
|
|
170
|
+
### Tailnet (cross-network)
|
|
171
|
+
|
|
172
|
+
If mDNS is blocked, use a unicast DNS-SD zone (choose a domain; example: `quantumclaw.internal.`) and Tailscale split DNS.
|
|
173
|
+
See [Bonjour](/gateway/bonjour) for the CoreDNS example.
|
|
174
|
+
|
|
175
|
+
### Manual host/port
|
|
176
|
+
|
|
177
|
+
In Settings, enable **Manual Host** and enter the gateway host + port (default `18789`).
|
|
178
|
+
|
|
179
|
+
## Canvas + A2UI
|
|
180
|
+
|
|
181
|
+
The iOS node renders a WKWebView canvas. Use `node.invoke` to drive it:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
quantumclaw nodes invoke --node "iOS Node" --command canvas.navigate --params '{"url":"http://<gateway-host>:18789/__quantumclaw__/canvas/"}'
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Notes:
|
|
188
|
+
|
|
189
|
+
- The Gateway canvas host serves `/__quantumclaw__/canvas/` and `/__quantumclaw__/a2ui/`.
|
|
190
|
+
- It is served from the Gateway HTTP server (same port as `gateway.port`, default `18789`).
|
|
191
|
+
- The iOS node auto-navigates to A2UI on connect when a canvas host URL is advertised.
|
|
192
|
+
- Return to the built-in scaffold with `canvas.navigate` and `{"url":""}`.
|
|
193
|
+
|
|
194
|
+
### Canvas eval / snapshot
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
quantumclaw nodes invoke --node "iOS Node" --command canvas.eval --params '{"javaScript":"(() => { const {ctx} = window.__quantumclaw; ctx.clearRect(0,0,innerWidth,innerHeight); ctx.lineWidth=6; ctx.strokeStyle=\"#ff2d55\"; ctx.beginPath(); ctx.moveTo(40,40); ctx.lineTo(innerWidth-40, innerHeight-40); ctx.stroke(); return \"ok\"; })()"}'
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
quantumclaw nodes invoke --node "iOS Node" --command canvas.snapshot --params '{"maxWidth":900,"format":"jpeg"}'
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Voice wake + talk mode
|
|
205
|
+
|
|
206
|
+
- Voice wake and talk mode are available in Settings.
|
|
207
|
+
- iOS may suspend background audio; treat voice features as best-effort when the app is not active.
|
|
208
|
+
|
|
209
|
+
## Common errors
|
|
210
|
+
|
|
211
|
+
- `NODE_BACKGROUND_UNAVAILABLE`: bring the iOS app to the foreground (canvas/camera/screen commands require it).
|
|
212
|
+
- `A2UI_HOST_NOT_CONFIGURED`: the Gateway did not advertise a canvas host URL; check `canvasHost` in [Gateway configuration](/gateway/configuration).
|
|
213
|
+
- Pairing prompt never appears: run `quantumclaw devices list` and approve manually.
|
|
214
|
+
- Reconnect fails after reinstall: the Keychain pairing token was cleared; re-pair the node.
|
|
215
|
+
|
|
216
|
+
## Related docs
|
|
217
|
+
|
|
218
|
+
- [Pairing](/channels/pairing)
|
|
219
|
+
- [Discovery](/gateway/discovery)
|
|
220
|
+
- [Bonjour](/gateway/bonjour)
|