durar-ai 2026.4.4
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 +5497 -0
- package/LICENSE +21 -0
- package/README.md +614 -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 +72 -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 +5 -0
- package/docs/.i18n/glossary.de.json +5 -0
- package/docs/.i18n/glossary.es.json +5 -0
- package/docs/.i18n/glossary.fr.json +5 -0
- package/docs/.i18n/glossary.id.json +5 -0
- package/docs/.i18n/glossary.it.json +5 -0
- package/docs/.i18n/glossary.ja-JP.json +14 -0
- package/docs/.i18n/glossary.ko.json +5 -0
- package/docs/.i18n/glossary.pl.json +5 -0
- package/docs/.i18n/glossary.pt-BR.json +5 -0
- package/docs/.i18n/glossary.tr.json +5 -0
- package/docs/.i18n/glossary.zh-CN.json +358 -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/zh-Hans-navigation.json +544 -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/openclaw-logo-text-dark.png +0 -0
- package/docs/assets/openclaw-logo-text-dark.svg +418 -0
- package/docs/assets/openclaw-logo-text.png +0 -0
- package/docs/assets/openclaw-logo-text.svg +418 -0
- package/docs/assets/pixel-lobster.svg +60 -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-light.svg +14 -0
- package/docs/assets/sponsors/blacksmith.svg +14 -0
- package/docs/assets/sponsors/convex-light.svg +16 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/github-light.svg +3 -0
- package/docs/assets/sponsors/github.svg +3 -0
- package/docs/assets/sponsors/nvidia-dark.svg +9 -0
- package/docs/assets/sponsors/nvidia.svg +9 -0
- package/docs/assets/sponsors/openai-light.svg +3 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel-light.svg +5 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +80 -0
- package/docs/automation/auth-monitoring.md +8 -0
- package/docs/automation/clawflow.md +8 -0
- package/docs/automation/cron-jobs.md +410 -0
- package/docs/automation/cron-vs-heartbeat.md +8 -0
- package/docs/automation/gmail-pubsub.md +8 -0
- package/docs/automation/hooks.md +303 -0
- package/docs/automation/index.md +115 -0
- package/docs/automation/poll.md +8 -0
- package/docs/automation/standing-orders.md +254 -0
- package/docs/automation/taskflow.md +82 -0
- package/docs/automation/tasks.md +323 -0
- package/docs/automation/troubleshooting.md +8 -0
- package/docs/automation/webhook.md +8 -0
- package/docs/brave-search.md +103 -0
- package/docs/channels/bluebubbles.md +435 -0
- package/docs/channels/broadcast-groups.md +442 -0
- package/docs/channels/channel-routing.md +139 -0
- package/docs/channels/discord.md +1254 -0
- package/docs/channels/feishu.md +793 -0
- package/docs/channels/googlechat.md +270 -0
- package/docs/channels/group-messages.md +84 -0
- package/docs/channels/groups.md +410 -0
- package/docs/channels/imessage.md +427 -0
- package/docs/channels/index.md +50 -0
- package/docs/channels/irc.md +252 -0
- package/docs/channels/line.md +225 -0
- package/docs/channels/location.md +56 -0
- package/docs/channels/matrix.md +869 -0
- package/docs/channels/mattermost.md +472 -0
- package/docs/channels/msteams.md +805 -0
- package/docs/channels/nextcloud-talk.md +149 -0
- package/docs/channels/nostr.md +252 -0
- package/docs/channels/pairing.md +129 -0
- package/docs/channels/qqbot.md +193 -0
- package/docs/channels/signal.md +337 -0
- package/docs/channels/slack.md +681 -0
- package/docs/channels/synology-chat.md +185 -0
- package/docs/channels/telegram.md +1072 -0
- package/docs/channels/tlon.md +290 -0
- package/docs/channels/troubleshooting.md +133 -0
- package/docs/channels/twitch.md +394 -0
- package/docs/channels/whatsapp.md +488 -0
- package/docs/channels/zalo.md +254 -0
- package/docs/channels/zalouser.md +195 -0
- package/docs/ci.md +66 -0
- package/docs/cli/acp.md +316 -0
- package/docs/cli/agent.md +57 -0
- package/docs/cli/agents.md +220 -0
- package/docs/cli/approvals.md +136 -0
- package/docs/cli/backup.md +84 -0
- package/docs/cli/browser.md +233 -0
- package/docs/cli/channels.md +131 -0
- package/docs/cli/clawbot.md +21 -0
- package/docs/cli/completion.md +35 -0
- package/docs/cli/config.md +353 -0
- package/docs/cli/configure.md +70 -0
- package/docs/cli/cron.md +167 -0
- package/docs/cli/daemon.md +57 -0
- package/docs/cli/dashboard.md +22 -0
- package/docs/cli/devices.md +171 -0
- package/docs/cli/directory.md +63 -0
- package/docs/cli/dns.md +48 -0
- package/docs/cli/docs.md +28 -0
- package/docs/cli/doctor.md +63 -0
- package/docs/cli/flows.md +18 -0
- package/docs/cli/gateway.md +307 -0
- package/docs/cli/health.md +36 -0
- package/docs/cli/hooks.md +337 -0
- package/docs/cli/index.md +1836 -0
- package/docs/cli/logs.md +59 -0
- package/docs/cli/mcp.md +505 -0
- package/docs/cli/memory.md +139 -0
- package/docs/cli/message.md +300 -0
- package/docs/cli/models.md +136 -0
- package/docs/cli/node.md +137 -0
- package/docs/cli/nodes.md +66 -0
- package/docs/cli/onboard.md +171 -0
- package/docs/cli/pairing.md +65 -0
- package/docs/cli/plugins.md +305 -0
- package/docs/cli/qr.md +52 -0
- package/docs/cli/reset.md +35 -0
- package/docs/cli/sandbox.md +197 -0
- package/docs/cli/secrets.md +197 -0
- package/docs/cli/security.md +86 -0
- package/docs/cli/sessions.md +113 -0
- package/docs/cli/setup.md +45 -0
- package/docs/cli/skills.md +59 -0
- package/docs/cli/status.md +35 -0
- package/docs/cli/system.md +71 -0
- package/docs/cli/tui.md +30 -0
- package/docs/cli/uninstall.md +39 -0
- package/docs/cli/update.md +113 -0
- package/docs/cli/voicecall.md +34 -0
- package/docs/cli/webhooks.md +91 -0
- package/docs/concepts/agent-loop.md +168 -0
- package/docs/concepts/agent-workspace.md +246 -0
- package/docs/concepts/agent.md +129 -0
- package/docs/concepts/architecture.md +156 -0
- package/docs/concepts/compaction.md +122 -0
- package/docs/concepts/context-engine.md +274 -0
- package/docs/concepts/context.md +179 -0
- package/docs/concepts/delegate-architecture.md +307 -0
- package/docs/concepts/dreaming.md +173 -0
- package/docs/concepts/features.md +76 -0
- package/docs/concepts/markdown-formatting.md +130 -0
- package/docs/concepts/memory-builtin.md +105 -0
- package/docs/concepts/memory-honcho.md +140 -0
- package/docs/concepts/memory-qmd.md +163 -0
- package/docs/concepts/memory-search.md +141 -0
- package/docs/concepts/memory.md +121 -0
- package/docs/concepts/messages.md +161 -0
- package/docs/concepts/model-failover.md +349 -0
- package/docs/concepts/model-providers.md +799 -0
- package/docs/concepts/models.md +255 -0
- package/docs/concepts/multi-agent.md +615 -0
- package/docs/concepts/oauth.md +225 -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 +92 -0
- package/docs/concepts/session-tool.md +141 -0
- package/docs/concepts/session.md +116 -0
- package/docs/concepts/soul.md +110 -0
- package/docs/concepts/streaming.md +161 -0
- package/docs/concepts/system-prompt.md +182 -0
- package/docs/concepts/timezone.md +97 -0
- package/docs/concepts/typebox.md +307 -0
- package/docs/concepts/typing-indicators.md +69 -0
- package/docs/concepts/usage-tracking.md +59 -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 +1601 -0
- package/docs/gateway/authentication.md +218 -0
- package/docs/gateway/background-process.md +131 -0
- package/docs/gateway/bonjour.md +179 -0
- package/docs/gateway/bridge-protocol.md +89 -0
- package/docs/gateway/cli-backends.md +310 -0
- package/docs/gateway/configuration-examples.md +631 -0
- package/docs/gateway/configuration-reference.md +3618 -0
- package/docs/gateway/configuration.md +698 -0
- package/docs/gateway/discovery.md +141 -0
- package/docs/gateway/doctor.md +494 -0
- package/docs/gateway/gateway-lock.md +37 -0
- package/docs/gateway/health.md +61 -0
- package/docs/gateway/heartbeat.md +443 -0
- package/docs/gateway/index.md +367 -0
- package/docs/gateway/local-models.md +163 -0
- package/docs/gateway/logging.md +113 -0
- package/docs/gateway/multiple-gateways.md +120 -0
- package/docs/gateway/network-model.md +25 -0
- package/docs/gateway/openai-http-api.md +280 -0
- package/docs/gateway/openresponses-http-api.md +340 -0
- package/docs/gateway/openshell.md +307 -0
- package/docs/gateway/pairing.md +138 -0
- package/docs/gateway/protocol.md +588 -0
- package/docs/gateway/remote-gateway-readme.md +164 -0
- package/docs/gateway/remote.md +251 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +141 -0
- package/docs/gateway/sandboxing.md +473 -0
- package/docs/gateway/secrets-plan-contract.md +116 -0
- package/docs/gateway/secrets.md +541 -0
- package/docs/gateway/security/index.md +1362 -0
- package/docs/gateway/tailscale.md +136 -0
- package/docs/gateway/tools-invoke-http-api.md +161 -0
- package/docs/gateway/troubleshooting.md +451 -0
- package/docs/gateway/trusted-proxy-auth.md +399 -0
- package/docs/help/debugging.md +168 -0
- package/docs/help/environment.md +165 -0
- package/docs/help/faq.md +3244 -0
- package/docs/help/index.md +28 -0
- package/docs/help/scripts.md +27 -0
- package/docs/help/testing.md +640 -0
- package/docs/help/troubleshooting.md +372 -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/clawdock.md +106 -0
- package/docs/install/development-channels.md +131 -0
- package/docs/install/digitalocean.md +129 -0
- package/docs/install/docker-vm-runtime.md +142 -0
- package/docs/install/docker.md +412 -0
- package/docs/install/exe-dev.md +133 -0
- package/docs/install/fly.md +504 -0
- package/docs/install/gcp.md +412 -0
- package/docs/install/hetzner.md +259 -0
- package/docs/install/index.md +212 -0
- package/docs/install/installer.md +443 -0
- package/docs/install/kubernetes.md +192 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-matrix.md +349 -0
- package/docs/install/migrating.md +112 -0
- package/docs/install/nix.md +89 -0
- package/docs/install/node.md +144 -0
- package/docs/install/northflank.mdx +42 -0
- package/docs/install/oracle.md +158 -0
- package/docs/install/podman.md +210 -0
- package/docs/install/railway.mdx +90 -0
- package/docs/install/raspberry-pi.md +159 -0
- package/docs/install/render.mdx +165 -0
- package/docs/install/uninstall.md +128 -0
- package/docs/install/updating.md +142 -0
- package/docs/logging.md +389 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +69 -0
- package/docs/nodes/audio.md +191 -0
- package/docs/nodes/camera.md +162 -0
- package/docs/nodes/images.md +73 -0
- package/docs/nodes/index.md +408 -0
- package/docs/nodes/location-command.md +98 -0
- package/docs/nodes/media-understanding.md +432 -0
- package/docs/nodes/talk.md +92 -0
- package/docs/nodes/troubleshooting.md +123 -0
- package/docs/nodes/voicewake.md +66 -0
- package/docs/perplexity.md +181 -0
- package/docs/pi-dev.md +80 -0
- package/docs/pi.md +570 -0
- package/docs/platforms/android.md +244 -0
- package/docs/platforms/digitalocean.md +266 -0
- package/docs/platforms/index.md +55 -0
- package/docs/platforms/ios.md +223 -0
- package/docs/platforms/linux.md +100 -0
- package/docs/platforms/mac/bundled-gateway.md +75 -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 +107 -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 +40 -0
- package/docs/platforms/mac/voice-overlay.md +60 -0
- package/docs/platforms/mac/voicewake.md +67 -0
- package/docs/platforms/mac/webchat.md +51 -0
- package/docs/platforms/mac/xpc.md +61 -0
- package/docs/platforms/macos.md +229 -0
- package/docs/platforms/oracle.md +305 -0
- package/docs/platforms/raspberry-pi.md +420 -0
- package/docs/platforms/windows.md +241 -0
- package/docs/plugins/agent-tools.md +10 -0
- package/docs/plugins/architecture.md +1609 -0
- package/docs/plugins/building-extensions.md +10 -0
- package/docs/plugins/building-plugins.md +319 -0
- package/docs/plugins/bundles.md +292 -0
- package/docs/plugins/community.md +149 -0
- package/docs/plugins/manifest.md +412 -0
- package/docs/plugins/sdk-channel-plugins.md +508 -0
- package/docs/plugins/sdk-entrypoints.md +210 -0
- package/docs/plugins/sdk-migration.md +359 -0
- package/docs/plugins/sdk-overview.md +475 -0
- package/docs/plugins/sdk-provider-plugins.md +712 -0
- package/docs/plugins/sdk-runtime.md +381 -0
- package/docs/plugins/sdk-setup.md +516 -0
- package/docs/plugins/sdk-testing.md +263 -0
- package/docs/plugins/voice-call.md +466 -0
- package/docs/plugins/zalouser.md +78 -0
- package/docs/prose.md +134 -0
- package/docs/providers/anthropic.md +402 -0
- package/docs/providers/bedrock-mantle.md +91 -0
- package/docs/providers/bedrock.md +273 -0
- package/docs/providers/chutes.md +103 -0
- package/docs/providers/claude-max-api-proxy.md +163 -0
- package/docs/providers/cloudflare-ai-gateway.md +71 -0
- package/docs/providers/deepgram.md +93 -0
- package/docs/providers/deepseek.md +53 -0
- package/docs/providers/fireworks.md +69 -0
- package/docs/providers/github-copilot.md +80 -0
- package/docs/providers/glm.md +68 -0
- package/docs/providers/google.md +149 -0
- package/docs/providers/groq.md +105 -0
- package/docs/providers/huggingface.md +193 -0
- package/docs/providers/index.md +81 -0
- package/docs/providers/kilocode.md +89 -0
- package/docs/providers/litellm.md +159 -0
- package/docs/providers/minimax.md +281 -0
- package/docs/providers/mistral.md +68 -0
- package/docs/providers/models.md +56 -0
- package/docs/providers/moonshot.md +224 -0
- package/docs/providers/nvidia.md +58 -0
- package/docs/providers/ollama.md +379 -0
- package/docs/providers/openai.md +472 -0
- package/docs/providers/opencode-go.md +45 -0
- package/docs/providers/opencode.md +68 -0
- package/docs/providers/openrouter.md +59 -0
- package/docs/providers/perplexity-provider.md +62 -0
- package/docs/providers/qianfan.md +90 -0
- package/docs/providers/qwen.md +128 -0
- package/docs/providers/qwen_modelstudio.md +137 -0
- package/docs/providers/sglang.md +115 -0
- package/docs/providers/stepfun.md +152 -0
- package/docs/providers/synthetic.md +101 -0
- package/docs/providers/together.md +70 -0
- package/docs/providers/venice.md +282 -0
- package/docs/providers/vercel-ai-gateway.md +60 -0
- package/docs/providers/vllm.md +103 -0
- package/docs/providers/volcengine.md +94 -0
- package/docs/providers/xai.md +94 -0
- package/docs/providers/xiaomi.md +89 -0
- package/docs/providers/zai.md +75 -0
- package/docs/reference/AGENTS.default.md +126 -0
- package/docs/reference/RELEASING.md +138 -0
- package/docs/reference/api-usage-costs.md +198 -0
- package/docs/reference/credits.md +30 -0
- package/docs/reference/device-models.md +47 -0
- package/docs/reference/memory-config.md +421 -0
- package/docs/reference/prompt-caching.md +344 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +148 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +607 -0
- package/docs/reference/session-management-compaction.md +352 -0
- package/docs/reference/templates/AGENTS.dev.md +84 -0
- package/docs/reference/templates/AGENTS.md +219 -0
- package/docs/reference/templates/BOOT.md +12 -0
- package/docs/reference/templates/BOOTSTRAP.md +62 -0
- package/docs/reference/templates/CLAUDE.md +1 -0
- package/docs/reference/templates/HEARTBEAT.md +14 -0
- package/docs/reference/templates/IDENTITY.dev.md +48 -0
- package/docs/reference/templates/IDENTITY.md +30 -0
- package/docs/reference/templates/SOUL.dev.md +77 -0
- package/docs/reference/templates/SOUL.md +45 -0
- package/docs/reference/templates/TOOLS.dev.md +25 -0
- package/docs/reference/templates/TOOLS.md +47 -0
- package/docs/reference/templates/USER.dev.md +19 -0
- package/docs/reference/templates/USER.md +24 -0
- package/docs/reference/test.md +119 -0
- package/docs/reference/token-use.md +197 -0
- package/docs/reference/transcript-hygiene.md +151 -0
- package/docs/reference/wizard.md +245 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +608 -0
- package/docs/security/formal-verification.md +167 -0
- package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +9 -0
- package/docs/snippets/plugin-publish/minimal-package.json +16 -0
- package/docs/start/bootstrapping.md +41 -0
- package/docs/start/docs-directory.md +67 -0
- package/docs/start/getting-started.md +148 -0
- package/docs/start/hubs.md +199 -0
- package/docs/start/lore.md +219 -0
- package/docs/start/onboarding-overview.md +69 -0
- package/docs/start/onboarding.md +92 -0
- package/docs/start/openclaw.md +225 -0
- package/docs/start/quickstart.md +22 -0
- package/docs/start/setup.md +172 -0
- package/docs/start/showcase.md +418 -0
- package/docs/start/wizard-cli-automation.md +233 -0
- package/docs/start/wizard-cli-reference.md +324 -0
- package/docs/start/wizard.md +127 -0
- package/docs/style.css +37 -0
- package/docs/tools/acp-agents.md +837 -0
- package/docs/tools/agent-send.md +100 -0
- package/docs/tools/apply-patch.md +52 -0
- package/docs/tools/brave-search.md +107 -0
- package/docs/tools/browser-linux-troubleshooting.md +145 -0
- package/docs/tools/browser-login.md +73 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +221 -0
- package/docs/tools/browser.md +890 -0
- package/docs/tools/btw.md +142 -0
- package/docs/tools/capability-cookbook.md +119 -0
- package/docs/tools/clawhub.md +348 -0
- package/docs/tools/code-execution.md +90 -0
- package/docs/tools/creating-skills.md +119 -0
- package/docs/tools/diffs.md +434 -0
- package/docs/tools/duckduckgo-search.md +102 -0
- package/docs/tools/elevated.md +116 -0
- package/docs/tools/exa-search.md +127 -0
- package/docs/tools/exec-approvals.md +635 -0
- package/docs/tools/exec.md +237 -0
- package/docs/tools/firecrawl.md +147 -0
- package/docs/tools/gemini-search.md +98 -0
- package/docs/tools/grok-search.md +102 -0
- package/docs/tools/image-generation.md +139 -0
- package/docs/tools/index.md +174 -0
- package/docs/tools/kimi-search.md +98 -0
- package/docs/tools/llm-task.md +119 -0
- package/docs/tools/lobster.md +348 -0
- package/docs/tools/loop-detection.md +100 -0
- package/docs/tools/minimax-search.md +99 -0
- package/docs/tools/multi-agent-sandbox-tools.md +373 -0
- package/docs/tools/ollama-search.md +100 -0
- package/docs/tools/pdf.md +176 -0
- package/docs/tools/perplexity-search.md +185 -0
- package/docs/tools/plugin.md +348 -0
- package/docs/tools/reactions.md +78 -0
- package/docs/tools/searxng-search.md +132 -0
- package/docs/tools/skills-config.md +133 -0
- package/docs/tools/skills.md +377 -0
- package/docs/tools/slash-commands.md +322 -0
- package/docs/tools/subagents.md +341 -0
- package/docs/tools/tavily.md +129 -0
- package/docs/tools/thinking.md +102 -0
- package/docs/tools/tts.md +452 -0
- package/docs/tools/web-fetch.md +159 -0
- package/docs/tools/web.md +417 -0
- package/docs/tts.md +452 -0
- package/docs/vps.md +115 -0
- package/docs/web/control-ui.md +318 -0
- package/docs/web/dashboard.md +93 -0
- package/docs/web/index.md +126 -0
- package/docs/web/tui.md +176 -0
- package/docs/web/webchat.md +77 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/durar.mjs +180 -0
- package/package.json +1259 -0
- package/scripts/npm-runner.mjs +111 -0
- package/scripts/postinstall-bundled-plugins.mjs +188 -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 +199 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +316 -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 +885 -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-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +62 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +88 -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 +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 +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/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 +170 -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 +129 -0
- package/skills/xurl/SKILL.md +461 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: node-connect
|
|
3
|
+
description: Diagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps. Use when QR/setup code/manual connect fails, local Wi-Fi works but VPS/tailnet does not, or errors mention pairing required, unauthorized, bootstrap token invalid or expired, gateway.bind, gateway.remote.url, Tailscale, or plugins.entries.device-pair.config.publicUrl.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Node Connect
|
|
7
|
+
|
|
8
|
+
Goal: find the one real route from node -> gateway, verify OpenClaw is advertising that route, then fix pairing/auth.
|
|
9
|
+
|
|
10
|
+
## Topology first
|
|
11
|
+
|
|
12
|
+
Decide which case you are in before proposing fixes:
|
|
13
|
+
|
|
14
|
+
- same machine / emulator / USB tunnel
|
|
15
|
+
- same LAN / local Wi-Fi
|
|
16
|
+
- same Tailscale tailnet
|
|
17
|
+
- public URL / reverse proxy
|
|
18
|
+
|
|
19
|
+
Do not mix them.
|
|
20
|
+
|
|
21
|
+
- Local Wi-Fi problem: do not switch to Tailscale unless remote access is actually needed.
|
|
22
|
+
- VPS / remote gateway problem: do not keep debugging `localhost` or LAN IPs.
|
|
23
|
+
|
|
24
|
+
## If ambiguous, ask first
|
|
25
|
+
|
|
26
|
+
If the setup is unclear or the failure report is vague, ask short clarifying questions before diagnosing.
|
|
27
|
+
|
|
28
|
+
Ask for:
|
|
29
|
+
|
|
30
|
+
- which route they intend: same machine, same LAN, Tailscale tailnet, or public URL
|
|
31
|
+
- whether they used QR/setup code or manual host/port
|
|
32
|
+
- the exact app text/status/error, quoted exactly if possible
|
|
33
|
+
- whether `openclaw devices list` shows a pending pairing request
|
|
34
|
+
|
|
35
|
+
Do not guess from `can't connect`.
|
|
36
|
+
|
|
37
|
+
## Canonical checks
|
|
38
|
+
|
|
39
|
+
Prefer `openclaw qr --json`. It uses the same setup-code payload Android scans.
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
openclaw config get gateway.mode
|
|
43
|
+
openclaw config get gateway.bind
|
|
44
|
+
openclaw config get gateway.tailscale.mode
|
|
45
|
+
openclaw config get gateway.remote.url
|
|
46
|
+
openclaw config get gateway.auth.mode
|
|
47
|
+
openclaw config get gateway.auth.allowTailscale
|
|
48
|
+
openclaw config get plugins.entries.device-pair.config.publicUrl
|
|
49
|
+
openclaw qr --json
|
|
50
|
+
openclaw devices list
|
|
51
|
+
openclaw nodes status
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If this OpenClaw instance is pointed at a remote gateway, also run:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
openclaw qr --remote --json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
If Tailscale is part of the story:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
tailscale status --json
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Read the result, not guesses
|
|
67
|
+
|
|
68
|
+
`openclaw qr --json` success means:
|
|
69
|
+
|
|
70
|
+
- `gatewayUrl`: this is the actual endpoint the app should use.
|
|
71
|
+
- `urlSource`: this tells you which config path won.
|
|
72
|
+
|
|
73
|
+
Common good sources:
|
|
74
|
+
|
|
75
|
+
- `gateway.bind=lan`: same Wi-Fi / LAN only
|
|
76
|
+
- `gateway.bind=tailnet`: direct tailnet access
|
|
77
|
+
- `gateway.tailscale.mode=serve` or `gateway.tailscale.mode=funnel`: Tailscale route
|
|
78
|
+
- `plugins.entries.device-pair.config.publicUrl`: explicit public/reverse-proxy route
|
|
79
|
+
- `gateway.remote.url`: remote gateway route
|
|
80
|
+
|
|
81
|
+
## Root-cause map
|
|
82
|
+
|
|
83
|
+
If `openclaw qr --json` says `Gateway is only bound to loopback`:
|
|
84
|
+
|
|
85
|
+
- remote node cannot connect yet
|
|
86
|
+
- fix the route, then generate a fresh setup code
|
|
87
|
+
- `gateway.bind=auto` is not enough if the effective QR route is still loopback
|
|
88
|
+
- same LAN: use `gateway.bind=lan`
|
|
89
|
+
- same tailnet: prefer `gateway.tailscale.mode=serve` or use `gateway.bind=tailnet`
|
|
90
|
+
- public internet: set a real `plugins.entries.device-pair.config.publicUrl` or `gateway.remote.url`
|
|
91
|
+
|
|
92
|
+
If `gateway.bind=tailnet set, but no tailnet IP was found`:
|
|
93
|
+
|
|
94
|
+
- gateway host is not actually on Tailscale
|
|
95
|
+
|
|
96
|
+
If `qr --remote requires gateway.remote.url`:
|
|
97
|
+
|
|
98
|
+
- remote-mode config is incomplete
|
|
99
|
+
|
|
100
|
+
If the app says `pairing required`:
|
|
101
|
+
|
|
102
|
+
- network route and auth worked
|
|
103
|
+
- approve the pending device
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
openclaw devices list
|
|
107
|
+
openclaw devices approve --latest
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
If the app says `bootstrap token invalid or expired`:
|
|
111
|
+
|
|
112
|
+
- old setup code
|
|
113
|
+
- generate a fresh one and rescan
|
|
114
|
+
- do this after any URL/auth fix too
|
|
115
|
+
|
|
116
|
+
If the app says `unauthorized`:
|
|
117
|
+
|
|
118
|
+
- wrong token/password, or wrong Tailscale expectation
|
|
119
|
+
- for Tailscale Serve, `gateway.auth.allowTailscale` must match the intended flow
|
|
120
|
+
- otherwise use explicit token/password
|
|
121
|
+
|
|
122
|
+
## Fast heuristics
|
|
123
|
+
|
|
124
|
+
- Same Wi-Fi setup + gateway advertises `127.0.0.1`, `localhost`, or loopback-only config: wrong.
|
|
125
|
+
- Remote setup + setup/manual uses private LAN IP: wrong.
|
|
126
|
+
- Tailnet setup + gateway advertises LAN IP instead of MagicDNS / tailnet route: wrong.
|
|
127
|
+
- Public URL set but QR still advertises something else: inspect `urlSource`; config is not what you think.
|
|
128
|
+
- `openclaw devices list` shows pending requests: stop changing network config and approve first.
|
|
129
|
+
|
|
130
|
+
## Fix style
|
|
131
|
+
|
|
132
|
+
Reply with one concrete diagnosis and one route.
|
|
133
|
+
|
|
134
|
+
If there is not enough signal yet, ask for setup + exact app text instead of guessing.
|
|
135
|
+
|
|
136
|
+
Good:
|
|
137
|
+
|
|
138
|
+
- `The gateway is still loopback-only, so a node on another network can never reach it. Enable Tailscale Serve, restart the gateway, run openclaw qr again, rescan, then approve the pending device pairing.`
|
|
139
|
+
|
|
140
|
+
Bad:
|
|
141
|
+
|
|
142
|
+
- `Maybe LAN, maybe Tailscale, maybe port forwarding, maybe public URL.`
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: notion
|
|
3
|
+
description: Notion API for creating and managing pages, databases, and blocks.
|
|
4
|
+
homepage: https://developers.notion.com
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
"openclaw":
|
|
8
|
+
{ "emoji": "📝", "requires": { "env": ["NOTION_API_KEY"] }, "primaryEnv": "NOTION_API_KEY" },
|
|
9
|
+
}
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# notion
|
|
13
|
+
|
|
14
|
+
Use the Notion API to create/read/update pages, data sources (databases), and blocks.
|
|
15
|
+
|
|
16
|
+
## Setup
|
|
17
|
+
|
|
18
|
+
1. Create an integration at https://notion.so/my-integrations
|
|
19
|
+
2. Copy the API key (starts with `ntn_` or `secret_`)
|
|
20
|
+
3. Store it:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
mkdir -p ~/.config/notion
|
|
24
|
+
echo "ntn_your_key_here" > ~/.config/notion/api_key
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
4. Share target pages/databases with your integration (click "..." → "Connect to" → your integration name)
|
|
28
|
+
|
|
29
|
+
## API Basics
|
|
30
|
+
|
|
31
|
+
All requests need:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
NOTION_KEY=$(cat ~/.config/notion/api_key)
|
|
35
|
+
curl -X GET "https://api.notion.com/v1/..." \
|
|
36
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
37
|
+
-H "Notion-Version: 2025-09-03" \
|
|
38
|
+
-H "Content-Type: application/json"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
> **Note:** The `Notion-Version` header is required. This skill uses `2025-09-03` (latest). In this version, databases are called "data sources" in the API.
|
|
42
|
+
|
|
43
|
+
## Common Operations
|
|
44
|
+
|
|
45
|
+
**Search for pages and data sources:**
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
curl -X POST "https://api.notion.com/v1/search" \
|
|
49
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
50
|
+
-H "Notion-Version: 2025-09-03" \
|
|
51
|
+
-H "Content-Type: application/json" \
|
|
52
|
+
-d '{"query": "page title"}'
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Get page:**
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
curl "https://api.notion.com/v1/pages/{page_id}" \
|
|
59
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
60
|
+
-H "Notion-Version: 2025-09-03"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Get page content (blocks):**
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
curl "https://api.notion.com/v1/blocks/{page_id}/children" \
|
|
67
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
68
|
+
-H "Notion-Version: 2025-09-03"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Create page in a data source:**
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
curl -X POST "https://api.notion.com/v1/pages" \
|
|
75
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
76
|
+
-H "Notion-Version: 2025-09-03" \
|
|
77
|
+
-H "Content-Type: application/json" \
|
|
78
|
+
-d '{
|
|
79
|
+
"parent": {"database_id": "xxx"},
|
|
80
|
+
"properties": {
|
|
81
|
+
"Name": {"title": [{"text": {"content": "New Item"}}]},
|
|
82
|
+
"Status": {"select": {"name": "Todo"}}
|
|
83
|
+
}
|
|
84
|
+
}'
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Query a data source (database):**
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
curl -X POST "https://api.notion.com/v1/data_sources/{data_source_id}/query" \
|
|
91
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
92
|
+
-H "Notion-Version: 2025-09-03" \
|
|
93
|
+
-H "Content-Type: application/json" \
|
|
94
|
+
-d '{
|
|
95
|
+
"filter": {"property": "Status", "select": {"equals": "Active"}},
|
|
96
|
+
"sorts": [{"property": "Date", "direction": "descending"}]
|
|
97
|
+
}'
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Create a data source (database):**
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
curl -X POST "https://api.notion.com/v1/data_sources" \
|
|
104
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
105
|
+
-H "Notion-Version: 2025-09-03" \
|
|
106
|
+
-H "Content-Type: application/json" \
|
|
107
|
+
-d '{
|
|
108
|
+
"parent": {"page_id": "xxx"},
|
|
109
|
+
"title": [{"text": {"content": "My Database"}}],
|
|
110
|
+
"properties": {
|
|
111
|
+
"Name": {"title": {}},
|
|
112
|
+
"Status": {"select": {"options": [{"name": "Todo"}, {"name": "Done"}]}},
|
|
113
|
+
"Date": {"date": {}}
|
|
114
|
+
}
|
|
115
|
+
}'
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Update page properties:**
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
curl -X PATCH "https://api.notion.com/v1/pages/{page_id}" \
|
|
122
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
123
|
+
-H "Notion-Version: 2025-09-03" \
|
|
124
|
+
-H "Content-Type: application/json" \
|
|
125
|
+
-d '{"properties": {"Status": {"select": {"name": "Done"}}}}'
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Add blocks to page:**
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
curl -X PATCH "https://api.notion.com/v1/blocks/{page_id}/children" \
|
|
132
|
+
-H "Authorization: Bearer $NOTION_KEY" \
|
|
133
|
+
-H "Notion-Version: 2025-09-03" \
|
|
134
|
+
-H "Content-Type: application/json" \
|
|
135
|
+
-d '{
|
|
136
|
+
"children": [
|
|
137
|
+
{"object": "block", "type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "Hello"}}]}}
|
|
138
|
+
]
|
|
139
|
+
}'
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Property Types
|
|
143
|
+
|
|
144
|
+
Common property formats for database items:
|
|
145
|
+
|
|
146
|
+
- **Title:** `{"title": [{"text": {"content": "..."}}]}`
|
|
147
|
+
- **Rich text:** `{"rich_text": [{"text": {"content": "..."}}]}`
|
|
148
|
+
- **Select:** `{"select": {"name": "Option"}}`
|
|
149
|
+
- **Multi-select:** `{"multi_select": [{"name": "A"}, {"name": "B"}]}`
|
|
150
|
+
- **Date:** `{"date": {"start": "2024-01-15", "end": "2024-01-16"}}`
|
|
151
|
+
- **Checkbox:** `{"checkbox": true}`
|
|
152
|
+
- **Number:** `{"number": 42}`
|
|
153
|
+
- **URL:** `{"url": "https://..."}`
|
|
154
|
+
- **Email:** `{"email": "a@b.com"}`
|
|
155
|
+
- **Relation:** `{"relation": [{"id": "page_id"}]}`
|
|
156
|
+
|
|
157
|
+
## Key Differences in 2025-09-03
|
|
158
|
+
|
|
159
|
+
- **Databases → Data Sources:** Use `/data_sources/` endpoints for queries and retrieval
|
|
160
|
+
- **Two IDs:** Each database now has both a `database_id` and a `data_source_id`
|
|
161
|
+
- Use `database_id` when creating pages (`parent: {"database_id": "..."}`)
|
|
162
|
+
- Use `data_source_id` when querying (`POST /v1/data_sources/{id}/query`)
|
|
163
|
+
- **Search results:** Databases return as `"object": "data_source"` with their `data_source_id`
|
|
164
|
+
- **Parent in responses:** Pages show `parent.data_source_id` alongside `parent.database_id`
|
|
165
|
+
- **Finding the data_source_id:** Search for the database, or call `GET /v1/data_sources/{data_source_id}`
|
|
166
|
+
|
|
167
|
+
## Notes
|
|
168
|
+
|
|
169
|
+
- Page/database IDs are UUIDs (with or without dashes)
|
|
170
|
+
- The API cannot set database view filters — that's UI-only
|
|
171
|
+
- Rate limit: ~3 requests/second average, with `429 rate_limited` responses using `Retry-After`
|
|
172
|
+
- Append block children: up to 100 children per request, up to two levels of nesting in a single append request
|
|
173
|
+
- Payload size limits: up to 1000 block elements and 500KB overall
|
|
174
|
+
- Use `is_inline: true` when creating data sources to embed them in pages
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: obsidian
|
|
3
|
+
description: Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
|
|
4
|
+
homepage: https://help.obsidian.md
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
"openclaw":
|
|
8
|
+
{
|
|
9
|
+
"emoji": "💎",
|
|
10
|
+
"requires": { "bins": ["obsidian-cli"] },
|
|
11
|
+
"install":
|
|
12
|
+
[
|
|
13
|
+
{
|
|
14
|
+
"id": "brew",
|
|
15
|
+
"kind": "brew",
|
|
16
|
+
"formula": "yakitrak/yakitrak/obsidian-cli",
|
|
17
|
+
"bins": ["obsidian-cli"],
|
|
18
|
+
"label": "Install obsidian-cli (brew)",
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Obsidian
|
|
26
|
+
|
|
27
|
+
Obsidian vault = a normal folder on disk.
|
|
28
|
+
|
|
29
|
+
Vault structure (typical)
|
|
30
|
+
|
|
31
|
+
- Notes: `*.md` (plain text Markdown; edit with any editor)
|
|
32
|
+
- Config: `.obsidian/` (workspace + plugin settings; usually don’t touch from scripts)
|
|
33
|
+
- Canvases: `*.canvas` (JSON)
|
|
34
|
+
- Attachments: whatever folder you chose in Obsidian settings (images/PDFs/etc.)
|
|
35
|
+
|
|
36
|
+
## Find the active vault(s)
|
|
37
|
+
|
|
38
|
+
Obsidian desktop tracks vaults here (source of truth):
|
|
39
|
+
|
|
40
|
+
- `~/Library/Application Support/obsidian/obsidian.json`
|
|
41
|
+
|
|
42
|
+
`obsidian-cli` resolves vaults from that file; vault name is typically the **folder name** (path suffix).
|
|
43
|
+
|
|
44
|
+
Fast “what vault is active / where are the notes?”
|
|
45
|
+
|
|
46
|
+
- If you’ve already set a default: `obsidian-cli print-default --path-only`
|
|
47
|
+
- Otherwise, read `~/Library/Application Support/obsidian/obsidian.json` and use the vault entry with `"open": true`.
|
|
48
|
+
|
|
49
|
+
Notes
|
|
50
|
+
|
|
51
|
+
- Multiple vaults common (iCloud vs `~/Documents`, work/personal, etc.). Don’t guess; read config.
|
|
52
|
+
- Avoid writing hardcoded vault paths into scripts; prefer reading the config or using `print-default`.
|
|
53
|
+
|
|
54
|
+
## obsidian-cli quick start
|
|
55
|
+
|
|
56
|
+
Pick a default vault (once):
|
|
57
|
+
|
|
58
|
+
- `obsidian-cli set-default "<vault-folder-name>"`
|
|
59
|
+
- `obsidian-cli print-default` / `obsidian-cli print-default --path-only`
|
|
60
|
+
|
|
61
|
+
Search
|
|
62
|
+
|
|
63
|
+
- `obsidian-cli search "query"` (note names)
|
|
64
|
+
- `obsidian-cli search-content "query"` (inside notes; shows snippets + lines)
|
|
65
|
+
|
|
66
|
+
Create
|
|
67
|
+
|
|
68
|
+
- `obsidian-cli create "Folder/New note" --content "..." --open`
|
|
69
|
+
- Requires Obsidian URI handler (`obsidian://…`) working (Obsidian installed).
|
|
70
|
+
- Avoid creating notes under “hidden” dot-folders (e.g. `.something/...`) via URI; Obsidian may refuse.
|
|
71
|
+
|
|
72
|
+
Move/rename (safe refactor)
|
|
73
|
+
|
|
74
|
+
- `obsidian-cli move "old/path/note" "new/path/note"`
|
|
75
|
+
- Updates `[[wikilinks]]` and common Markdown links across the vault (this is the main win vs `mv`).
|
|
76
|
+
|
|
77
|
+
Delete
|
|
78
|
+
|
|
79
|
+
- `obsidian-cli delete "path/note"`
|
|
80
|
+
|
|
81
|
+
Prefer direct edits when appropriate: open the `.md` file and change it; Obsidian will pick it up.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openai-whisper
|
|
3
|
+
description: Local speech-to-text with the Whisper CLI (no API key).
|
|
4
|
+
homepage: https://openai.com/research/whisper
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
"openclaw":
|
|
8
|
+
{
|
|
9
|
+
"emoji": "🎤",
|
|
10
|
+
"requires": { "bins": ["whisper"] },
|
|
11
|
+
"install":
|
|
12
|
+
[
|
|
13
|
+
{
|
|
14
|
+
"id": "brew",
|
|
15
|
+
"kind": "brew",
|
|
16
|
+
"formula": "openai-whisper",
|
|
17
|
+
"bins": ["whisper"],
|
|
18
|
+
"label": "Install OpenAI Whisper (brew)",
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Whisper (CLI)
|
|
26
|
+
|
|
27
|
+
Use `whisper` to transcribe audio locally.
|
|
28
|
+
|
|
29
|
+
Quick start
|
|
30
|
+
|
|
31
|
+
- `whisper /path/audio.mp3 --model medium --output_format txt --output_dir .`
|
|
32
|
+
- `whisper /path/audio.m4a --task translate --output_format srt`
|
|
33
|
+
|
|
34
|
+
Notes
|
|
35
|
+
|
|
36
|
+
- Models download to `~/.cache/whisper` on first run.
|
|
37
|
+
- `--model` defaults to `turbo` on this install.
|
|
38
|
+
- Use smaller models for speed, larger for accuracy.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openai-whisper-api
|
|
3
|
+
description: Transcribe audio via OpenAI Audio Transcriptions API (Whisper).
|
|
4
|
+
homepage: https://platform.openai.com/docs/guides/speech-to-text
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
"openclaw":
|
|
8
|
+
{
|
|
9
|
+
"emoji": "🌐",
|
|
10
|
+
"requires": { "bins": ["curl"], "env": ["OPENAI_API_KEY"] },
|
|
11
|
+
"primaryEnv": "OPENAI_API_KEY",
|
|
12
|
+
"install":
|
|
13
|
+
[
|
|
14
|
+
{
|
|
15
|
+
"id": "brew",
|
|
16
|
+
"kind": "brew",
|
|
17
|
+
"formula": "curl",
|
|
18
|
+
"bins": ["curl"],
|
|
19
|
+
"label": "Install curl (brew)",
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
},
|
|
23
|
+
}
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# OpenAI Whisper API (curl)
|
|
27
|
+
|
|
28
|
+
Transcribe an audio file via OpenAI’s `/v1/audio/transcriptions` endpoint. Set `OPENAI_BASE_URL` to use an OpenAI-compatible proxy or local gateway.
|
|
29
|
+
|
|
30
|
+
## Quick start
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
{baseDir}/scripts/transcribe.sh /path/to/audio.m4a
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Defaults:
|
|
37
|
+
|
|
38
|
+
- Model: `whisper-1`
|
|
39
|
+
- Output: `<input>.txt`
|
|
40
|
+
|
|
41
|
+
## Useful flags
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
{baseDir}/scripts/transcribe.sh /path/to/audio.ogg --model whisper-1 --out /tmp/transcript.txt
|
|
45
|
+
{baseDir}/scripts/transcribe.sh /path/to/audio.m4a --language en
|
|
46
|
+
{baseDir}/scripts/transcribe.sh /path/to/audio.m4a --prompt "Speaker names: Peter, Daniel"
|
|
47
|
+
{baseDir}/scripts/transcribe.sh /path/to/audio.m4a --json --out /tmp/transcript.json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## API key
|
|
51
|
+
|
|
52
|
+
Set `OPENAI_API_KEY`, or configure it in the active OpenClaw config file (`$OPENCLAW_CONFIG_PATH`, default `~/.openclaw/openclaw.json`). Optionally set `OPENAI_BASE_URL` (for example `http://127.0.0.1:51805/v1`) to use an OpenAI-compatible proxy or local gateway:
|
|
53
|
+
|
|
54
|
+
```json5
|
|
55
|
+
{
|
|
56
|
+
skills: {
|
|
57
|
+
"openai-whisper-api": {
|
|
58
|
+
apiKey: "OPENAI_KEY_HERE",
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
```
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
usage() {
|
|
5
|
+
cat >&2 <<'EOF'
|
|
6
|
+
Usage:
|
|
7
|
+
transcribe.sh <audio-file> [--model whisper-1] [--out /path/to/out.txt] [--language en] [--prompt "hint"] [--json]
|
|
8
|
+
EOF
|
|
9
|
+
exit 2
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
if [[ "${1:-}" == "" || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
|
|
13
|
+
usage
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
in="${1:-}"
|
|
17
|
+
shift || true
|
|
18
|
+
|
|
19
|
+
model="whisper-1"
|
|
20
|
+
out=""
|
|
21
|
+
language=""
|
|
22
|
+
prompt=""
|
|
23
|
+
response_format="text"
|
|
24
|
+
|
|
25
|
+
while [[ $# -gt 0 ]]; do
|
|
26
|
+
case "$1" in
|
|
27
|
+
--model)
|
|
28
|
+
model="${2:-}"
|
|
29
|
+
shift 2
|
|
30
|
+
;;
|
|
31
|
+
--out)
|
|
32
|
+
out="${2:-}"
|
|
33
|
+
shift 2
|
|
34
|
+
;;
|
|
35
|
+
--language)
|
|
36
|
+
language="${2:-}"
|
|
37
|
+
shift 2
|
|
38
|
+
;;
|
|
39
|
+
--prompt)
|
|
40
|
+
prompt="${2:-}"
|
|
41
|
+
shift 2
|
|
42
|
+
;;
|
|
43
|
+
--json)
|
|
44
|
+
response_format="json"
|
|
45
|
+
shift 1
|
|
46
|
+
;;
|
|
47
|
+
*)
|
|
48
|
+
echo "Unknown arg: $1" >&2
|
|
49
|
+
usage
|
|
50
|
+
;;
|
|
51
|
+
esac
|
|
52
|
+
done
|
|
53
|
+
|
|
54
|
+
if [[ ! -f "$in" ]]; then
|
|
55
|
+
echo "File not found: $in" >&2
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
if [[ "${OPENAI_API_KEY:-}" == "" ]]; then
|
|
60
|
+
echo "Missing OPENAI_API_KEY" >&2
|
|
61
|
+
exit 1
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
if [[ "$out" == "" ]]; then
|
|
65
|
+
base="${in%.*}"
|
|
66
|
+
if [[ "$response_format" == "json" ]]; then
|
|
67
|
+
out="${base}.json"
|
|
68
|
+
else
|
|
69
|
+
out="${base}.txt"
|
|
70
|
+
fi
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
mkdir -p "$(dirname "$out")"
|
|
74
|
+
|
|
75
|
+
api_base="${OPENAI_BASE_URL:-https://api.openai.com/v1}"
|
|
76
|
+
api_base="${api_base%/}"
|
|
77
|
+
|
|
78
|
+
curl -sS "${api_base}/audio/transcriptions" \
|
|
79
|
+
-H "Authorization: Bearer $OPENAI_API_KEY" \
|
|
80
|
+
-H "Accept: application/json" \
|
|
81
|
+
-F "file=@${in}" \
|
|
82
|
+
-F "model=${model}" \
|
|
83
|
+
-F "response_format=${response_format}" \
|
|
84
|
+
${language:+-F "language=${language}"} \
|
|
85
|
+
${prompt:+-F "prompt=${prompt}"} \
|
|
86
|
+
>"$out"
|
|
87
|
+
|
|
88
|
+
echo "$out"
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openhue
|
|
3
|
+
description: Control Philips Hue lights and scenes via the OpenHue CLI.
|
|
4
|
+
homepage: https://www.openhue.io/cli
|
|
5
|
+
metadata:
|
|
6
|
+
{
|
|
7
|
+
"openclaw":
|
|
8
|
+
{
|
|
9
|
+
"emoji": "💡",
|
|
10
|
+
"requires": { "bins": ["openhue"] },
|
|
11
|
+
"install":
|
|
12
|
+
[
|
|
13
|
+
{
|
|
14
|
+
"id": "brew",
|
|
15
|
+
"kind": "brew",
|
|
16
|
+
"formula": "openhue/cli/openhue-cli",
|
|
17
|
+
"bins": ["openhue"],
|
|
18
|
+
"label": "Install OpenHue CLI (brew)",
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# OpenHue CLI
|
|
26
|
+
|
|
27
|
+
Use `openhue` to control Philips Hue lights and scenes via a Hue Bridge.
|
|
28
|
+
|
|
29
|
+
## When to Use
|
|
30
|
+
|
|
31
|
+
✅ **USE this skill when:**
|
|
32
|
+
|
|
33
|
+
- "Turn on/off the lights"
|
|
34
|
+
- "Dim the living room lights"
|
|
35
|
+
- "Set a scene" or "movie mode"
|
|
36
|
+
- Controlling specific Hue rooms or zones
|
|
37
|
+
- Adjusting brightness, color, or color temperature
|
|
38
|
+
|
|
39
|
+
## When NOT to Use
|
|
40
|
+
|
|
41
|
+
❌ **DON'T use this skill when:**
|
|
42
|
+
|
|
43
|
+
- Non-Hue smart devices (other brands) → not supported
|
|
44
|
+
- HomeKit scenes or Shortcuts → use Apple's ecosystem
|
|
45
|
+
- TV or entertainment system control
|
|
46
|
+
- Thermostat or HVAC
|
|
47
|
+
- Smart plugs (unless Hue smart plugs)
|
|
48
|
+
|
|
49
|
+
## Common Commands
|
|
50
|
+
|
|
51
|
+
### List Resources
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
openhue get light # List all lights
|
|
55
|
+
openhue get room # List all rooms
|
|
56
|
+
openhue get scene # List all scenes
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Control Lights
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# Turn on/off
|
|
63
|
+
openhue set light "Bedroom Lamp" --on
|
|
64
|
+
openhue set light "Bedroom Lamp" --off
|
|
65
|
+
|
|
66
|
+
# Brightness (0-100)
|
|
67
|
+
openhue set light "Bedroom Lamp" --on --brightness 50
|
|
68
|
+
|
|
69
|
+
# Color temperature (warm to cool: 153-500 mirek)
|
|
70
|
+
openhue set light "Bedroom Lamp" --on --temperature 300
|
|
71
|
+
|
|
72
|
+
# Color (by name or hex)
|
|
73
|
+
openhue set light "Bedroom Lamp" --on --color red
|
|
74
|
+
openhue set light "Bedroom Lamp" --on --rgb "#FF5500"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Control Rooms
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Turn off entire room
|
|
81
|
+
openhue set room "Bedroom" --off
|
|
82
|
+
|
|
83
|
+
# Set room brightness
|
|
84
|
+
openhue set room "Bedroom" --on --brightness 30
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Scenes
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Activate scene
|
|
91
|
+
openhue set scene "Relax" --room "Bedroom"
|
|
92
|
+
openhue set scene "Concentrate" --room "Office"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Quick Presets
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Bedtime (dim warm)
|
|
99
|
+
openhue set room "Bedroom" --on --brightness 20 --temperature 450
|
|
100
|
+
|
|
101
|
+
# Work mode (bright cool)
|
|
102
|
+
openhue set room "Office" --on --brightness 100 --temperature 250
|
|
103
|
+
|
|
104
|
+
# Movie mode (dim)
|
|
105
|
+
openhue set room "Living Room" --on --brightness 10
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Notes
|
|
109
|
+
|
|
110
|
+
- Bridge must be on local network
|
|
111
|
+
- First run requires button press on Hue bridge to pair
|
|
112
|
+
- Colors only work on color-capable bulbs (not white-only)
|