vilvona 1.0.0
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 +12331 -0
- package/LICENSE +24 -0
- package/README.md +314 -0
- package/THIRD_PARTY_NOTICES.md +37 -0
- package/docs/.i18n/README.md +81 -0
- package/docs/.i18n/ar-navigation.json +18 -0
- package/docs/.i18n/de-navigation.json +18 -0
- package/docs/.i18n/es-navigation.json +18 -0
- package/docs/.i18n/fr-navigation.json +18 -0
- package/docs/.i18n/glossary.ar.json +82 -0
- package/docs/.i18n/glossary.de.json +82 -0
- package/docs/.i18n/glossary.es.json +82 -0
- package/docs/.i18n/glossary.fa.json +82 -0
- package/docs/.i18n/glossary.fr.json +82 -0
- package/docs/.i18n/glossary.id.json +82 -0
- package/docs/.i18n/glossary.it.json +82 -0
- package/docs/.i18n/glossary.ja-JP.json +102 -0
- package/docs/.i18n/glossary.ko.json +82 -0
- package/docs/.i18n/glossary.nl.json +82 -0
- package/docs/.i18n/glossary.pl.json +82 -0
- package/docs/.i18n/glossary.pt-BR.json +82 -0
- package/docs/.i18n/glossary.th.json +82 -0
- package/docs/.i18n/glossary.tr.json +82 -0
- package/docs/.i18n/glossary.uk.json +82 -0
- package/docs/.i18n/glossary.vi.json +82 -0
- package/docs/.i18n/glossary.zh-CN.json +1182 -0
- package/docs/.i18n/glossary.zh-TW.json +162 -0
- package/docs/.i18n/id-navigation.json +18 -0
- package/docs/.i18n/it-navigation.json +18 -0
- package/docs/.i18n/ja-navigation.json +18 -0
- package/docs/.i18n/ko-navigation.json +18 -0
- package/docs/.i18n/pl-navigation.json +18 -0
- package/docs/.i18n/pt-BR-navigation.json +18 -0
- package/docs/.i18n/tr-navigation.json +18 -0
- package/docs/.i18n/translation-workflow.md +111 -0
- package/docs/.i18n/zh-Hans-navigation.json +552 -0
- package/docs/AGENTS.md +36 -0
- package/docs/agent-runtime-architecture.md +48 -0
- package/docs/announcements/bluebubbles-imessage.md +79 -0
- package/docs/auth-credential-semantics.md +124 -0
- package/docs/automation/auth-monitoring.md +11 -0
- package/docs/automation/clawflow.md +12 -0
- package/docs/automation/cron-jobs.md +569 -0
- package/docs/automation/cron-vs-heartbeat.md +11 -0
- package/docs/automation/gmail-pubsub.md +11 -0
- package/docs/automation/hooks.md +387 -0
- package/docs/automation/index.md +135 -0
- package/docs/automation/poll.md +12 -0
- package/docs/automation/standing-orders.md +250 -0
- package/docs/automation/taskflow.md +155 -0
- package/docs/automation/tasks.md +374 -0
- package/docs/automation/troubleshooting.md +12 -0
- package/docs/automation/webhook.md +12 -0
- package/docs/brave-search.md +11 -0
- package/docs/channels/access-groups.md +201 -0
- package/docs/channels/ambient-room-events.md +214 -0
- package/docs/channels/bot-loop-protection.md +131 -0
- package/docs/channels/broadcast-groups.md +472 -0
- package/docs/channels/channel-routing.md +162 -0
- package/docs/channels/clickclack.md +146 -0
- package/docs/channels/discord.md +1758 -0
- package/docs/channels/feishu.md +654 -0
- package/docs/channels/googlechat.md +286 -0
- package/docs/channels/group-messages.md +95 -0
- package/docs/channels/groups.md +610 -0
- package/docs/channels/imessage-from-bluebubbles.md +259 -0
- package/docs/channels/imessage.md +864 -0
- package/docs/channels/index.md +65 -0
- package/docs/channels/irc.md +253 -0
- package/docs/channels/line.md +243 -0
- package/docs/channels/location.md +71 -0
- package/docs/channels/matrix-migration.md +375 -0
- package/docs/channels/matrix-presentation.md +77 -0
- package/docs/channels/matrix-push-rules.md +150 -0
- package/docs/channels/matrix.md +935 -0
- package/docs/channels/mattermost.md +542 -0
- package/docs/channels/msteams.md +1097 -0
- package/docs/channels/nextcloud-talk.md +176 -0
- package/docs/channels/nostr.md +253 -0
- package/docs/channels/pairing.md +214 -0
- package/docs/channels/qqbot.md +317 -0
- package/docs/channels/signal.md +417 -0
- package/docs/channels/slack.md +1623 -0
- package/docs/channels/sms.md +380 -0
- package/docs/channels/synology-chat.md +187 -0
- package/docs/channels/telegram.md +1121 -0
- package/docs/channels/tlon.md +296 -0
- package/docs/channels/troubleshooting.md +162 -0
- package/docs/channels/twitch.md +431 -0
- package/docs/channels/wechat.md +171 -0
- package/docs/channels/whatsapp.md +796 -0
- package/docs/channels/yuanbao.md +416 -0
- package/docs/channels/zalo.md +253 -0
- package/docs/channels/zalouser.md +217 -0
- package/docs/ci.md +665 -0
- package/docs/clawhub/cli.md +82 -0
- package/docs/clawhub/publishing.md +96 -0
- package/docs/cli/acp.md +370 -0
- package/docs/cli/agent.md +109 -0
- package/docs/cli/agents.md +253 -0
- package/docs/cli/approvals.md +193 -0
- package/docs/cli/backup.md +98 -0
- package/docs/cli/browser.md +322 -0
- package/docs/cli/channels.md +154 -0
- package/docs/cli/clawbot.md +25 -0
- package/docs/cli/commitments.md +90 -0
- package/docs/cli/completion.md +39 -0
- package/docs/cli/config.md +504 -0
- package/docs/cli/configure.md +77 -0
- package/docs/cli/crestodian.md +337 -0
- package/docs/cli/cron.md +344 -0
- package/docs/cli/daemon.md +67 -0
- package/docs/cli/dashboard.md +33 -0
- package/docs/cli/devices.md +240 -0
- package/docs/cli/directory.md +68 -0
- package/docs/cli/dns.md +53 -0
- package/docs/cli/docs.md +63 -0
- package/docs/cli/doctor.md +254 -0
- package/docs/cli/flows.md +52 -0
- package/docs/cli/gateway.md +572 -0
- package/docs/cli/health.md +43 -0
- package/docs/cli/hooks.md +345 -0
- package/docs/cli/index.md +406 -0
- package/docs/cli/infer.md +364 -0
- package/docs/cli/logs.md +68 -0
- package/docs/cli/mcp.md +851 -0
- package/docs/cli/memory.md +183 -0
- package/docs/cli/message.md +317 -0
- package/docs/cli/migrate.md +334 -0
- package/docs/cli/models.md +239 -0
- package/docs/cli/node.md +178 -0
- package/docs/cli/nodes.md +76 -0
- package/docs/cli/onboard.md +251 -0
- package/docs/cli/pairing.md +77 -0
- package/docs/cli/path.md +511 -0
- package/docs/cli/plugins.md +480 -0
- package/docs/cli/policy.md +929 -0
- package/docs/cli/proxy.md +89 -0
- package/docs/cli/qr.md +56 -0
- package/docs/cli/reset.md +39 -0
- package/docs/cli/sandbox.md +208 -0
- package/docs/cli/secrets.md +202 -0
- package/docs/cli/security.md +135 -0
- package/docs/cli/sessions.md +178 -0
- package/docs/cli/setup.md +60 -0
- package/docs/cli/skills.md +156 -0
- package/docs/cli/status.md +45 -0
- package/docs/cli/system.md +89 -0
- package/docs/cli/tasks.md +111 -0
- package/docs/cli/transcripts.md +151 -0
- package/docs/cli/tui.md +92 -0
- package/docs/cli/uninstall.md +45 -0
- package/docs/cli/update.md +283 -0
- package/docs/cli/voicecall.md +204 -0
- package/docs/cli/webhooks.md +117 -0
- package/docs/cli/wiki.md +256 -0
- package/docs/cli/workboard.md +228 -0
- package/docs/concepts/active-memory.md +856 -0
- package/docs/concepts/agent-loop.md +185 -0
- package/docs/concepts/agent-runtimes.md +276 -0
- package/docs/concepts/agent-workspace.md +230 -0
- package/docs/concepts/agent.md +142 -0
- package/docs/concepts/architecture.md +154 -0
- package/docs/concepts/channel-docking.md +145 -0
- package/docs/concepts/commitments.md +150 -0
- package/docs/concepts/compaction.md +203 -0
- package/docs/concepts/context-engine.md +347 -0
- package/docs/concepts/context.md +199 -0
- package/docs/concepts/delegate-architecture.md +319 -0
- package/docs/concepts/dreaming.md +279 -0
- package/docs/concepts/experimental-features.md +111 -0
- package/docs/concepts/features.md +91 -0
- package/docs/concepts/mantis-slack-desktop-runbook.md +231 -0
- package/docs/concepts/mantis.md +744 -0
- package/docs/concepts/markdown-formatting.md +139 -0
- package/docs/concepts/memory-builtin.md +151 -0
- package/docs/concepts/memory-honcho.md +144 -0
- package/docs/concepts/memory-qmd.md +277 -0
- package/docs/concepts/memory-search.md +175 -0
- package/docs/concepts/memory.md +299 -0
- package/docs/concepts/message-lifecycle-refactor.md +1126 -0
- package/docs/concepts/messages.md +216 -0
- package/docs/concepts/model-failover.md +405 -0
- package/docs/concepts/model-providers.md +719 -0
- package/docs/concepts/models.md +371 -0
- package/docs/concepts/multi-agent.md +625 -0
- package/docs/concepts/oauth.md +218 -0
- package/docs/concepts/parallel-specialist-lanes.md +127 -0
- package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
- package/docs/concepts/presence.md +117 -0
- package/docs/concepts/progress-drafts.md +406 -0
- package/docs/concepts/qa-e2e-automation.md +979 -0
- package/docs/concepts/qa-matrix.md +139 -0
- package/docs/concepts/queue-steering.md +90 -0
- package/docs/concepts/queue.md +136 -0
- package/docs/concepts/retry.md +86 -0
- package/docs/concepts/session-pruning.md +104 -0
- package/docs/concepts/session-tool.md +201 -0
- package/docs/concepts/session.md +164 -0
- package/docs/concepts/soul.md +116 -0
- package/docs/concepts/streaming.md +258 -0
- package/docs/concepts/system-prompt.md +330 -0
- package/docs/concepts/timezone.md +47 -0
- package/docs/concepts/typebox.md +309 -0
- package/docs/concepts/typing-indicators.md +88 -0
- package/docs/concepts/usage-tracking.md +72 -0
- package/docs/date-time.md +126 -0
- package/docs/debug/node-issue.md +90 -0
- package/docs/diagnostics/flags.md +182 -0
- package/docs/docs.json +1885 -0
- package/docs/gateway/authentication.md +286 -0
- package/docs/gateway/background-process.md +147 -0
- package/docs/gateway/bonjour.md +303 -0
- package/docs/gateway/bridge-protocol.md +97 -0
- package/docs/gateway/cli-backends.md +463 -0
- package/docs/gateway/config-agents.md +1525 -0
- package/docs/gateway/config-channels.md +942 -0
- package/docs/gateway/config-tools.md +806 -0
- package/docs/gateway/configuration-examples.md +706 -0
- package/docs/gateway/configuration-reference.md +1449 -0
- package/docs/gateway/configuration.md +748 -0
- package/docs/gateway/diagnostics.md +213 -0
- package/docs/gateway/discovery.md +154 -0
- package/docs/gateway/doctor.md +576 -0
- package/docs/gateway/external-apps.md +86 -0
- package/docs/gateway/gateway-lock.md +37 -0
- package/docs/gateway/health.md +73 -0
- package/docs/gateway/heartbeat.md +498 -0
- package/docs/gateway/index.md +385 -0
- package/docs/gateway/local-model-services.md +205 -0
- package/docs/gateway/local-models.md +355 -0
- package/docs/gateway/logging.md +149 -0
- package/docs/gateway/multiple-gateways.md +178 -0
- package/docs/gateway/network-model.md +15 -0
- package/docs/gateway/openai-http-api.md +379 -0
- package/docs/gateway/openresponses-http-api.md +349 -0
- package/docs/gateway/openshell.md +316 -0
- package/docs/gateway/opentelemetry.md +440 -0
- package/docs/gateway/operator-scopes.md +119 -0
- package/docs/gateway/pairing.md +207 -0
- package/docs/gateway/prometheus.md +249 -0
- package/docs/gateway/protocol.md +839 -0
- package/docs/gateway/remote-gateway-readme.md +169 -0
- package/docs/gateway/remote.md +280 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +148 -0
- package/docs/gateway/sandboxing.md +546 -0
- package/docs/gateway/secrets-plan-contract.md +159 -0
- package/docs/gateway/secrets.md +805 -0
- package/docs/gateway/security/audit-checks.md +127 -0
- package/docs/gateway/security/exposure-runbook.md +212 -0
- package/docs/gateway/security/index.md +1344 -0
- package/docs/gateway/security/secure-file-operations.md +76 -0
- package/docs/gateway/security/shrinkwrap.md +111 -0
- package/docs/gateway/tailscale.md +180 -0
- package/docs/gateway/tools-invoke-http-api.md +175 -0
- package/docs/gateway/troubleshooting.md +881 -0
- package/docs/gateway/trusted-proxy-auth.md +483 -0
- package/docs/help/debugging.md +341 -0
- package/docs/help/environment.md +240 -0
- package/docs/help/faq-first-run.md +872 -0
- package/docs/help/faq-models.md +557 -0
- package/docs/help/faq.md +2115 -0
- package/docs/help/index.md +39 -0
- package/docs/help/scripts.md +56 -0
- package/docs/help/testing-live.md +592 -0
- package/docs/help/testing-updates-plugins.md +299 -0
- package/docs/help/testing.md +977 -0
- package/docs/help/troubleshooting.md +500 -0
- package/docs/index.md +196 -0
- package/docs/install/ansible.md +233 -0
- package/docs/install/azure.md +315 -0
- package/docs/install/bun.md +59 -0
- package/docs/install/clawdock.md +112 -0
- package/docs/install/development-channels.md +148 -0
- package/docs/install/digitalocean.md +174 -0
- package/docs/install/docker-vm-runtime.md +154 -0
- package/docs/install/docker.md +564 -0
- package/docs/install/exe-dev.md +201 -0
- package/docs/install/fly.md +524 -0
- package/docs/install/gcp.md +418 -0
- package/docs/install/hetzner.md +285 -0
- package/docs/install/hostinger.md +98 -0
- package/docs/install/index.md +236 -0
- package/docs/install/installer.md +447 -0
- package/docs/install/kubernetes.md +196 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-claude.md +165 -0
- package/docs/install/migrating-hermes.md +178 -0
- package/docs/install/migrating.md +137 -0
- package/docs/install/nix.md +112 -0
- package/docs/install/node.md +142 -0
- package/docs/install/northflank.mdx +44 -0
- package/docs/install/oracle.md +218 -0
- package/docs/install/podman.md +216 -0
- package/docs/install/railway.mdx +92 -0
- package/docs/install/raspberry-pi.md +234 -0
- package/docs/install/render.mdx +167 -0
- package/docs/install/uninstall.md +140 -0
- package/docs/install/updating.md +284 -0
- package/docs/install/upstash.md +96 -0
- package/docs/logging.md +322 -0
- package/docs/maturity-scores.yaml +5361 -0
- package/docs/nav-tabs-underline.js +104 -0
- package/docs/network.md +72 -0
- package/docs/nodes/audio.md +216 -0
- package/docs/nodes/camera.md +166 -0
- package/docs/nodes/images.md +77 -0
- package/docs/nodes/index.md +444 -0
- package/docs/nodes/location-command.md +102 -0
- package/docs/nodes/media-understanding.md +495 -0
- package/docs/nodes/talk.md +160 -0
- package/docs/nodes/troubleshooting.md +123 -0
- package/docs/nodes/voicewake.md +93 -0
- package/docs/openclaw-agent-runtime.md +82 -0
- package/docs/perplexity.md +11 -0
- package/docs/plan/codex-context-engine-harness.md +624 -0
- package/docs/plan/ui-channels.md +284 -0
- package/docs/platforms/android.md +286 -0
- package/docs/platforms/digitalocean.md +12 -0
- package/docs/platforms/easyrunner.md +109 -0
- package/docs/platforms/index.md +65 -0
- package/docs/platforms/ios.md +287 -0
- package/docs/platforms/linux.md +141 -0
- package/docs/platforms/mac/bundled-gateway.md +79 -0
- package/docs/platforms/mac/canvas.md +128 -0
- package/docs/platforms/mac/child-process.md +72 -0
- package/docs/platforms/mac/dev-setup.md +112 -0
- package/docs/platforms/mac/health.md +39 -0
- package/docs/platforms/mac/icon.md +36 -0
- package/docs/platforms/mac/logging.md +62 -0
- package/docs/platforms/mac/menu-bar.md +93 -0
- package/docs/platforms/mac/peekaboo.md +96 -0
- package/docs/platforms/mac/permissions.md +73 -0
- package/docs/platforms/mac/remote.md +123 -0
- package/docs/platforms/mac/signing.md +52 -0
- package/docs/platforms/mac/skills.md +45 -0
- package/docs/platforms/mac/voice-overlay.md +66 -0
- package/docs/platforms/mac/voicewake.md +79 -0
- package/docs/platforms/mac/webchat.md +54 -0
- package/docs/platforms/mac/xpc.md +66 -0
- package/docs/platforms/macos.md +228 -0
- package/docs/platforms/oracle.md +12 -0
- package/docs/platforms/raspberry-pi.md +13 -0
- package/docs/platforms/windows.md +304 -0
- package/docs/plugins/adding-capabilities.md +146 -0
- package/docs/plugins/admin-http-rpc.md +216 -0
- package/docs/plugins/agent-tools.md +13 -0
- package/docs/plugins/architecture-internals.md +1203 -0
- package/docs/plugins/architecture.md +483 -0
- package/docs/plugins/building-extensions.md +13 -0
- package/docs/plugins/building-plugins.md +343 -0
- package/docs/plugins/bundles.md +310 -0
- package/docs/plugins/cli-backend-plugins.md +328 -0
- package/docs/plugins/codex-computer-use.md +297 -0
- package/docs/plugins/codex-harness-reference.md +480 -0
- package/docs/plugins/codex-harness-runtime.md +268 -0
- package/docs/plugins/codex-harness.md +800 -0
- package/docs/plugins/codex-native-plugins.md +280 -0
- package/docs/plugins/community.md +77 -0
- package/docs/plugins/compatibility.md +198 -0
- package/docs/plugins/copilot.md +355 -0
- package/docs/plugins/dependency-resolution.md +176 -0
- package/docs/plugins/google-meet.md +1737 -0
- package/docs/plugins/hooks.md +525 -0
- package/docs/plugins/install-overrides.md +80 -0
- package/docs/plugins/llama-cpp.md +58 -0
- package/docs/plugins/manage-plugins.md +214 -0
- package/docs/plugins/manifest.md +1468 -0
- package/docs/plugins/memory-lancedb.md +385 -0
- package/docs/plugins/memory-wiki.md +529 -0
- package/docs/plugins/message-presentation.md +487 -0
- package/docs/plugins/oc-path.md +166 -0
- package/docs/plugins/plugin-inventory.md +318 -0
- package/docs/plugins/plugin-permission-requests.md +193 -0
- package/docs/plugins/reference/acpx.md +23 -0
- package/docs/plugins/reference/admin-http-rpc.md +23 -0
- package/docs/plugins/reference/alibaba.md +23 -0
- package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
- package/docs/plugins/reference/amazon-bedrock.md +23 -0
- package/docs/plugins/reference/anthropic-vertex.md +29 -0
- package/docs/plugins/reference/anthropic.md +23 -0
- package/docs/plugins/reference/arcee.md +23 -0
- package/docs/plugins/reference/azure-speech.md +23 -0
- package/docs/plugins/reference/bonjour.md +19 -0
- package/docs/plugins/reference/brave.md +23 -0
- package/docs/plugins/reference/browser.md +23 -0
- package/docs/plugins/reference/byteplus.md +19 -0
- package/docs/plugins/reference/canvas.md +19 -0
- package/docs/plugins/reference/cerebras.md +23 -0
- package/docs/plugins/reference/chutes.md +23 -0
- package/docs/plugins/reference/clickclack.md +23 -0
- package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
- package/docs/plugins/reference/codex-supervisor.md +27 -0
- package/docs/plugins/reference/codex.md +23 -0
- package/docs/plugins/reference/comfy.md +23 -0
- package/docs/plugins/reference/copilot-proxy.md +19 -0
- package/docs/plugins/reference/copilot.md +23 -0
- package/docs/plugins/reference/deepgram.md +23 -0
- package/docs/plugins/reference/deepinfra.md +23 -0
- package/docs/plugins/reference/deepseek.md +23 -0
- package/docs/plugins/reference/diagnostics-otel.md +19 -0
- package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
- package/docs/plugins/reference/diffs-language-pack.md +31 -0
- package/docs/plugins/reference/diffs.md +19 -0
- package/docs/plugins/reference/discord.md +23 -0
- package/docs/plugins/reference/document-extract.md +23 -0
- package/docs/plugins/reference/duckduckgo.md +23 -0
- package/docs/plugins/reference/elevenlabs.md +23 -0
- package/docs/plugins/reference/exa.md +23 -0
- package/docs/plugins/reference/fal.md +23 -0
- package/docs/plugins/reference/feishu.md +23 -0
- package/docs/plugins/reference/file-transfer.md +19 -0
- package/docs/plugins/reference/firecrawl.md +23 -0
- package/docs/plugins/reference/fireworks.md +23 -0
- package/docs/plugins/reference/github-copilot.md +23 -0
- package/docs/plugins/reference/gmi.md +23 -0
- package/docs/plugins/reference/google-meet.md +23 -0
- package/docs/plugins/reference/google.md +23 -0
- package/docs/plugins/reference/googlechat.md +23 -0
- package/docs/plugins/reference/gradium.md +23 -0
- package/docs/plugins/reference/groq.md +23 -0
- package/docs/plugins/reference/huggingface.md +23 -0
- package/docs/plugins/reference/imessage.md +23 -0
- package/docs/plugins/reference/inworld.md +23 -0
- package/docs/plugins/reference/irc.md +23 -0
- package/docs/plugins/reference/kilocode.md +23 -0
- package/docs/plugins/reference/kimi.md +23 -0
- package/docs/plugins/reference/line.md +23 -0
- package/docs/plugins/reference/litellm.md +23 -0
- package/docs/plugins/reference/llama-cpp.md +23 -0
- package/docs/plugins/reference/llm-task.md +19 -0
- package/docs/plugins/reference/lmstudio.md +23 -0
- package/docs/plugins/reference/lobster.md +19 -0
- package/docs/plugins/reference/matrix.md +23 -0
- package/docs/plugins/reference/mattermost.md +23 -0
- package/docs/plugins/reference/memory-core.md +19 -0
- package/docs/plugins/reference/memory-lancedb.md +23 -0
- package/docs/plugins/reference/memory-wiki.md +23 -0
- package/docs/plugins/reference/microsoft-foundry.md +113 -0
- package/docs/plugins/reference/microsoft.md +19 -0
- package/docs/plugins/reference/migrate-claude.md +19 -0
- package/docs/plugins/reference/migrate-hermes.md +19 -0
- package/docs/plugins/reference/minimax.md +23 -0
- package/docs/plugins/reference/mistral.md +23 -0
- package/docs/plugins/reference/moonshot.md +23 -0
- package/docs/plugins/reference/msteams.md +23 -0
- package/docs/plugins/reference/nextcloud-talk.md +23 -0
- package/docs/plugins/reference/nostr.md +23 -0
- package/docs/plugins/reference/novita.md +23 -0
- package/docs/plugins/reference/nvidia.md +23 -0
- package/docs/plugins/reference/oc-path.md +23 -0
- package/docs/plugins/reference/ollama.md +24 -0
- package/docs/plugins/reference/open-prose.md +19 -0
- package/docs/plugins/reference/openai.md +23 -0
- package/docs/plugins/reference/opencode-go.md +23 -0
- package/docs/plugins/reference/opencode.md +23 -0
- package/docs/plugins/reference/openrouter.md +23 -0
- package/docs/plugins/reference/openshell.md +19 -0
- package/docs/plugins/reference/perplexity.md +23 -0
- package/docs/plugins/reference/pixverse.md +23 -0
- package/docs/plugins/reference/policy.md +79 -0
- package/docs/plugins/reference/qa-channel.md +23 -0
- package/docs/plugins/reference/qa-lab.md +19 -0
- package/docs/plugins/reference/qa-matrix.md +19 -0
- package/docs/plugins/reference/qianfan.md +23 -0
- package/docs/plugins/reference/qqbot.md +23 -0
- package/docs/plugins/reference/qwen.md +24 -0
- package/docs/plugins/reference/runway.md +23 -0
- package/docs/plugins/reference/searxng.md +19 -0
- package/docs/plugins/reference/senseaudio.md +23 -0
- package/docs/plugins/reference/sglang.md +23 -0
- package/docs/plugins/reference/signal.md +23 -0
- package/docs/plugins/reference/slack.md +23 -0
- package/docs/plugins/reference/sms.md +23 -0
- package/docs/plugins/reference/stepfun.md +23 -0
- package/docs/plugins/reference/synology-chat.md +23 -0
- package/docs/plugins/reference/synthetic.md +23 -0
- package/docs/plugins/reference/tavily.md +23 -0
- package/docs/plugins/reference/telegram.md +23 -0
- package/docs/plugins/reference/tencent.md +23 -0
- package/docs/plugins/reference/tlon.md +23 -0
- package/docs/plugins/reference/together.md +23 -0
- package/docs/plugins/reference/tokenjuice.md +23 -0
- package/docs/plugins/reference/tts-local-cli.md +19 -0
- package/docs/plugins/reference/twitch.md +23 -0
- package/docs/plugins/reference/venice.md +23 -0
- package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
- package/docs/plugins/reference/vllm.md +23 -0
- package/docs/plugins/reference/voice-call.md +23 -0
- package/docs/plugins/reference/volcengine.md +23 -0
- package/docs/plugins/reference/voyage.md +19 -0
- package/docs/plugins/reference/vydra.md +23 -0
- package/docs/plugins/reference/web-readability.md +19 -0
- package/docs/plugins/reference/webhooks.md +23 -0
- package/docs/plugins/reference/whatsapp.md +23 -0
- package/docs/plugins/reference/workboard.md +23 -0
- package/docs/plugins/reference/xai.md +23 -0
- package/docs/plugins/reference/xiaomi.md +23 -0
- package/docs/plugins/reference/zai.md +23 -0
- package/docs/plugins/reference/zalo.md +23 -0
- package/docs/plugins/reference/zalouser.md +24 -0
- package/docs/plugins/reference.md +19 -0
- package/docs/plugins/sdk-agent-harness.md +339 -0
- package/docs/plugins/sdk-channel-inbound.md +70 -0
- package/docs/plugins/sdk-channel-ingress.md +137 -0
- package/docs/plugins/sdk-channel-message.md +18 -0
- package/docs/plugins/sdk-channel-outbound.md +113 -0
- package/docs/plugins/sdk-channel-plugins.md +770 -0
- package/docs/plugins/sdk-channel-turn.md +9 -0
- package/docs/plugins/sdk-entrypoints.md +344 -0
- package/docs/plugins/sdk-migration.md +1011 -0
- package/docs/plugins/sdk-overview.md +525 -0
- package/docs/plugins/sdk-provider-plugins.md +1019 -0
- package/docs/plugins/sdk-runtime.md +683 -0
- package/docs/plugins/sdk-setup.md +550 -0
- package/docs/plugins/sdk-subpaths.md +401 -0
- package/docs/plugins/sdk-testing.md +403 -0
- package/docs/plugins/tool-plugins.md +411 -0
- package/docs/plugins/voice-call.md +942 -0
- package/docs/plugins/webhooks.md +192 -0
- package/docs/plugins/workboard.md +402 -0
- package/docs/plugins/zalouser.md +86 -0
- package/docs/prose.md +191 -0
- package/docs/providers/alibaba.md +158 -0
- package/docs/providers/anthropic.md +386 -0
- package/docs/providers/arcee.md +144 -0
- package/docs/providers/azure-speech.md +119 -0
- package/docs/providers/bedrock-mantle.md +224 -0
- package/docs/providers/bedrock.md +433 -0
- package/docs/providers/cerebras.md +130 -0
- package/docs/providers/chutes.md +153 -0
- package/docs/providers/claude-max-api-proxy.md +191 -0
- package/docs/providers/cloudflare-ai-gateway.md +119 -0
- package/docs/providers/comfy.md +362 -0
- package/docs/providers/deepgram.md +184 -0
- package/docs/providers/deepinfra.md +92 -0
- package/docs/providers/deepseek.md +146 -0
- package/docs/providers/ds4.md +309 -0
- package/docs/providers/elevenlabs.md +130 -0
- package/docs/providers/fal.md +240 -0
- package/docs/providers/fireworks.md +144 -0
- package/docs/providers/github-copilot.md +257 -0
- package/docs/providers/gmi.md +92 -0
- package/docs/providers/google.md +472 -0
- package/docs/providers/gradium.md +123 -0
- package/docs/providers/groq.md +171 -0
- package/docs/providers/huggingface.md +235 -0
- package/docs/providers/index.md +105 -0
- package/docs/providers/inferrs.md +272 -0
- package/docs/providers/inworld.md +120 -0
- package/docs/providers/kilocode.md +135 -0
- package/docs/providers/litellm.md +234 -0
- package/docs/providers/lmstudio.md +224 -0
- package/docs/providers/minimax.md +518 -0
- package/docs/providers/mistral.md +235 -0
- package/docs/providers/models.md +64 -0
- package/docs/providers/moonshot.md +413 -0
- package/docs/providers/novita.md +92 -0
- package/docs/providers/nvidia.md +208 -0
- package/docs/providers/ollama-cloud.md +115 -0
- package/docs/providers/ollama.md +1225 -0
- package/docs/providers/openai.md +1091 -0
- package/docs/providers/opencode-go.md +123 -0
- package/docs/providers/opencode.md +149 -0
- package/docs/providers/openrouter.md +390 -0
- package/docs/providers/perplexity-provider.md +123 -0
- package/docs/providers/pixverse.md +165 -0
- package/docs/providers/qianfan.md +132 -0
- package/docs/providers/qwen-oauth.md +115 -0
- package/docs/providers/qwen.md +364 -0
- package/docs/providers/runway.md +103 -0
- package/docs/providers/senseaudio.md +68 -0
- package/docs/providers/sglang.md +161 -0
- package/docs/providers/stepfun.md +229 -0
- package/docs/providers/synthetic.md +154 -0
- package/docs/providers/tencent.md +130 -0
- package/docs/providers/together.md +140 -0
- package/docs/providers/venice.md +312 -0
- package/docs/providers/vercel-ai-gateway.md +128 -0
- package/docs/providers/vllm.md +407 -0
- package/docs/providers/volcengine.md +199 -0
- package/docs/providers/vydra.md +180 -0
- package/docs/providers/xai.md +571 -0
- package/docs/providers/xiaomi.md +286 -0
- package/docs/providers/zai.md +224 -0
- package/docs/refactor/access.md +9 -0
- package/docs/refactor/acp.md +298 -0
- package/docs/refactor/canvas.md +131 -0
- package/docs/refactor/database-first.md +2263 -0
- package/docs/refactor/ingress-core.md +341 -0
- package/docs/reference/AGENTS.default.md +131 -0
- package/docs/reference/RELEASING.md +844 -0
- package/docs/reference/api-usage-costs.md +208 -0
- package/docs/reference/application-modernization-plan.md +208 -0
- package/docs/reference/code-mode.md +1058 -0
- package/docs/reference/credits.md +33 -0
- package/docs/reference/device-models.md +50 -0
- package/docs/reference/full-release-validation.md +206 -0
- package/docs/reference/memory-config.md +630 -0
- package/docs/reference/prompt-caching.md +358 -0
- package/docs/reference/release-performance-sweep.md +347 -0
- package/docs/reference/rich-output-protocol.md +93 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secret-placeholder-conventions.md +33 -0
- package/docs/reference/secretref-credential-surface.md +163 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +691 -0
- package/docs/reference/session-management-compaction.md +474 -0
- package/docs/reference/templates/AGENTS.dev.md +90 -0
- package/docs/reference/templates/AGENTS.md +227 -0
- package/docs/reference/templates/BOOT.md +16 -0
- package/docs/reference/templates/BOOTSTRAP.md +66 -0
- package/docs/reference/templates/HEARTBEAT.md +24 -0
- package/docs/reference/templates/IDENTITY.dev.md +52 -0
- package/docs/reference/templates/IDENTITY.md +34 -0
- package/docs/reference/templates/SOUL.dev.md +82 -0
- package/docs/reference/templates/SOUL.md +49 -0
- package/docs/reference/templates/TOOLS.dev.md +29 -0
- package/docs/reference/templates/TOOLS.md +51 -0
- package/docs/reference/templates/USER.dev.md +23 -0
- package/docs/reference/templates/USER.md +28 -0
- package/docs/reference/test.md +248 -0
- package/docs/reference/token-use.md +246 -0
- package/docs/reference/transcript-hygiene.md +226 -0
- package/docs/reference/wizard.md +252 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +170 -0
- package/docs/security/incident-response.md +59 -0
- package/docs/security/network-proxy.md +268 -0
- package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
- package/docs/snippets/plugin-publish/minimal-package.json +16 -0
- package/docs/specs/claw-supervisor.md +247 -0
- package/docs/start/bootstrapping.md +49 -0
- package/docs/start/docs-directory.md +69 -0
- package/docs/start/getting-started.md +152 -0
- package/docs/start/hubs.md +201 -0
- package/docs/start/lore.md +223 -0
- package/docs/start/onboarding-overview.md +72 -0
- package/docs/start/onboarding.md +98 -0
- package/docs/start/openclaw.md +246 -0
- package/docs/start/quickstart.md +25 -0
- package/docs/start/setup.md +178 -0
- package/docs/start/showcase.md +371 -0
- package/docs/start/wizard-cli-automation.md +232 -0
- package/docs/start/wizard-cli-reference.md +331 -0
- package/docs/start/wizard.md +142 -0
- package/docs/style.css +137 -0
- package/docs/tools/acp-agents-setup.md +356 -0
- package/docs/tools/acp-agents.md +865 -0
- package/docs/tools/agent-send.md +130 -0
- package/docs/tools/apply-patch.md +64 -0
- package/docs/tools/brave-search.md +139 -0
- package/docs/tools/browser-control.md +405 -0
- package/docs/tools/browser-linux-troubleshooting.md +173 -0
- package/docs/tools/browser-login.md +77 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
- package/docs/tools/browser.md +866 -0
- package/docs/tools/btw.md +159 -0
- package/docs/tools/capability-cookbook.md +12 -0
- package/docs/tools/clawhub.md +5 -0
- package/docs/tools/code-execution.md +173 -0
- package/docs/tools/creating-skills.md +271 -0
- package/docs/tools/diffs.md +527 -0
- package/docs/tools/duckduckgo-search.md +109 -0
- package/docs/tools/elevated.md +128 -0
- package/docs/tools/exa-search.md +152 -0
- package/docs/tools/exec-approvals-advanced.md +457 -0
- package/docs/tools/exec-approvals.md +520 -0
- package/docs/tools/exec.md +294 -0
- package/docs/tools/firecrawl.md +155 -0
- package/docs/tools/gemini-search.md +114 -0
- package/docs/tools/goal.md +217 -0
- package/docs/tools/grok-search.md +129 -0
- package/docs/tools/image-generation.md +538 -0
- package/docs/tools/index.md +176 -0
- package/docs/tools/kimi-search.md +105 -0
- package/docs/tools/llm-task.md +137 -0
- package/docs/tools/lobster.md +365 -0
- package/docs/tools/loop-detection.md +154 -0
- package/docs/tools/media-overview.md +161 -0
- package/docs/tools/minimax-search.md +102 -0
- package/docs/tools/multi-agent-sandbox-tools.md +409 -0
- package/docs/tools/music-generation.md +372 -0
- package/docs/tools/ollama-search.md +153 -0
- package/docs/tools/parallel-search.md +154 -0
- package/docs/tools/pdf.md +213 -0
- package/docs/tools/permission-modes.md +111 -0
- package/docs/tools/perplexity-search.md +220 -0
- package/docs/tools/plugin.md +378 -0
- package/docs/tools/reactions.md +100 -0
- package/docs/tools/searxng-search.md +141 -0
- package/docs/tools/skill-workshop.md +283 -0
- package/docs/tools/skills-config.md +457 -0
- package/docs/tools/skills.md +591 -0
- package/docs/tools/slash-commands.md +518 -0
- package/docs/tools/steer.md +77 -0
- package/docs/tools/subagents.md +652 -0
- package/docs/tools/tavily.md +162 -0
- package/docs/tools/thinking.md +142 -0
- package/docs/tools/tokenjuice.md +84 -0
- package/docs/tools/tool-search.md +269 -0
- package/docs/tools/trajectory.md +229 -0
- package/docs/tools/tts.md +1013 -0
- package/docs/tools/video-generation.md +555 -0
- package/docs/tools/web-fetch.md +210 -0
- package/docs/tools/web.md +476 -0
- package/docs/tts.md +11 -0
- package/docs/vps.md +139 -0
- package/docs/web/control-ui.md +530 -0
- package/docs/web/dashboard.md +107 -0
- package/docs/web/index.md +133 -0
- package/docs/web/tui.md +258 -0
- package/docs/web/webchat.md +102 -0
- package/npm-shrinkwrap.json +3485 -0
- package/openclaw.mjs +661 -0
- package/package.json +1971 -0
- package/patches/.gitkeep +0 -0
- package/patches/@agentclientprotocol__claude-agent-acp@0.39.0.patch +40 -0
- package/pnpm-workspace.yaml +124 -0
- package/scripts/crabbox-wrapper.mjs +2470 -0
- package/scripts/lib/official-external-channel-catalog.json +570 -0
- package/scripts/lib/official-external-plugin-catalog.json +284 -0
- package/scripts/lib/official-external-provider-catalog.json +158 -0
- package/scripts/lib/package-dist-imports.mjs +174 -0
- package/scripts/npm-runner.mjs +95 -0
- package/scripts/postinstall-bundled-plugins.mjs +978 -0
- package/scripts/preinstall-package-manager-warning.mjs +74 -0
- package/scripts/prepare-git-hooks.mjs +73 -0
- package/scripts/windows-cmd-helpers.mjs +29 -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/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +78 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +143 -0
- package/skills/diagram-maker/SKILL.md +53 -0
- package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
- package/skills/diagram-maker/references/svg-template.md +112 -0
- package/skills/discord/SKILL.md +136 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +47 -0
- package/skills/gh-issues/SKILL.md +213 -0
- package/skills/gifgrep/SKILL.md +85 -0
- package/skills/github/SKILL.md +84 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +105 -0
- package/skills/himalaya/SKILL.md +80 -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/meme-maker/SKILL.md +42 -0
- package/skills/meme-maker/references/templates.json +358 -0
- package/skills/meme-maker/scripts/meme.mjs +398 -0
- package/skills/model-usage/SKILL.md +71 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +319 -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 +143 -0
- package/skills/node-inspect-debugger/SKILL.md +85 -0
- package/skills/notion/SKILL.md +150 -0
- package/skills/obsidian/SKILL.md +119 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +71 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +126 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +198 -0
- package/skills/pyproject.toml +10 -0
- package/skills/python-debugpy/SKILL.md +73 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/session-logs/SKILL.md +151 -0
- package/skills/sherpa-onnx-tts/SKILL.md +109 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +78 -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 +144 -0
- package/skills/skill-creator/scripts/quick_validate.py +169 -0
- package/skills/skill-creator/scripts/test_package_skill.py +199 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
- package/skills/slack/SKILL.md +78 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spike/SKILL.md +51 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/taskflow/SKILL.md +149 -0
- package/skills/taskflow/examples/inbox-triage.lobster +33 -0
- package/skills/taskflow/examples/pr-intake.lobster +32 -0
- package/skills/taskflow-inbox-triage/SKILL.md +119 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +91 -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 +108 -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 +87 -0
- package/skills/xurl/SKILL.md +120 -0
- package/src/agents/templates/HEARTBEAT.md +5 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "OpenClaw macOS companion app (menu bar + gateway broker)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Implementing macOS app features
|
|
5
|
+
- Changing gateway lifecycle or node bridging on macOS
|
|
6
|
+
title: "macOS app"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
The macOS app is the **menu-bar companion** for OpenClaw. It owns permissions,
|
|
10
|
+
manages/attaches to the Gateway locally (launchd or manual), and exposes macOS
|
|
11
|
+
capabilities to the agent as a node.
|
|
12
|
+
|
|
13
|
+
## What it does
|
|
14
|
+
|
|
15
|
+
- Shows native notifications and status in the menu bar.
|
|
16
|
+
- Owns TCC prompts (Notifications, Accessibility, Screen Recording, Microphone,
|
|
17
|
+
Speech Recognition, Automation/AppleScript).
|
|
18
|
+
- Runs or connects to the Gateway (local or remote).
|
|
19
|
+
- Exposes macOS-only tools (Canvas, Camera, Screen Recording, `system.run`).
|
|
20
|
+
- Starts the local node host service in **remote** mode (launchd), and stops it in **local** mode.
|
|
21
|
+
- Optionally hosts **PeekabooBridge** for UI automation.
|
|
22
|
+
- Installs the global CLI (`openclaw`) on request via npm, pnpm, or bun (the app prefers npm, then pnpm, then bun; Node remains the recommended Gateway runtime).
|
|
23
|
+
|
|
24
|
+
## Local vs remote mode
|
|
25
|
+
|
|
26
|
+
- **Local** (default): the app attaches to a running local Gateway if present;
|
|
27
|
+
otherwise it enables the launchd service via `openclaw gateway install`.
|
|
28
|
+
- **Remote**: the app connects to a Gateway over SSH/Tailscale and never starts
|
|
29
|
+
a local process.
|
|
30
|
+
The app starts the local **node host service** so the remote Gateway can reach this Mac.
|
|
31
|
+
The app does not spawn the Gateway as a child process.
|
|
32
|
+
Gateway discovery now prefers Tailscale MagicDNS names over raw tailnet IPs,
|
|
33
|
+
so the Mac app recovers more reliably when tailnet IPs change.
|
|
34
|
+
|
|
35
|
+
## Launchd control
|
|
36
|
+
|
|
37
|
+
The app manages a per-user LaunchAgent labeled `ai.openclaw.gateway`
|
|
38
|
+
(or `ai.openclaw.<profile>` when using `--profile`/`OPENCLAW_PROFILE`; legacy `com.openclaw.*` still unloads).
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
launchctl kickstart -k gui/$UID/ai.openclaw.gateway
|
|
42
|
+
launchctl bootout gui/$UID/ai.openclaw.gateway
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Replace the label with `ai.openclaw.<profile>` when running a named profile.
|
|
46
|
+
|
|
47
|
+
If the LaunchAgent isn't installed, enable it from the app or run
|
|
48
|
+
`openclaw gateway install`.
|
|
49
|
+
|
|
50
|
+
If the gateway repeatedly disappears for minutes to hours and only resumes when you touch the Control UI or SSH into the host, see the troubleshooting note for macOS Maintenance Sleep / `ENETDOWN` crashes and launchd's respawn-protection gate in [Gateway troubleshooting](/gateway/troubleshooting#macos-gateway-silently-stops-responding-then-resumes-when-you-touch-the-dashboard).
|
|
51
|
+
|
|
52
|
+
## Node capabilities (mac)
|
|
53
|
+
|
|
54
|
+
The macOS app presents itself as a node. Common commands:
|
|
55
|
+
|
|
56
|
+
- Canvas: `canvas.present`, `canvas.navigate`, `canvas.eval`, `canvas.snapshot`, `canvas.a2ui.*`
|
|
57
|
+
- Camera: `camera.snap`, `camera.clip`
|
|
58
|
+
- Screen: `screen.snapshot`, `screen.record`
|
|
59
|
+
- System: `system.run`, `system.notify`
|
|
60
|
+
|
|
61
|
+
The node reports a `permissions` map so agents can decide what's allowed.
|
|
62
|
+
|
|
63
|
+
Node service + app IPC:
|
|
64
|
+
|
|
65
|
+
- When the headless node host service is running (remote mode), it connects to the Gateway WS as a node.
|
|
66
|
+
- `system.run` executes in the macOS app (UI/TCC context) over a local Unix socket; prompts + output stay in-app.
|
|
67
|
+
|
|
68
|
+
Diagram (SCI):
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Gateway -> Node Service (WS)
|
|
72
|
+
| IPC (UDS + token + HMAC + TTL)
|
|
73
|
+
v
|
|
74
|
+
Mac App (UI + TCC + system.run)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Exec approvals (system.run)
|
|
78
|
+
|
|
79
|
+
`system.run` is controlled by **Exec approvals** in the macOS app (Settings → Exec approvals).
|
|
80
|
+
Security + ask + allowlist are stored locally on the Mac in:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
~/.openclaw/exec-approvals.json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Example:
|
|
87
|
+
|
|
88
|
+
```json
|
|
89
|
+
{
|
|
90
|
+
"version": 1,
|
|
91
|
+
"defaults": {
|
|
92
|
+
"security": "deny",
|
|
93
|
+
"ask": "on-miss"
|
|
94
|
+
},
|
|
95
|
+
"agents": {
|
|
96
|
+
"main": {
|
|
97
|
+
"security": "allowlist",
|
|
98
|
+
"ask": "on-miss",
|
|
99
|
+
"allowlist": [{ "pattern": "/opt/homebrew/bin/rg" }]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Notes:
|
|
106
|
+
|
|
107
|
+
- `allowlist` entries are glob patterns for resolved binary paths, or bare command names for PATH-invoked commands.
|
|
108
|
+
- Raw shell command text that contains shell control or expansion syntax (`&&`, `||`, `;`, `|`, `` ` ``, `$`, `<`, `>`, `(`, `)`) is treated as an allowlist miss and requires explicit approval (or allowlisting the shell binary).
|
|
109
|
+
- Choosing "Always Allow" in the prompt adds that command to the allowlist.
|
|
110
|
+
- `system.run` environment overrides are filtered (drops `PATH`, `DYLD_*`, `LD_*`, `BASHOPTS`, `FPATH`, `KSH_ENV`, `NODE_OPTIONS`, `NODE_REDIRECT_WARNINGS`, `NODE_REPL_EXTERNAL_MODULE`, `NODE_REPL_HISTORY`, `NODE_V8_COVERAGE`, `PYTHON*`, `PERL*`, `RUBYOPT`, `SHELLOPTS`, `PS4`, `TCLLIBPATH`) and then merged with the app's environment.
|
|
111
|
+
- For shell wrappers (`bash|sh|zsh ... -c/-lc`), request-scoped environment overrides are reduced to a small explicit allowlist (`TERM`, `LANG`, `LC_*`, `COLORTERM`, `NO_COLOR`, `FORCE_COLOR`).
|
|
112
|
+
- 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.
|
|
113
|
+
|
|
114
|
+
## Deep links
|
|
115
|
+
|
|
116
|
+
The app registers the `openclaw://` URL scheme for local actions.
|
|
117
|
+
|
|
118
|
+
### `openclaw://agent`
|
|
119
|
+
|
|
120
|
+
Triggers a Gateway `agent` request.
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
open 'openclaw://agent?message=Hello%20from%20deep%20link'
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Query parameters:
|
|
127
|
+
|
|
128
|
+
- `message` (required)
|
|
129
|
+
- `sessionKey` (optional)
|
|
130
|
+
- `thinking` (optional)
|
|
131
|
+
- `deliver` / `to` / `channel` (optional)
|
|
132
|
+
- `timeoutSeconds` (optional)
|
|
133
|
+
- `key` (optional unattended mode key)
|
|
134
|
+
|
|
135
|
+
Safety:
|
|
136
|
+
|
|
137
|
+
- Without `key`, the app prompts for confirmation.
|
|
138
|
+
- Without `key`, the app enforces a short message limit for the confirmation prompt and ignores `deliver` / `to` / `channel`.
|
|
139
|
+
- With a valid `key`, the run is unattended (intended for personal automations).
|
|
140
|
+
|
|
141
|
+
## Onboarding flow (typical)
|
|
142
|
+
|
|
143
|
+
1. Install and launch **OpenClaw.app**.
|
|
144
|
+
2. Complete the permissions checklist (TCC prompts).
|
|
145
|
+
3. Ensure **Local** mode is active and the Gateway is running.
|
|
146
|
+
4. Install the CLI if you want terminal access.
|
|
147
|
+
|
|
148
|
+
## State dir placement (macOS)
|
|
149
|
+
|
|
150
|
+
Avoid putting your OpenClaw state dir in iCloud or other cloud-synced folders.
|
|
151
|
+
Sync-backed paths can add latency and occasionally cause file-lock/sync races for
|
|
152
|
+
sessions and credentials.
|
|
153
|
+
|
|
154
|
+
Prefer a local non-synced state path such as:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
OPENCLAW_STATE_DIR=~/.openclaw
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
If `openclaw doctor` detects state under:
|
|
161
|
+
|
|
162
|
+
- `~/Library/Mobile Documents/com~apple~CloudDocs/...`
|
|
163
|
+
- `~/Library/CloudStorage/...`
|
|
164
|
+
|
|
165
|
+
it will warn and recommend moving back to a local path.
|
|
166
|
+
|
|
167
|
+
## Build and dev workflow (native)
|
|
168
|
+
|
|
169
|
+
- `cd apps/macos && swift build`
|
|
170
|
+
- `swift run OpenClaw` (or Xcode)
|
|
171
|
+
- Package app: `scripts/package-mac-app.sh`
|
|
172
|
+
|
|
173
|
+
## Debug gateway connectivity (macOS CLI)
|
|
174
|
+
|
|
175
|
+
Use the debug CLI to exercise the same Gateway WebSocket handshake and discovery
|
|
176
|
+
logic that the macOS app uses, without launching the app.
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
cd apps/macos
|
|
180
|
+
swift run openclaw-mac connect --json
|
|
181
|
+
swift run openclaw-mac discover --timeout 3000 --json
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Connect options:
|
|
185
|
+
|
|
186
|
+
- `--url <ws://host:port>`: override config
|
|
187
|
+
- `--mode <local|remote>`: resolve from config (default: config or local)
|
|
188
|
+
- `--probe`: force a fresh health probe
|
|
189
|
+
- `--timeout <ms>`: request timeout (default: `15000`)
|
|
190
|
+
- `--json`: structured output for diffing
|
|
191
|
+
|
|
192
|
+
Discovery options:
|
|
193
|
+
|
|
194
|
+
- `--include-local`: include gateways that would be filtered as "local"
|
|
195
|
+
- `--timeout <ms>`: overall discovery window (default: `2000`)
|
|
196
|
+
- `--json`: structured output for diffing
|
|
197
|
+
|
|
198
|
+
<Tip>
|
|
199
|
+
Compare against `openclaw gateway discover --json` to see whether the macOS app's discovery pipeline (`local.` plus the configured wide-area domain, with wide-area and Tailscale Serve fallbacks) differs from the Node CLI's `dns-sd` based discovery.
|
|
200
|
+
</Tip>
|
|
201
|
+
|
|
202
|
+
## Remote connection plumbing (SSH tunnels)
|
|
203
|
+
|
|
204
|
+
When the macOS app runs in **Remote** mode, it opens an SSH tunnel so local UI
|
|
205
|
+
components can talk to a remote Gateway as if it were on localhost.
|
|
206
|
+
|
|
207
|
+
### Control tunnel (Gateway WebSocket port)
|
|
208
|
+
|
|
209
|
+
- **Purpose:** health checks, status, Web Chat, config, and other control-plane calls.
|
|
210
|
+
- **Local port:** the Gateway port (default `18789`), always stable.
|
|
211
|
+
- **Remote port:** the same Gateway port on the remote host.
|
|
212
|
+
- **Behavior:** no random local port; the app reuses an existing healthy tunnel
|
|
213
|
+
or restarts it if needed.
|
|
214
|
+
- **SSH shape:** `ssh -N -L <local>:127.0.0.1:<remote>` with BatchMode +
|
|
215
|
+
ExitOnForwardFailure + keepalive options.
|
|
216
|
+
- **IP reporting:** the SSH tunnel uses loopback, so the gateway will see the node
|
|
217
|
+
IP as `127.0.0.1`. Use **Direct (ws/wss)** transport if you want the real client
|
|
218
|
+
IP to appear (see [macOS remote access](/platforms/mac/remote)).
|
|
219
|
+
|
|
220
|
+
For setup steps, see [macOS remote access](/platforms/mac/remote). For protocol
|
|
221
|
+
details, see [Gateway protocol](/gateway/protocol).
|
|
222
|
+
|
|
223
|
+
## Related docs
|
|
224
|
+
|
|
225
|
+
- [Gateway runbook](/gateway)
|
|
226
|
+
- [Gateway (macOS)](/platforms/mac/bundled-gateway)
|
|
227
|
+
- [macOS permissions](/platforms/mac/permissions)
|
|
228
|
+
- [Canvas](/platforms/mac/canvas)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Redirect to /install/raspberry-pi"
|
|
3
|
+
title: "Raspberry Pi (platform)"
|
|
4
|
+
redirect: /install/raspberry-pi
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
This page has moved to [Raspberry Pi](/install/raspberry-pi).
|
|
8
|
+
|
|
9
|
+
## Related
|
|
10
|
+
|
|
11
|
+
- [Install overview](/install)
|
|
12
|
+
- [Linux server](/vps)
|
|
13
|
+
- [Platforms](/platforms)
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Windows support: Windows Hub, native CLI and Gateway, WSL2 gateway setup, node mode, and troubleshooting"
|
|
3
|
+
read_when:
|
|
4
|
+
- Installing OpenClaw on Windows
|
|
5
|
+
- Choosing between Windows Hub, native Windows, and WSL2
|
|
6
|
+
- Setting up the Windows companion app or Windows node mode
|
|
7
|
+
title: "Windows"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
OpenClaw ships a native **Windows Hub** companion app plus Windows CLI support.
|
|
11
|
+
Use Windows Hub when you want a desktop app with setup, tray status, chat,
|
|
12
|
+
Command Center diagnostics, and Windows node capabilities. Use the PowerShell
|
|
13
|
+
installer when you want the CLI/Gateway directly. Use WSL2 when you want the
|
|
14
|
+
most Linux-compatible Gateway runtime.
|
|
15
|
+
|
|
16
|
+
## Recommended: Windows Hub
|
|
17
|
+
|
|
18
|
+
Windows Hub is the native WinUI companion app for Windows 10 20H2+ and Windows 11. It installs without administrator privileges and is published with signed
|
|
19
|
+
x64 and ARM64 installers on OpenClaw releases.
|
|
20
|
+
|
|
21
|
+
Download the latest stable installer:
|
|
22
|
+
|
|
23
|
+
- [OpenClawCompanion-Setup-x64.exe](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-Setup-x64.exe)
|
|
24
|
+
- [OpenClawCompanion-Setup-arm64.exe](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-Setup-arm64.exe)
|
|
25
|
+
- [Checksums](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-SHA256SUMS.txt)
|
|
26
|
+
|
|
27
|
+
After install, launch **OpenClaw Companion** from the Start menu or the system
|
|
28
|
+
tray. The installer also adds shortcuts for Gateway Setup, Chat, Settings,
|
|
29
|
+
Check for Updates, and uninstall.
|
|
30
|
+
|
|
31
|
+
### What Windows Hub includes
|
|
32
|
+
|
|
33
|
+
- system tray status and launch-at-login
|
|
34
|
+
- first-run setup for a local app-owned WSL Gateway
|
|
35
|
+
- connection settings for local, remote, and SSH-tunneled Gateways
|
|
36
|
+
- native chat window plus access to the browser Control UI
|
|
37
|
+
- Command Center diagnostics for sessions, usage, channels, nodes, pairing, and
|
|
38
|
+
repair commands
|
|
39
|
+
- Windows node mode for agent-controlled canvas, screen, camera, notifications,
|
|
40
|
+
device status, text-to-speech, speech-to-text, and controlled `system.run`
|
|
41
|
+
- local MCP server mode for MCP clients such as Claude Desktop, Claude Code, and
|
|
42
|
+
Cursor
|
|
43
|
+
|
|
44
|
+
### First launch
|
|
45
|
+
|
|
46
|
+
On first launch, Windows Hub opens setup when there is no usable saved Gateway.
|
|
47
|
+
The fastest path is **Set up locally**, which provisions an app-owned
|
|
48
|
+
`OpenClawGateway` WSL distro, installs the Gateway inside it, and pairs the app.
|
|
49
|
+
This does not export or mutate your existing Ubuntu distro.
|
|
50
|
+
|
|
51
|
+
Choose **Advanced setup** or open the Connections tab when you already have a
|
|
52
|
+
Gateway. You can connect to:
|
|
53
|
+
|
|
54
|
+
- a local Gateway on this PC
|
|
55
|
+
- a WSL Gateway on this PC
|
|
56
|
+
- a remote Gateway by URL and token or setup code
|
|
57
|
+
- a Gateway reached through an SSH tunnel
|
|
58
|
+
|
|
59
|
+
When setup finishes, the tray icon turns green. Open **Command Center** from the
|
|
60
|
+
tray to confirm connection, pairing, node status, and channel health.
|
|
61
|
+
|
|
62
|
+
## Windows node mode
|
|
63
|
+
|
|
64
|
+
Windows Hub can register as a first-class OpenClaw node. The agent can then use
|
|
65
|
+
declared Windows-native capabilities through the Gateway.
|
|
66
|
+
|
|
67
|
+
Common commands include:
|
|
68
|
+
|
|
69
|
+
- `canvas.present`, `canvas.hide`, `canvas.navigate`, `canvas.eval`,
|
|
70
|
+
`canvas.snapshot`
|
|
71
|
+
- `screen.snapshot` and, with explicit opt-in, `screen.record`
|
|
72
|
+
- `camera.list` and, with explicit opt-in, `camera.snap`, `camera.clip`
|
|
73
|
+
- `system.notify`, `system.run`, `system.run.prepare`, `system.which`
|
|
74
|
+
- `location.get`, `device.info`, `device.status`
|
|
75
|
+
- `stt.transcribe`, `tts.speak`
|
|
76
|
+
|
|
77
|
+
Node mode requires Gateway pairing. If the app shows a pairing request, approve
|
|
78
|
+
it from the Gateway host:
|
|
79
|
+
|
|
80
|
+
```powershell
|
|
81
|
+
openclaw devices list
|
|
82
|
+
openclaw devices approve <request-id>
|
|
83
|
+
openclaw nodes status
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The Gateway only forwards commands that the node declares and server policy
|
|
87
|
+
allows. Privacy-sensitive commands such as `screen.record`, `camera.snap`, and
|
|
88
|
+
`camera.clip` require explicit `gateway.nodes.allowCommands` opt-in.
|
|
89
|
+
|
|
90
|
+
## Local MCP mode
|
|
91
|
+
|
|
92
|
+
Windows Hub can expose the same Windows-native capability registry as a local
|
|
93
|
+
MCP server on loopback. This is useful when you want local MCP clients to drive
|
|
94
|
+
Windows capabilities without a running OpenClaw Gateway.
|
|
95
|
+
|
|
96
|
+
Enable it in Windows Hub Settings under the developer/advanced section. The app
|
|
97
|
+
shows the loopback endpoint and bearer token after the server is enabled.
|
|
98
|
+
|
|
99
|
+
Mode matrix:
|
|
100
|
+
|
|
101
|
+
| Node mode | MCP server | Behavior |
|
|
102
|
+
| --------- | ---------- | ---------------------------------- |
|
|
103
|
+
| off | off | Operator-only desktop app |
|
|
104
|
+
| on | off | Gateway-connected Windows node |
|
|
105
|
+
| off | on | Local MCP server only |
|
|
106
|
+
| on | on | Gateway node plus local MCP server |
|
|
107
|
+
|
|
108
|
+
## Native Windows CLI and Gateway
|
|
109
|
+
|
|
110
|
+
For terminal-first use, install OpenClaw from PowerShell:
|
|
111
|
+
|
|
112
|
+
```powershell
|
|
113
|
+
iwr -useb https://openclaw.ai/install.ps1 | iex
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Verify:
|
|
117
|
+
|
|
118
|
+
```powershell
|
|
119
|
+
openclaw --version
|
|
120
|
+
openclaw doctor
|
|
121
|
+
openclaw gateway status --json
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Native Windows CLI and Gateway flows are supported and continue to improve.
|
|
125
|
+
Managed startup uses Windows Scheduled Tasks when available and falls back to a
|
|
126
|
+
per-user Startup-folder login item if task creation is denied.
|
|
127
|
+
|
|
128
|
+
To install the Gateway service:
|
|
129
|
+
|
|
130
|
+
```powershell
|
|
131
|
+
openclaw gateway install
|
|
132
|
+
openclaw gateway status --json
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
If you only want CLI use without a managed Gateway service:
|
|
136
|
+
|
|
137
|
+
```powershell
|
|
138
|
+
openclaw onboard --non-interactive --skip-health
|
|
139
|
+
openclaw gateway run
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## WSL2 Gateway
|
|
143
|
+
|
|
144
|
+
WSL2 remains the most Linux-compatible Gateway runtime on Windows. Windows Hub
|
|
145
|
+
can set up an app-owned WSL Gateway for you, or you can install manually inside
|
|
146
|
+
your own distro.
|
|
147
|
+
|
|
148
|
+
Manual setup:
|
|
149
|
+
|
|
150
|
+
```powershell
|
|
151
|
+
wsl --install
|
|
152
|
+
# Or pick a distro explicitly:
|
|
153
|
+
wsl --list --online
|
|
154
|
+
wsl --install -d Ubuntu-24.04
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Enable systemd inside WSL:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
sudo tee /etc/wsl.conf >/dev/null <<'EOF'
|
|
161
|
+
[boot]
|
|
162
|
+
systemd=true
|
|
163
|
+
EOF
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Restart WSL from PowerShell:
|
|
167
|
+
|
|
168
|
+
```powershell
|
|
169
|
+
wsl --shutdown
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Then install OpenClaw inside WSL with the Linux quickstart:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
curl -fsSL https://openclaw.ai/install.sh | bash
|
|
176
|
+
openclaw gateway status
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Gateway auto-start before Windows login
|
|
180
|
+
|
|
181
|
+
For headless WSL setups, ensure the full boot chain runs even when no one logs
|
|
182
|
+
into Windows.
|
|
183
|
+
|
|
184
|
+
Inside WSL:
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
sudo loginctl enable-linger "$(whoami)"
|
|
188
|
+
openclaw gateway install
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
In PowerShell as Administrator:
|
|
192
|
+
|
|
193
|
+
```powershell
|
|
194
|
+
schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEM
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Replace `Ubuntu` with your distro name from:
|
|
198
|
+
|
|
199
|
+
```powershell
|
|
200
|
+
wsl --list --verbose
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
After reboot, verify from WSL:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
systemctl --user is-enabled openclaw-gateway.service
|
|
207
|
+
systemctl --user status openclaw-gateway.service --no-pager
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Expose WSL services over LAN
|
|
211
|
+
|
|
212
|
+
WSL has its own virtual network. If another machine must reach a service inside
|
|
213
|
+
WSL, forward a Windows port to the current WSL IP. The WSL IP can change after
|
|
214
|
+
restarts, so refresh the forwarding rule when needed.
|
|
215
|
+
|
|
216
|
+
Example in PowerShell as Administrator:
|
|
217
|
+
|
|
218
|
+
```powershell
|
|
219
|
+
$Distro = "Ubuntu-24.04"
|
|
220
|
+
$ListenPort = 2222
|
|
221
|
+
$TargetPort = 22
|
|
222
|
+
|
|
223
|
+
$WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]
|
|
224
|
+
if (-not $WslIp) { throw "WSL IP not found." }
|
|
225
|
+
|
|
226
|
+
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort `
|
|
227
|
+
connectaddress=$WslIp connectport=$TargetPort
|
|
228
|
+
|
|
229
|
+
New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound `
|
|
230
|
+
-Protocol TCP -LocalPort $ListenPort -Action Allow
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Notes:
|
|
234
|
+
|
|
235
|
+
- SSH from another machine targets the Windows host IP, for example
|
|
236
|
+
`ssh user@windows-host -p 2222`.
|
|
237
|
+
- Remote nodes must point at a reachable Gateway URL, not `127.0.0.1`.
|
|
238
|
+
- Use `listenaddress=0.0.0.0` for LAN access. Use `127.0.0.1` for local-only
|
|
239
|
+
access.
|
|
240
|
+
|
|
241
|
+
## Troubleshooting
|
|
242
|
+
|
|
243
|
+
### The tray icon does not appear
|
|
244
|
+
|
|
245
|
+
Check Task Manager for `OpenClaw.Tray.WinUI.exe`. If it is running, open the
|
|
246
|
+
hidden tray-icons area and pin it. If it is not running, launch **OpenClaw
|
|
247
|
+
Companion** from the Start menu.
|
|
248
|
+
|
|
249
|
+
### Local setup fails
|
|
250
|
+
|
|
251
|
+
Open the setup log from Windows Hub or inspect:
|
|
252
|
+
|
|
253
|
+
```powershell
|
|
254
|
+
notepad "$env:LOCALAPPDATA\OpenClawTray\Logs\Setup\easy-setup-latest.txt"
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
Common causes are disabled WSL, blocked virtualization, stale app-owned WSL
|
|
258
|
+
state, or a network failure while installing the Gateway package.
|
|
259
|
+
|
|
260
|
+
### The app says pairing is required
|
|
261
|
+
|
|
262
|
+
Approve the operator or node request from the Gateway:
|
|
263
|
+
|
|
264
|
+
```powershell
|
|
265
|
+
openclaw devices list
|
|
266
|
+
openclaw devices approve <request-id>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
If the device already had a token, reconnect from the Connections tab after
|
|
270
|
+
approval.
|
|
271
|
+
|
|
272
|
+
### Web chat cannot reach a remote Gateway
|
|
273
|
+
|
|
274
|
+
Remote web chat needs HTTPS or localhost. For self-signed certificates, trust
|
|
275
|
+
the certificate in Windows, or use an SSH tunnel to a localhost URL.
|
|
276
|
+
|
|
277
|
+
### `screen.snapshot`, camera, or audio commands fail
|
|
278
|
+
|
|
279
|
+
Confirm Windows permissions for camera, microphone, screen capture, and
|
|
280
|
+
notifications. Packaged installs declare the protected capabilities, but Windows
|
|
281
|
+
may still prompt the first time a command uses them.
|
|
282
|
+
|
|
283
|
+
### Git or GitHub connectivity fails
|
|
284
|
+
|
|
285
|
+
Some networks block or throttle HTTPS to GitHub. If `git clone` or `gh auth
|
|
286
|
+
login` fails, try another network, a VPN, or an HTTP/HTTPS proxy.
|
|
287
|
+
|
|
288
|
+
For token-based `gh` auth in the current session:
|
|
289
|
+
|
|
290
|
+
```powershell
|
|
291
|
+
$env:GH_TOKEN="<your-token>"
|
|
292
|
+
gh auth status
|
|
293
|
+
gh auth setup-git
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Never commit tokens or paste them into issues or pull requests.
|
|
297
|
+
|
|
298
|
+
## Related
|
|
299
|
+
|
|
300
|
+
- [Install overview](/install)
|
|
301
|
+
- [Node.js setup](/install/node)
|
|
302
|
+
- [Nodes](/nodes)
|
|
303
|
+
- [Control UI](/web/control-ui)
|
|
304
|
+
- [Gateway configuration](/gateway/configuration)
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Contributor guide for adding a new shared capability to the OpenClaw plugin system"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding a new core capability and plugin registration surface
|
|
5
|
+
- Deciding whether code belongs in core, a vendor plugin, or a feature plugin
|
|
6
|
+
- Wiring a new runtime helper for channels or tools
|
|
7
|
+
title: "Adding capabilities (contributor guide)"
|
|
8
|
+
sidebarTitle: "Adding capabilities"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<Info>
|
|
12
|
+
This is a **contributor guide** for OpenClaw core developers. If you are
|
|
13
|
+
building an external plugin, see [Building plugins](/plugins/building-plugins)
|
|
14
|
+
instead. For the deep architecture reference (capability model, ownership,
|
|
15
|
+
load pipeline, runtime helpers), see [Plugin internals](/plugins/architecture).
|
|
16
|
+
</Info>
|
|
17
|
+
|
|
18
|
+
Use this when OpenClaw needs a new shared domain such as embeddings, image
|
|
19
|
+
generation, video generation, or some future vendor-backed feature area.
|
|
20
|
+
|
|
21
|
+
The rule:
|
|
22
|
+
|
|
23
|
+
- **plugin** = ownership boundary
|
|
24
|
+
- **capability** = shared core contract
|
|
25
|
+
|
|
26
|
+
Do not start by wiring a vendor directly into a channel or a tool. Start by defining the capability.
|
|
27
|
+
|
|
28
|
+
## When to create a capability
|
|
29
|
+
|
|
30
|
+
Create a new capability when **all** of these are true:
|
|
31
|
+
|
|
32
|
+
1. More than one vendor could plausibly implement it.
|
|
33
|
+
2. Channels, tools, or feature plugins should consume it without caring about the vendor.
|
|
34
|
+
3. Core needs to own fallback, policy, config, or delivery behavior.
|
|
35
|
+
|
|
36
|
+
If the work is vendor-only and no shared contract exists yet, stop and define the contract first.
|
|
37
|
+
|
|
38
|
+
## The standard sequence
|
|
39
|
+
|
|
40
|
+
1. Define the typed core contract.
|
|
41
|
+
2. Add plugin registration for that contract.
|
|
42
|
+
3. Add a shared runtime helper.
|
|
43
|
+
4. Wire one real vendor plugin as proof.
|
|
44
|
+
5. Move feature/channel consumers onto the runtime helper.
|
|
45
|
+
6. Add contract tests.
|
|
46
|
+
7. Document the operator-facing config and ownership model.
|
|
47
|
+
|
|
48
|
+
## What goes where
|
|
49
|
+
|
|
50
|
+
**Core:**
|
|
51
|
+
|
|
52
|
+
- Request/response types.
|
|
53
|
+
- Provider registry + resolution.
|
|
54
|
+
- Fallback behavior.
|
|
55
|
+
- Config schema with propagated `title` / `description` docs metadata on nested object, wildcard, array-item, and composition nodes.
|
|
56
|
+
- Runtime helper surface.
|
|
57
|
+
|
|
58
|
+
**Vendor plugin:**
|
|
59
|
+
|
|
60
|
+
- Vendor API calls.
|
|
61
|
+
- Vendor auth handling.
|
|
62
|
+
- Vendor-specific request normalization.
|
|
63
|
+
- Registration of the capability implementation.
|
|
64
|
+
|
|
65
|
+
**Feature/channel plugin:**
|
|
66
|
+
|
|
67
|
+
- Calls `api.runtime.*` or the matching `plugin-sdk/*-runtime` helper.
|
|
68
|
+
- Never calls a vendor implementation directly.
|
|
69
|
+
|
|
70
|
+
## Provider and harness seams
|
|
71
|
+
|
|
72
|
+
Use **provider hooks** when the behavior belongs to the model provider contract rather than the generic agent loop. Examples include provider-specific request params after transport selection, auth-profile preference, prompt overlays, and follow-up fallback routing after model/profile failover.
|
|
73
|
+
|
|
74
|
+
Use **agent harness hooks** when the behavior belongs to the runtime that is executing a turn. Harnesses can classify successful-but-unusable attempt results such as empty, reasoning-only, or planning-only responses so the outer model fallback policy can make the retry decision.
|
|
75
|
+
|
|
76
|
+
Keep both seams narrow:
|
|
77
|
+
|
|
78
|
+
- Core owns the retry/fallback policy.
|
|
79
|
+
- Provider plugins own provider-specific request/auth/routing hints.
|
|
80
|
+
- Harness plugins own runtime-specific attempt classification.
|
|
81
|
+
- Third-party plugins return hints, not direct mutations of core state.
|
|
82
|
+
|
|
83
|
+
## File checklist
|
|
84
|
+
|
|
85
|
+
For a new capability, expect to touch these areas:
|
|
86
|
+
|
|
87
|
+
- `src/<capability>/types.ts`
|
|
88
|
+
- `src/<capability>/...registry/runtime.ts`
|
|
89
|
+
- `src/plugins/types.ts`
|
|
90
|
+
- `src/plugins/registry.ts`
|
|
91
|
+
- `src/plugins/captured-registration.ts`
|
|
92
|
+
- `src/plugins/contracts/registry.ts`
|
|
93
|
+
- `src/plugins/runtime/types-core.ts`
|
|
94
|
+
- `src/plugins/runtime/index.ts`
|
|
95
|
+
- `src/plugin-sdk/<capability>.ts`
|
|
96
|
+
- `src/plugin-sdk/<capability>-runtime.ts`
|
|
97
|
+
- One or more bundled plugin packages.
|
|
98
|
+
- Config, docs, tests.
|
|
99
|
+
|
|
100
|
+
## Worked example: image generation
|
|
101
|
+
|
|
102
|
+
Image generation follows the standard shape:
|
|
103
|
+
|
|
104
|
+
1. Core defines `ImageGenerationProvider`.
|
|
105
|
+
2. Core exposes `registerImageGenerationProvider(...)`.
|
|
106
|
+
3. Core exposes `runtime.imageGeneration.generate(...)`.
|
|
107
|
+
4. The `openai`, `google`, `fal`, and `minimax` plugins register vendor-backed implementations.
|
|
108
|
+
5. Future vendors register the same contract without changing channels/tools.
|
|
109
|
+
|
|
110
|
+
The config key is intentionally separate from vision-analysis routing:
|
|
111
|
+
|
|
112
|
+
- `agents.defaults.imageModel` analyzes images.
|
|
113
|
+
- `agents.defaults.imageGenerationModel` generates images.
|
|
114
|
+
|
|
115
|
+
Keep those separate so fallback and policy remain explicit.
|
|
116
|
+
|
|
117
|
+
## Embedding providers
|
|
118
|
+
|
|
119
|
+
Use `embeddingProviders` for reusable vector embedding providers. This contract
|
|
120
|
+
is intentionally broader than memory: tools, search, retrieval, importers, or
|
|
121
|
+
future feature plugins can consume embeddings without depending on the memory
|
|
122
|
+
engine.
|
|
123
|
+
|
|
124
|
+
Memory search can consume generic `embeddingProviders`. The older
|
|
125
|
+
`memoryEmbeddingProviders` contract is deprecated compatibility while existing
|
|
126
|
+
memory-specific providers migrate; new reusable embedding providers should use
|
|
127
|
+
`embeddingProviders`.
|
|
128
|
+
|
|
129
|
+
## Review checklist
|
|
130
|
+
|
|
131
|
+
Before shipping a new capability, verify:
|
|
132
|
+
|
|
133
|
+
- No channel/tool imports vendor code directly.
|
|
134
|
+
- The runtime helper is the shared path.
|
|
135
|
+
- At least one contract test asserts bundled ownership.
|
|
136
|
+
- Config docs name the new model/config key.
|
|
137
|
+
- Plugin docs explain the ownership boundary.
|
|
138
|
+
|
|
139
|
+
If a PR skips the capability layer and hardcodes vendor behavior into a channel/tool, send it back and define the contract first.
|
|
140
|
+
|
|
141
|
+
## Related
|
|
142
|
+
|
|
143
|
+
- [Plugin internals](/plugins/architecture) — capability model, ownership, load pipeline, runtime helpers.
|
|
144
|
+
- [Building plugins](/plugins/building-plugins) — first-plugin tutorial.
|
|
145
|
+
- [SDK overview](/plugins/sdk-overview) — import map and registration API reference.
|
|
146
|
+
- [Creating skills](/tools/creating-skills) — companion contributor surface.
|