@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,393 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Nodes: pairing, capabilities, permissions, and CLI helpers for canvas/camera/screen/device/notifications/system"
|
|
3
|
+
read_when:
|
|
4
|
+
- Pairing iOS/Android nodes to a gateway
|
|
5
|
+
- Using node canvas/camera for agent context
|
|
6
|
+
- Adding new node commands or CLI helpers
|
|
7
|
+
title: "Nodes"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Nodes
|
|
11
|
+
|
|
12
|
+
A **node** is a companion device (macOS/iOS/Android/headless) that connects to the Gateway **WebSocket** (same port as operators) with `role: "node"` and exposes a command surface (e.g. `canvas.*`, `camera.*`, `device.*`, `notifications.*`, `system.*`) via `node.invoke`. Protocol details: [Gateway protocol](/gateway/protocol).
|
|
13
|
+
|
|
14
|
+
Legacy transport: [Bridge protocol](/gateway/bridge-protocol) (TCP JSONL; deprecated/removed for current nodes).
|
|
15
|
+
|
|
16
|
+
macOS can also run in **node mode**: the menubar app connects to the Gateway’s WS server and exposes its local canvas/camera commands as a node (so `quantumclaw nodes …` works against this Mac).
|
|
17
|
+
|
|
18
|
+
Notes:
|
|
19
|
+
|
|
20
|
+
- Nodes are **peripherals**, not gateways. They don’t run the gateway service.
|
|
21
|
+
- Telegram/WhatsApp/etc. messages land on the **gateway**, not on nodes.
|
|
22
|
+
- Troubleshooting runbook: [/nodes/troubleshooting](/nodes/troubleshooting)
|
|
23
|
+
|
|
24
|
+
## Pairing + status
|
|
25
|
+
|
|
26
|
+
**WS nodes use device pairing.** Nodes present a device identity during `connect`; the Gateway
|
|
27
|
+
creates a device pairing request for `role: node`. Approve via the devices CLI (or UI).
|
|
28
|
+
|
|
29
|
+
Quick CLI:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
quantumclaw devices list
|
|
33
|
+
quantumclaw devices approve <requestId>
|
|
34
|
+
quantumclaw devices reject <requestId>
|
|
35
|
+
quantumclaw nodes status
|
|
36
|
+
quantumclaw nodes describe --node <idOrNameOrIp>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
If a node retries with changed auth details (role/scopes/public key), the prior
|
|
40
|
+
pending request is superseded and a new `requestId` is created. Re-run
|
|
41
|
+
`quantumclaw devices list` before approving.
|
|
42
|
+
|
|
43
|
+
Notes:
|
|
44
|
+
|
|
45
|
+
- `nodes status` marks a node as **paired** when its device pairing role includes `node`.
|
|
46
|
+
- `node.pair.*` (CLI: `quantumclaw nodes pending/approve/reject`) is a separate gateway-owned
|
|
47
|
+
node pairing store; it does **not** gate the WS `connect` handshake.
|
|
48
|
+
|
|
49
|
+
## Remote node host (system.run)
|
|
50
|
+
|
|
51
|
+
Use a **node host** when your Gateway runs on one machine and you want commands
|
|
52
|
+
to execute on another. The model still talks to the **gateway**; the gateway
|
|
53
|
+
forwards `exec` calls to the **node host** when `host=node` is selected.
|
|
54
|
+
|
|
55
|
+
### What runs where
|
|
56
|
+
|
|
57
|
+
- **Gateway host**: receives messages, runs the model, routes tool calls.
|
|
58
|
+
- **Node host**: executes `system.run`/`system.which` on the node machine.
|
|
59
|
+
- **Approvals**: enforced on the node host via `~/.quantumclaw/exec-approvals.json`.
|
|
60
|
+
|
|
61
|
+
Approval note:
|
|
62
|
+
|
|
63
|
+
- Approval-backed node runs bind exact request context.
|
|
64
|
+
- For direct shell/runtime file executions, QuantumClaw also best-effort binds one concrete local
|
|
65
|
+
file operand and denies the run if that file changes before execution.
|
|
66
|
+
- If QuantumClaw cannot identify exactly one concrete local file for an interpreter/runtime command,
|
|
67
|
+
approval-backed execution is denied instead of pretending full runtime coverage. Use sandboxing,
|
|
68
|
+
separate hosts, or an explicit trusted allowlist/full workflow for broader interpreter semantics.
|
|
69
|
+
|
|
70
|
+
### Start a node host (foreground)
|
|
71
|
+
|
|
72
|
+
On the node machine:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
quantumclaw node run --host <gateway-host> --port 18789 --display-name "Build Node"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Remote gateway via SSH tunnel (loopback bind)
|
|
79
|
+
|
|
80
|
+
If the Gateway binds to loopback (`gateway.bind=loopback`, default in local mode),
|
|
81
|
+
remote node hosts cannot connect directly. Create an SSH tunnel and point the
|
|
82
|
+
node host at the local end of the tunnel.
|
|
83
|
+
|
|
84
|
+
Example (node host -> gateway host):
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Terminal A (keep running): forward local 18790 -> gateway 127.0.0.1:18789
|
|
88
|
+
ssh -N -L 18790:127.0.0.1:18789 user@gateway-host
|
|
89
|
+
|
|
90
|
+
# Terminal B: export the gateway token and connect through the tunnel
|
|
91
|
+
export QUANTUMCLAW_GATEWAY_TOKEN="<gateway-token>"
|
|
92
|
+
quantumclaw node run --host 127.0.0.1 --port 18790 --display-name "Build Node"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Notes:
|
|
96
|
+
|
|
97
|
+
- `quantumclaw node run` supports token or password auth.
|
|
98
|
+
- Env vars are preferred: `QUANTUMCLAW_GATEWAY_TOKEN` / `QUANTUMCLAW_GATEWAY_PASSWORD`.
|
|
99
|
+
- Config fallback is `gateway.auth.token` / `gateway.auth.password`.
|
|
100
|
+
- In local mode, node host intentionally ignores `gateway.remote.token` / `gateway.remote.password`.
|
|
101
|
+
- In remote mode, `gateway.remote.token` / `gateway.remote.password` are eligible per remote precedence rules.
|
|
102
|
+
- If active local `gateway.auth.*` SecretRefs are configured but unresolved, node-host auth fails closed.
|
|
103
|
+
- Legacy `CLAWDBOT_GATEWAY_*` env vars are intentionally ignored by node-host auth resolution.
|
|
104
|
+
|
|
105
|
+
### Start a node host (service)
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
quantumclaw node install --host <gateway-host> --port 18789 --display-name "Build Node"
|
|
109
|
+
quantumclaw node restart
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Pair + name
|
|
113
|
+
|
|
114
|
+
On the gateway host:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
quantumclaw devices list
|
|
118
|
+
quantumclaw devices approve <requestId>
|
|
119
|
+
quantumclaw nodes status
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
If the node retries with changed auth details, re-run `quantumclaw devices list`
|
|
123
|
+
and approve the current `requestId`.
|
|
124
|
+
|
|
125
|
+
Naming options:
|
|
126
|
+
|
|
127
|
+
- `--display-name` on `quantumclaw node run` / `quantumclaw node install` (persists in `~/.quantumclaw/node.json` on the node).
|
|
128
|
+
- `quantumclaw nodes rename --node <id|name|ip> --name "Build Node"` (gateway override).
|
|
129
|
+
|
|
130
|
+
### Allowlist the commands
|
|
131
|
+
|
|
132
|
+
Exec approvals are **per node host**. Add allowlist entries from the gateway:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
quantumclaw approvals allowlist add --node <id|name|ip> "/usr/bin/uname"
|
|
136
|
+
quantumclaw approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Approvals live on the node host at `~/.quantumclaw/exec-approvals.json`.
|
|
140
|
+
|
|
141
|
+
### Point exec at the node
|
|
142
|
+
|
|
143
|
+
Configure defaults (gateway config):
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
quantumclaw config set tools.exec.host node
|
|
147
|
+
quantumclaw config set tools.exec.security allowlist
|
|
148
|
+
quantumclaw config set tools.exec.node "<id-or-name>"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Or per session:
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
/exec host=node security=allowlist node=<id-or-name>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Once set, any `exec` call with `host=node` runs on the node host (subject to the
|
|
158
|
+
node allowlist/approvals).
|
|
159
|
+
|
|
160
|
+
Related:
|
|
161
|
+
|
|
162
|
+
- [Node host CLI](/cli/node)
|
|
163
|
+
- [Exec tool](/tools/exec)
|
|
164
|
+
- [Exec approvals](/tools/exec-approvals)
|
|
165
|
+
|
|
166
|
+
## Invoking commands
|
|
167
|
+
|
|
168
|
+
Low-level (raw RPC):
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
quantumclaw nodes invoke --node <idOrNameOrIp> --command canvas.eval --params '{"javaScript":"location.href"}'
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Higher-level helpers exist for the common “give the agent a MEDIA attachment” workflows.
|
|
175
|
+
|
|
176
|
+
## Screenshots (canvas snapshots)
|
|
177
|
+
|
|
178
|
+
If the node is showing the Canvas (WebView), `canvas.snapshot` returns `{ format, base64 }`.
|
|
179
|
+
|
|
180
|
+
CLI helper (writes to a temp file and prints `MEDIA:<path>`):
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
quantumclaw nodes canvas snapshot --node <idOrNameOrIp> --format png
|
|
184
|
+
quantumclaw nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Canvas controls
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
quantumclaw nodes canvas present --node <idOrNameOrIp> --target https://example.com
|
|
191
|
+
quantumclaw nodes canvas hide --node <idOrNameOrIp>
|
|
192
|
+
quantumclaw nodes canvas navigate https://example.com --node <idOrNameOrIp>
|
|
193
|
+
quantumclaw nodes canvas eval --node <idOrNameOrIp> --js "document.title"
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Notes:
|
|
197
|
+
|
|
198
|
+
- `canvas present` accepts URLs or local file paths (`--target`), plus optional `--x/--y/--width/--height` for positioning.
|
|
199
|
+
- `canvas eval` accepts inline JS (`--js`) or a positional arg.
|
|
200
|
+
|
|
201
|
+
### A2UI (Canvas)
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
quantumclaw nodes canvas a2ui push --node <idOrNameOrIp> --text "Hello"
|
|
205
|
+
quantumclaw nodes canvas a2ui push --node <idOrNameOrIp> --jsonl ./payload.jsonl
|
|
206
|
+
quantumclaw nodes canvas a2ui reset --node <idOrNameOrIp>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Notes:
|
|
210
|
+
|
|
211
|
+
- Only A2UI v0.8 JSONL is supported (v0.9/createSurface is rejected).
|
|
212
|
+
|
|
213
|
+
## Photos + videos (node camera)
|
|
214
|
+
|
|
215
|
+
Photos (`jpg`):
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
quantumclaw nodes camera list --node <idOrNameOrIp>
|
|
219
|
+
quantumclaw nodes camera snap --node <idOrNameOrIp> # default: both facings (2 MEDIA lines)
|
|
220
|
+
quantumclaw nodes camera snap --node <idOrNameOrIp> --facing front
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Video clips (`mp4`):
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
quantumclaw nodes camera clip --node <idOrNameOrIp> --duration 10s
|
|
227
|
+
quantumclaw nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Notes:
|
|
231
|
+
|
|
232
|
+
- The node must be **foregrounded** for `canvas.*` and `camera.*` (background calls return `NODE_BACKGROUND_UNAVAILABLE`).
|
|
233
|
+
- Clip duration is clamped (currently `<= 60s`) to avoid oversized base64 payloads.
|
|
234
|
+
- Android will prompt for `CAMERA`/`RECORD_AUDIO` permissions when possible; denied permissions fail with `*_PERMISSION_REQUIRED`.
|
|
235
|
+
|
|
236
|
+
## Screen recordings (nodes)
|
|
237
|
+
|
|
238
|
+
Supported nodes expose `screen.record` (mp4). Example:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
quantumclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
|
|
242
|
+
quantumclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Notes:
|
|
246
|
+
|
|
247
|
+
- `screen.record` availability depends on node platform.
|
|
248
|
+
- Screen recordings are clamped to `<= 60s`.
|
|
249
|
+
- `--no-audio` disables microphone capture on supported platforms.
|
|
250
|
+
- Use `--screen <index>` to select a display when multiple screens are available.
|
|
251
|
+
|
|
252
|
+
## Location (nodes)
|
|
253
|
+
|
|
254
|
+
Nodes expose `location.get` when Location is enabled in settings.
|
|
255
|
+
|
|
256
|
+
CLI helper:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
quantumclaw nodes location get --node <idOrNameOrIp>
|
|
260
|
+
quantumclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Notes:
|
|
264
|
+
|
|
265
|
+
- Location is **off by default**.
|
|
266
|
+
- “Always” requires system permission; background fetch is best-effort.
|
|
267
|
+
- The response includes lat/lon, accuracy (meters), and timestamp.
|
|
268
|
+
|
|
269
|
+
## SMS (Android nodes)
|
|
270
|
+
|
|
271
|
+
Android nodes can expose `sms.send` when the user grants **SMS** permission and the device supports telephony.
|
|
272
|
+
|
|
273
|
+
Low-level invoke:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
quantumclaw nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from QuantumClaw"}'
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Notes:
|
|
280
|
+
|
|
281
|
+
- The permission prompt must be accepted on the Android device before the capability is advertised.
|
|
282
|
+
- Wi-Fi-only devices without telephony will not advertise `sms.send`.
|
|
283
|
+
|
|
284
|
+
## Android device + personal data commands
|
|
285
|
+
|
|
286
|
+
Android nodes can advertise additional command families when the corresponding capabilities are enabled.
|
|
287
|
+
|
|
288
|
+
Available families:
|
|
289
|
+
|
|
290
|
+
- `device.status`, `device.info`, `device.permissions`, `device.health`
|
|
291
|
+
- `notifications.list`, `notifications.actions`
|
|
292
|
+
- `photos.latest`
|
|
293
|
+
- `contacts.search`, `contacts.add`
|
|
294
|
+
- `calendar.events`, `calendar.add`
|
|
295
|
+
- `callLog.search`
|
|
296
|
+
- `sms.search`
|
|
297
|
+
- `motion.activity`, `motion.pedometer`
|
|
298
|
+
|
|
299
|
+
Example invokes:
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
quantumclaw nodes invoke --node <idOrNameOrIp> --command device.status --params '{}'
|
|
303
|
+
quantumclaw nodes invoke --node <idOrNameOrIp> --command notifications.list --params '{}'
|
|
304
|
+
quantumclaw nodes invoke --node <idOrNameOrIp> --command photos.latest --params '{"limit":1}'
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Notes:
|
|
308
|
+
|
|
309
|
+
- Motion commands are capability-gated by available sensors.
|
|
310
|
+
|
|
311
|
+
## System commands (node host / mac node)
|
|
312
|
+
|
|
313
|
+
The macOS node exposes `system.run`, `system.notify`, and `system.execApprovals.get/set`.
|
|
314
|
+
The headless node host exposes `system.run`, `system.which`, and `system.execApprovals.get/set`.
|
|
315
|
+
|
|
316
|
+
Examples:
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
quantumclaw nodes run --node <idOrNameOrIp> -- echo "Hello from mac node"
|
|
320
|
+
quantumclaw nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
Notes:
|
|
324
|
+
|
|
325
|
+
- `system.run` returns stdout/stderr/exit code in the payload.
|
|
326
|
+
- `system.notify` respects notification permission state on the macOS app.
|
|
327
|
+
- Unrecognized node `platform` / `deviceFamily` metadata uses a conservative default allowlist that excludes `system.run` and `system.which`. If you intentionally need those commands for an unknown platform, add them explicitly via `gateway.nodes.allowCommands`.
|
|
328
|
+
- `system.run` supports `--cwd`, `--env KEY=VAL`, `--command-timeout`, and `--needs-screen-recording`.
|
|
329
|
+
- For shell wrappers (`bash|sh|zsh ... -c/-lc`), request-scoped `--env` values are reduced to an explicit allowlist (`TERM`, `LANG`, `LC_*`, `COLORTERM`, `NO_COLOR`, `FORCE_COLOR`).
|
|
330
|
+
- For allow-always decisions in allowlist mode, known dispatch wrappers (`env`, `nice`, `nohup`, `stdbuf`, `timeout`) persist inner executable paths instead of wrapper paths. If unwrapping is not safe, no allowlist entry is persisted automatically.
|
|
331
|
+
- On Windows node hosts in allowlist mode, shell-wrapper runs via `cmd.exe /c` require approval (allowlist entry alone does not auto-allow the wrapper form).
|
|
332
|
+
- `system.notify` supports `--priority <passive|active|timeSensitive>` and `--delivery <system|overlay|auto>`.
|
|
333
|
+
- Node hosts ignore `PATH` overrides and strip dangerous startup/shell keys (`DYLD_*`, `LD_*`, `NODE_OPTIONS`, `PYTHON*`, `PERL*`, `RUBYOPT`, `SHELLOPTS`, `PS4`). If you need extra PATH entries, configure the node host service environment (or install tools in standard locations) instead of passing `PATH` via `--env`.
|
|
334
|
+
- On macOS node mode, `system.run` is gated by exec approvals in the macOS app (Settings → Exec approvals).
|
|
335
|
+
Ask/allowlist/full behave the same as the headless node host; denied prompts return `SYSTEM_RUN_DENIED`.
|
|
336
|
+
- On headless node host, `system.run` is gated by exec approvals (`~/.quantumclaw/exec-approvals.json`).
|
|
337
|
+
|
|
338
|
+
## Exec node binding
|
|
339
|
+
|
|
340
|
+
When multiple nodes are available, you can bind exec to a specific node.
|
|
341
|
+
This sets the default node for `exec host=node` (and can be overridden per agent).
|
|
342
|
+
|
|
343
|
+
Global default:
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
quantumclaw config set tools.exec.node "node-id-or-name"
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
Per-agent override:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
quantumclaw config get agents.list
|
|
353
|
+
quantumclaw config set agents.list[0].tools.exec.node "node-id-or-name"
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
Unset to allow any node:
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
quantumclaw config unset tools.exec.node
|
|
360
|
+
quantumclaw config unset agents.list[0].tools.exec.node
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
## Permissions map
|
|
364
|
+
|
|
365
|
+
Nodes may include a `permissions` map in `node.list` / `node.describe`, keyed by permission name (e.g. `screenRecording`, `accessibility`) with boolean values (`true` = granted).
|
|
366
|
+
|
|
367
|
+
## Headless node host (cross-platform)
|
|
368
|
+
|
|
369
|
+
QuantumClaw can run a **headless node host** (no UI) that connects to the Gateway
|
|
370
|
+
WebSocket and exposes `system.run` / `system.which`. This is useful on Linux/Windows
|
|
371
|
+
or for running a minimal node alongside a server.
|
|
372
|
+
|
|
373
|
+
Start it:
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
quantumclaw node run --host <gateway-host> --port 18789
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
Notes:
|
|
380
|
+
|
|
381
|
+
- Pairing is still required (the Gateway will show a device pairing prompt).
|
|
382
|
+
- The node host stores its node id, token, display name, and gateway connection info in `~/.quantumclaw/node.json`.
|
|
383
|
+
- Exec approvals are enforced locally via `~/.quantumclaw/exec-approvals.json`
|
|
384
|
+
(see [Exec approvals](/tools/exec-approvals)).
|
|
385
|
+
- On macOS, the headless node host executes `system.run` locally by default. Set
|
|
386
|
+
`QUANTUMCLAW_NODE_EXEC_HOST=app` to route `system.run` through the companion app exec host; add
|
|
387
|
+
`QUANTUMCLAW_NODE_EXEC_FALLBACK=0` to require the app host and fail closed if it is unavailable.
|
|
388
|
+
- Add `--tls` / `--tls-fingerprint` when the Gateway WS uses TLS.
|
|
389
|
+
|
|
390
|
+
## Mac node mode
|
|
391
|
+
|
|
392
|
+
- The macOS menubar app connects to the Gateway WS server as a node (so `quantumclaw nodes …` works against this Mac).
|
|
393
|
+
- In remote mode, the app opens an SSH tunnel for the Gateway port and connects to `localhost`.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Location command for nodes (location.get), permission modes, and Android foreground behavior"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding location node support or permissions UI
|
|
5
|
+
- Designing Android location permissions or foreground behavior
|
|
6
|
+
title: "Location Command"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Location command (nodes)
|
|
10
|
+
|
|
11
|
+
## TL;DR
|
|
12
|
+
|
|
13
|
+
- `location.get` is a node command (via `node.invoke`).
|
|
14
|
+
- Off by default.
|
|
15
|
+
- Android app settings use a selector: Off / While Using.
|
|
16
|
+
- Separate toggle: Precise Location.
|
|
17
|
+
|
|
18
|
+
## Why a selector (not just a switch)
|
|
19
|
+
|
|
20
|
+
OS permissions are multi-level. We can expose a selector in-app, but the OS still decides the actual grant.
|
|
21
|
+
|
|
22
|
+
- iOS/macOS may expose **While Using** or **Always** in system prompts/Settings.
|
|
23
|
+
- Android app currently supports foreground location only.
|
|
24
|
+
- Precise location is a separate grant (iOS 14+ “Precise”, Android “fine” vs “coarse”).
|
|
25
|
+
|
|
26
|
+
Selector in UI drives our requested mode; actual grant lives in OS settings.
|
|
27
|
+
|
|
28
|
+
## Settings model
|
|
29
|
+
|
|
30
|
+
Per node device:
|
|
31
|
+
|
|
32
|
+
- `location.enabledMode`: `off | whileUsing`
|
|
33
|
+
- `location.preciseEnabled`: bool
|
|
34
|
+
|
|
35
|
+
UI behavior:
|
|
36
|
+
|
|
37
|
+
- Selecting `whileUsing` requests foreground permission.
|
|
38
|
+
- If OS denies requested level, revert to the highest granted level and show status.
|
|
39
|
+
|
|
40
|
+
## Permissions mapping (node.permissions)
|
|
41
|
+
|
|
42
|
+
Optional. macOS node reports `location` via the permissions map; iOS/Android may omit it.
|
|
43
|
+
|
|
44
|
+
## Command: `location.get`
|
|
45
|
+
|
|
46
|
+
Called via `node.invoke`.
|
|
47
|
+
|
|
48
|
+
Params (suggested):
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"timeoutMs": 10000,
|
|
53
|
+
"maxAgeMs": 15000,
|
|
54
|
+
"desiredAccuracy": "coarse|balanced|precise"
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Response payload:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"lat": 48.20849,
|
|
63
|
+
"lon": 16.37208,
|
|
64
|
+
"accuracyMeters": 12.5,
|
|
65
|
+
"altitudeMeters": 182.0,
|
|
66
|
+
"speedMps": 0.0,
|
|
67
|
+
"headingDeg": 270.0,
|
|
68
|
+
"timestamp": "2026-01-03T12:34:56.000Z",
|
|
69
|
+
"isPrecise": true,
|
|
70
|
+
"source": "gps|wifi|cell|unknown"
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Errors (stable codes):
|
|
75
|
+
|
|
76
|
+
- `LOCATION_DISABLED`: selector is off.
|
|
77
|
+
- `LOCATION_PERMISSION_REQUIRED`: permission missing for requested mode.
|
|
78
|
+
- `LOCATION_BACKGROUND_UNAVAILABLE`: app is backgrounded but only While Using allowed.
|
|
79
|
+
- `LOCATION_TIMEOUT`: no fix in time.
|
|
80
|
+
- `LOCATION_UNAVAILABLE`: system failure / no providers.
|
|
81
|
+
|
|
82
|
+
## Background behavior
|
|
83
|
+
|
|
84
|
+
- Android app denies `location.get` while backgrounded.
|
|
85
|
+
- Keep QuantumClaw open when requesting location on Android.
|
|
86
|
+
- Other node platforms may differ.
|
|
87
|
+
|
|
88
|
+
## Model/tooling integration
|
|
89
|
+
|
|
90
|
+
- Tool surface: `nodes` tool adds `location_get` action (node required).
|
|
91
|
+
- CLI: `quantumclaw nodes location get --node <id>`.
|
|
92
|
+
- Agent guidelines: only call when user enabled location and understands the scope.
|
|
93
|
+
|
|
94
|
+
## UX copy (suggested)
|
|
95
|
+
|
|
96
|
+
- Off: “Location sharing is disabled.”
|
|
97
|
+
- While Using: “Only when QuantumClaw is open.”
|
|
98
|
+
- Precise: “Use precise GPS location. Toggle off to share approximate location.”
|