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,300 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `Durar message` (send + channel actions)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Adding or modifying message CLI actions
|
|
5
|
+
- Changing outbound channel behavior
|
|
6
|
+
title: "message"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# `Durar message`
|
|
10
|
+
|
|
11
|
+
Single outbound command for sending messages and channel actions
|
|
12
|
+
(Discord/Google Chat/iMessage/Matrix/Mattermost (plugin)/Microsoft Teams/Signal/Slack/Telegram/WhatsApp).
|
|
13
|
+
|
|
14
|
+
## Usage
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Durar message <subcommand> [flags]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Channel selection:
|
|
21
|
+
|
|
22
|
+
- `--channel` required if more than one channel is configured.
|
|
23
|
+
- If exactly one channel is configured, it becomes the default.
|
|
24
|
+
- Values: `discord|googlechat|imessage|matrix|mattermost|msteams|signal|slack|telegram|whatsapp` (Mattermost requires plugin)
|
|
25
|
+
|
|
26
|
+
Target formats (`--target`):
|
|
27
|
+
|
|
28
|
+
- WhatsApp: E.164 or group JID
|
|
29
|
+
- Telegram: chat id or `@username`
|
|
30
|
+
- Discord: `channel:<id>` or `user:<id>` (or `<@id>` mention; raw numeric ids are treated as channels)
|
|
31
|
+
- Google Chat: `spaces/<spaceId>` or `users/<userId>`
|
|
32
|
+
- Slack: `channel:<id>` or `user:<id>` (raw channel id is accepted)
|
|
33
|
+
- Mattermost (plugin): `channel:<id>`, `user:<id>`, or `@username` (bare ids are treated as channels)
|
|
34
|
+
- Signal: `+E.164`, `group:<id>`, `signal:+E.164`, `signal:group:<id>`, or `username:<name>`/`u:<name>`
|
|
35
|
+
- iMessage: handle, `chat_id:<id>`, `chat_guid:<guid>`, or `chat_identifier:<id>`
|
|
36
|
+
- Matrix: `@user:server`, `!room:server`, or `#alias:server`
|
|
37
|
+
- Microsoft Teams: conversation id (`19:...@thread.tacv2`) or `conversation:<id>` or `user:<aad-object-id>`
|
|
38
|
+
|
|
39
|
+
Name lookup:
|
|
40
|
+
|
|
41
|
+
- For supported providers (Discord/Slack/etc), channel names like `Help` or `#help` are resolved via the directory cache.
|
|
42
|
+
- On cache miss, Durar will attempt a live directory lookup when the provider supports it.
|
|
43
|
+
|
|
44
|
+
## Common flags
|
|
45
|
+
|
|
46
|
+
- `--channel <name>`
|
|
47
|
+
- `--account <id>`
|
|
48
|
+
- `--target <dest>` (target channel or user for send/poll/read/etc)
|
|
49
|
+
- `--targets <name>` (repeat; broadcast only)
|
|
50
|
+
- `--json`
|
|
51
|
+
- `--dry-run`
|
|
52
|
+
- `--verbose`
|
|
53
|
+
|
|
54
|
+
## SecretRef behavior
|
|
55
|
+
|
|
56
|
+
- `Durar message` resolves supported channel SecretRefs before running the selected action.
|
|
57
|
+
- Resolution is scoped to the active action target when possible:
|
|
58
|
+
- channel-scoped when `--channel` is set (or inferred from prefixed targets like `discord:...`)
|
|
59
|
+
- account-scoped when `--account` is set (channel globals + selected account surfaces)
|
|
60
|
+
- when `--account` is omitted, Durar does not force a `default` account SecretRef scope
|
|
61
|
+
- Unresolved SecretRefs on unrelated channels do not block a targeted message action.
|
|
62
|
+
- If the selected channel/account SecretRef is unresolved, the command fails closed for that action.
|
|
63
|
+
|
|
64
|
+
## Actions
|
|
65
|
+
|
|
66
|
+
### Core
|
|
67
|
+
|
|
68
|
+
- `send`
|
|
69
|
+
- Channels: WhatsApp/Telegram/Discord/Google Chat/Slack/Mattermost (plugin)/Signal/iMessage/Matrix/Microsoft Teams
|
|
70
|
+
- Required: `--target`, plus `--message` or `--media`
|
|
71
|
+
- Optional: `--media`, `--interactive`, `--buttons`, `--components`, `--card`, `--reply-to`, `--thread-id`, `--gif-playback`, `--force-document`, `--silent`
|
|
72
|
+
- Shared interactive payloads: `--interactive` sends a channel-native interactive JSON payload when supported
|
|
73
|
+
- Telegram only: `--buttons` (requires `channels.telegram.capabilities.inlineButtons` to allow it)
|
|
74
|
+
- Telegram only: `--force-document` (send images and GIFs as documents to avoid Telegram compression)
|
|
75
|
+
- Telegram only: `--thread-id` (forum topic id)
|
|
76
|
+
- Slack only: `--thread-id` (thread timestamp; `--reply-to` uses the same field)
|
|
77
|
+
- Discord only: `--components` JSON payload
|
|
78
|
+
- Adaptive-card channels: `--card` JSON payload when supported
|
|
79
|
+
- Telegram + Discord: `--silent`
|
|
80
|
+
- WhatsApp only: `--gif-playback`
|
|
81
|
+
|
|
82
|
+
- `poll`
|
|
83
|
+
- Channels: WhatsApp/Telegram/Discord/Matrix/Microsoft Teams
|
|
84
|
+
- Required: `--target`, `--poll-question`, `--poll-option` (repeat)
|
|
85
|
+
- Optional: `--poll-multi`
|
|
86
|
+
- Discord only: `--poll-duration-hours`, `--silent`, `--message`
|
|
87
|
+
- Telegram only: `--poll-duration-seconds` (5-600), `--silent`, `--poll-anonymous` / `--poll-public`, `--thread-id`
|
|
88
|
+
|
|
89
|
+
- `react`
|
|
90
|
+
- Channels: Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/Matrix
|
|
91
|
+
- Required: `--message-id`, `--target`
|
|
92
|
+
- Optional: `--emoji`, `--remove`, `--participant`, `--from-me`, `--target-author`, `--target-author-uuid`
|
|
93
|
+
- Note: `--remove` requires `--emoji` (omit `--emoji` to clear own reactions where supported; see /tools/reactions)
|
|
94
|
+
- WhatsApp only: `--participant`, `--from-me`
|
|
95
|
+
- Signal group reactions: `--target-author` or `--target-author-uuid` required
|
|
96
|
+
|
|
97
|
+
- `reactions`
|
|
98
|
+
- Channels: Discord/Google Chat/Slack/Matrix
|
|
99
|
+
- Required: `--message-id`, `--target`
|
|
100
|
+
- Optional: `--limit`
|
|
101
|
+
|
|
102
|
+
- `read`
|
|
103
|
+
- Channels: Discord/Slack/Matrix
|
|
104
|
+
- Required: `--target`
|
|
105
|
+
- Optional: `--limit`, `--before`, `--after`
|
|
106
|
+
- Discord only: `--around`
|
|
107
|
+
|
|
108
|
+
- `edit`
|
|
109
|
+
- Channels: Discord/Slack/Matrix
|
|
110
|
+
- Required: `--message-id`, `--message`, `--target`
|
|
111
|
+
|
|
112
|
+
- `delete`
|
|
113
|
+
- Channels: Discord/Slack/Telegram/Matrix
|
|
114
|
+
- Required: `--message-id`, `--target`
|
|
115
|
+
|
|
116
|
+
- `pin` / `unpin`
|
|
117
|
+
- Channels: Discord/Slack/Matrix
|
|
118
|
+
- Required: `--message-id`, `--target`
|
|
119
|
+
|
|
120
|
+
- `pins` (list)
|
|
121
|
+
- Channels: Discord/Slack/Matrix
|
|
122
|
+
- Required: `--target`
|
|
123
|
+
|
|
124
|
+
- `permissions`
|
|
125
|
+
- Channels: Discord/Matrix
|
|
126
|
+
- Required: `--target`
|
|
127
|
+
- Matrix only: available when Matrix encryption is enabled and verification actions are allowed
|
|
128
|
+
|
|
129
|
+
- `search`
|
|
130
|
+
- Channels: Discord
|
|
131
|
+
- Required: `--guild-id`, `--query`
|
|
132
|
+
- Optional: `--channel-id`, `--channel-ids` (repeat), `--author-id`, `--author-ids` (repeat), `--limit`
|
|
133
|
+
|
|
134
|
+
### Threads
|
|
135
|
+
|
|
136
|
+
- `thread create`
|
|
137
|
+
- Channels: Discord
|
|
138
|
+
- Required: `--thread-name`, `--target` (channel id)
|
|
139
|
+
- Optional: `--message-id`, `--message`, `--auto-archive-min`
|
|
140
|
+
|
|
141
|
+
- `thread list`
|
|
142
|
+
- Channels: Discord
|
|
143
|
+
- Required: `--guild-id`
|
|
144
|
+
- Optional: `--channel-id`, `--include-archived`, `--before`, `--limit`
|
|
145
|
+
|
|
146
|
+
- `thread reply`
|
|
147
|
+
- Channels: Discord
|
|
148
|
+
- Required: `--target` (thread id), `--message`
|
|
149
|
+
- Optional: `--media`, `--reply-to`
|
|
150
|
+
|
|
151
|
+
### Emojis
|
|
152
|
+
|
|
153
|
+
- `emoji list`
|
|
154
|
+
- Discord: `--guild-id`
|
|
155
|
+
- Slack: no extra flags
|
|
156
|
+
|
|
157
|
+
- `emoji upload`
|
|
158
|
+
- Channels: Discord
|
|
159
|
+
- Required: `--guild-id`, `--emoji-name`, `--media`
|
|
160
|
+
- Optional: `--role-ids` (repeat)
|
|
161
|
+
|
|
162
|
+
### Stickers
|
|
163
|
+
|
|
164
|
+
- `sticker send`
|
|
165
|
+
- Channels: Discord
|
|
166
|
+
- Required: `--target`, `--sticker-id` (repeat)
|
|
167
|
+
- Optional: `--message`
|
|
168
|
+
|
|
169
|
+
- `sticker upload`
|
|
170
|
+
- Channels: Discord
|
|
171
|
+
- Required: `--guild-id`, `--sticker-name`, `--sticker-desc`, `--sticker-tags`, `--media`
|
|
172
|
+
|
|
173
|
+
### Roles / Channels / Members / Voice
|
|
174
|
+
|
|
175
|
+
- `role info` (Discord): `--guild-id`
|
|
176
|
+
- `role add` / `role remove` (Discord): `--guild-id`, `--user-id`, `--role-id`
|
|
177
|
+
- `channel info` (Discord): `--target`
|
|
178
|
+
- `channel list` (Discord): `--guild-id`
|
|
179
|
+
- `member info` (Discord/Slack): `--user-id` (+ `--guild-id` for Discord)
|
|
180
|
+
- `voice status` (Discord): `--guild-id`, `--user-id`
|
|
181
|
+
|
|
182
|
+
### Events
|
|
183
|
+
|
|
184
|
+
- `event list` (Discord): `--guild-id`
|
|
185
|
+
- `event create` (Discord): `--guild-id`, `--event-name`, `--start-time`
|
|
186
|
+
- Optional: `--end-time`, `--desc`, `--channel-id`, `--location`, `--event-type`
|
|
187
|
+
|
|
188
|
+
### Moderation (Discord)
|
|
189
|
+
|
|
190
|
+
- `timeout`: `--guild-id`, `--user-id` (optional `--duration-min` or `--until`; omit both to clear timeout)
|
|
191
|
+
- `kick`: `--guild-id`, `--user-id` (+ `--reason`)
|
|
192
|
+
- `ban`: `--guild-id`, `--user-id` (+ `--delete-days`, `--reason`)
|
|
193
|
+
- `timeout` also supports `--reason`
|
|
194
|
+
|
|
195
|
+
### Broadcast
|
|
196
|
+
|
|
197
|
+
- `broadcast`
|
|
198
|
+
- Channels: any configured channel; use `--channel all` to target all providers
|
|
199
|
+
- Required: `--targets <target...>`
|
|
200
|
+
- Optional: `--message`, `--media`, `--dry-run`
|
|
201
|
+
|
|
202
|
+
## Examples
|
|
203
|
+
|
|
204
|
+
Send a Discord reply:
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
Durar message send --channel discord \
|
|
208
|
+
--target channel:123 --message "hi" --reply-to 456
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Send a Discord message with components:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
Durar message send --channel discord \
|
|
215
|
+
--target channel:123 --message "Choose:" \
|
|
216
|
+
--components '{"text":"Choose a path","blocks":[{"type":"actions","buttons":[{"label":"Approve","style":"success"},{"label":"Decline","style":"danger"}]}]}'
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
See [Discord components](/channels/discord#interactive-components) for the full schema.
|
|
220
|
+
|
|
221
|
+
Send a shared interactive payload:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
Durar message send --channel googlechat --target spaces/AAA... \
|
|
225
|
+
--message "Choose:" \
|
|
226
|
+
--interactive '{"text":"Choose a path","blocks":[{"type":"actions","buttons":[{"label":"Approve"},{"label":"Decline"}]}]}'
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Create a Discord poll:
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
Durar message poll --channel discord \
|
|
233
|
+
--target channel:123 \
|
|
234
|
+
--poll-question "Snack?" \
|
|
235
|
+
--poll-option Pizza --poll-option Sushi \
|
|
236
|
+
--poll-multi --poll-duration-hours 48
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Create a Telegram poll (auto-close in 2 minutes):
|
|
240
|
+
|
|
241
|
+
```
|
|
242
|
+
Durar message poll --channel telegram \
|
|
243
|
+
--target @mychat \
|
|
244
|
+
--poll-question "Lunch?" \
|
|
245
|
+
--poll-option Pizza --poll-option Sushi \
|
|
246
|
+
--poll-duration-seconds 120 --silent
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Send a Teams proactive message:
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
Durar message send --channel msteams \
|
|
253
|
+
--target conversation:19:abc@thread.tacv2 --message "hi"
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Create a Teams poll:
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
Durar message poll --channel msteams \
|
|
260
|
+
--target conversation:19:abc@thread.tacv2 \
|
|
261
|
+
--poll-question "Lunch?" \
|
|
262
|
+
--poll-option Pizza --poll-option Sushi
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
React in Slack:
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
Durar message react --channel slack \
|
|
269
|
+
--target C123 --message-id 456 --emoji "✅"
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
React in a Signal group:
|
|
273
|
+
|
|
274
|
+
```
|
|
275
|
+
Durar message react --channel signal \
|
|
276
|
+
--target signal:group:abc123 --message-id 1737630212345 \
|
|
277
|
+
--emoji "✅" --target-author-uuid 123e4567-e89b-12d3-a456-426614174000
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Send Telegram inline buttons:
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
Durar message send --channel telegram --target @mychat --message "Choose:" \
|
|
284
|
+
--buttons '[ [{"text":"Yes","callback_data":"cmd:yes"}], [{"text":"No","callback_data":"cmd:no"}] ]'
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Send a Teams Adaptive Card:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
Durar message send --channel msteams \
|
|
291
|
+
--target conversation:19:abc@thread.tacv2 \
|
|
292
|
+
--card '{"type":"AdaptiveCard","version":"1.5","body":[{"type":"TextBlock","text":"Status update"}]}'
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Send a Telegram image as a document to avoid compression:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
Durar message send --channel telegram --target @mychat \
|
|
299
|
+
--media ./diagram.png --force-document
|
|
300
|
+
```
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `Durar models` (status/list/set/scan, aliases, fallbacks, auth)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to change default models or view provider auth status
|
|
5
|
+
- You want to scan available models/providers and debug auth profiles
|
|
6
|
+
title: "models"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# `Durar models`
|
|
10
|
+
|
|
11
|
+
Model discovery, scanning, and configuration (default model, fallbacks, auth profiles).
|
|
12
|
+
|
|
13
|
+
Related:
|
|
14
|
+
|
|
15
|
+
- Providers + models: [Models](/providers/models)
|
|
16
|
+
- Provider auth setup: [Getting started](/start/getting-started)
|
|
17
|
+
|
|
18
|
+
## Common commands
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
Durar models status
|
|
22
|
+
Durar models list
|
|
23
|
+
Durar models set <model-or-alias>
|
|
24
|
+
Durar models scan
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`Durar models status` shows the resolved default/fallbacks plus an auth overview.
|
|
28
|
+
When provider usage snapshots are available, the OAuth/API-key status section includes
|
|
29
|
+
provider usage windows and quota snapshots.
|
|
30
|
+
Current usage-window providers: Anthropic, GitHub Copilot, Gemini CLI, OpenAI
|
|
31
|
+
Codex, MiniMax, Xiaomi, and z.ai. Usage auth comes from provider-specific hooks
|
|
32
|
+
when available; otherwise Durar falls back to matching OAuth/API-key
|
|
33
|
+
credentials from auth profiles, env, or config.
|
|
34
|
+
Add `--probe` to run live auth probes against each configured provider profile.
|
|
35
|
+
Probes are real requests (may consume tokens and trigger rate limits).
|
|
36
|
+
Use `--agent <id>` to inspect a configured agent’s model/auth state. When omitted,
|
|
37
|
+
the command uses `Durar_AGENT_DIR`/`PI_CODING_AGENT_DIR` if set, otherwise the
|
|
38
|
+
configured default agent.
|
|
39
|
+
Probe rows can come from auth profiles, env credentials, or `models.json`.
|
|
40
|
+
|
|
41
|
+
Notes:
|
|
42
|
+
|
|
43
|
+
- `models set <model-or-alias>` accepts `provider/model` or an alias.
|
|
44
|
+
- Model refs are parsed by splitting on the **first** `/`. If the model ID includes `/` (OpenRouter-style), include the provider prefix (example: `openrouter/moonshotai/kimi-k2`).
|
|
45
|
+
- If you omit the provider, Durar resolves the input as an alias first, then
|
|
46
|
+
as a unique configured-provider match for that exact model id, and only then
|
|
47
|
+
falls back to the configured default provider with a deprecation warning.
|
|
48
|
+
If that provider no longer exposes the configured default model, Durar
|
|
49
|
+
falls back to the first configured provider/model instead of surfacing a
|
|
50
|
+
stale removed-provider default.
|
|
51
|
+
- `models status` may show `marker(<value>)` in auth output for non-secret placeholders (for example `OPENAI_API_KEY`, `secretref-managed`, `minimax-oauth`, `oauth:chutes`, `ollama-local`) instead of masking them as secrets.
|
|
52
|
+
|
|
53
|
+
### `models status`
|
|
54
|
+
|
|
55
|
+
Options:
|
|
56
|
+
|
|
57
|
+
- `--json`
|
|
58
|
+
- `--plain`
|
|
59
|
+
- `--check` (exit 1=expired/missing, 2=expiring)
|
|
60
|
+
- `--probe` (live probe of configured auth profiles)
|
|
61
|
+
- `--probe-provider <name>` (probe one provider)
|
|
62
|
+
- `--probe-profile <id>` (repeat or comma-separated profile ids)
|
|
63
|
+
- `--probe-timeout <ms>`
|
|
64
|
+
- `--probe-concurrency <n>`
|
|
65
|
+
- `--probe-max-tokens <n>`
|
|
66
|
+
- `--agent <id>` (configured agent id; overrides `Durar_AGENT_DIR`/`PI_CODING_AGENT_DIR`)
|
|
67
|
+
|
|
68
|
+
Probe status buckets:
|
|
69
|
+
|
|
70
|
+
- `ok`
|
|
71
|
+
- `auth`
|
|
72
|
+
- `rate_limit`
|
|
73
|
+
- `billing`
|
|
74
|
+
- `timeout`
|
|
75
|
+
- `format`
|
|
76
|
+
- `unknown`
|
|
77
|
+
- `no_model`
|
|
78
|
+
|
|
79
|
+
Probe detail/reason-code cases to expect:
|
|
80
|
+
|
|
81
|
+
- `excluded_by_auth_order`: a stored profile exists, but explicit
|
|
82
|
+
`auth.order.<provider>` omitted it, so probe reports the exclusion instead of
|
|
83
|
+
trying it.
|
|
84
|
+
- `missing_credential`, `invalid_expires`, `expired`, `unresolved_ref`:
|
|
85
|
+
profile is present but not eligible/resolvable.
|
|
86
|
+
- `no_model`: provider auth exists, but Durar could not resolve a probeable
|
|
87
|
+
model candidate for that provider.
|
|
88
|
+
|
|
89
|
+
## Aliases + fallbacks
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
Durar models aliases list
|
|
93
|
+
Durar models fallbacks list
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Auth profiles
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
Durar models auth add
|
|
100
|
+
Durar models auth login --provider <id>
|
|
101
|
+
Durar models auth setup-token --provider <id>
|
|
102
|
+
Durar models auth paste-token
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
`models auth add` is the interactive auth helper. It can launch a provider auth
|
|
106
|
+
flow (OAuth/API key) or guide you into manual token paste, depending on the
|
|
107
|
+
provider you choose.
|
|
108
|
+
|
|
109
|
+
`models auth login` runs a provider plugin’s auth flow (OAuth/API key). Use
|
|
110
|
+
`Durar plugins list` to see which providers are installed.
|
|
111
|
+
|
|
112
|
+
Examples:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
Durar models auth login --provider anthropic --method cli --set-default
|
|
116
|
+
Durar models auth login --provider openai-codex --set-default
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Notes:
|
|
120
|
+
|
|
121
|
+
- `login --provider anthropic --method cli --set-default` reuses a local Claude
|
|
122
|
+
CLI login and rewrites the main Anthropic default-model path to a canonical
|
|
123
|
+
`claude-cli/claude-*` ref.
|
|
124
|
+
- `setup-token` and `paste-token` remain generic token commands for providers
|
|
125
|
+
that expose token auth methods.
|
|
126
|
+
- `setup-token` requires an interactive TTY and runs the provider's token-auth
|
|
127
|
+
method (defaulting to that provider's `setup-token` method when it exposes
|
|
128
|
+
one).
|
|
129
|
+
- `paste-token` accepts a token string generated elsewhere or from automation.
|
|
130
|
+
- `paste-token` requires `--provider`, prompts for the token value, and writes
|
|
131
|
+
it to the default profile id `<provider>:manual` unless you pass
|
|
132
|
+
`--profile-id`.
|
|
133
|
+
- `paste-token --expires-in <duration>` stores an absolute token expiry from a
|
|
134
|
+
relative duration such as `365d` or `12h`.
|
|
135
|
+
- Anthropic billing note: We believe Claude Code CLI fallback is likely allowed for local, user-managed automation based on Anthropic's public CLI docs. That said, Anthropic's third-party harness policy creates enough ambiguity around subscription-backed use in external products that we do not recommend it for production. Anthropic also notified Durar users on **April 4, 2026 at 12:00 PM PT / 8:00 PM BST** that the **Durar** Claude-login path counts as third-party harness usage and requires **Extra Usage** billed separately from the subscription.
|
|
136
|
+
- Anthropic `setup-token` / `paste-token` are available again as a legacy/manual Durar path. Use them with the expectation that Anthropic told Durar users this path requires **Extra Usage**.
|
package/docs/cli/node.md
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `Durar node` (headless node host)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Running the headless node host
|
|
5
|
+
- Pairing a non-macOS node for system.run
|
|
6
|
+
title: "node"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# `Durar node`
|
|
10
|
+
|
|
11
|
+
Run a **headless node host** that connects to the Gateway WebSocket and exposes
|
|
12
|
+
`system.run` / `system.which` on this machine.
|
|
13
|
+
|
|
14
|
+
## Why use a node host?
|
|
15
|
+
|
|
16
|
+
Use a node host when you want agents to **run commands on other machines** in your
|
|
17
|
+
network without installing a full macOS companion app there.
|
|
18
|
+
|
|
19
|
+
Common use cases:
|
|
20
|
+
|
|
21
|
+
- Run commands on remote Linux/Windows boxes (build servers, lab machines, NAS).
|
|
22
|
+
- Keep exec **sandboxed** on the gateway, but delegate approved runs to other hosts.
|
|
23
|
+
- Provide a lightweight, headless execution target for automation or CI nodes.
|
|
24
|
+
|
|
25
|
+
Execution is still guarded by **exec approvals** and per‑agent allowlists on the
|
|
26
|
+
node host, so you can keep command access scoped and explicit.
|
|
27
|
+
|
|
28
|
+
## Browser proxy (zero-config)
|
|
29
|
+
|
|
30
|
+
Node hosts automatically advertise a browser proxy if `browser.enabled` is not
|
|
31
|
+
disabled on the node. This lets the agent use browser automation on that node
|
|
32
|
+
without extra configuration.
|
|
33
|
+
|
|
34
|
+
By default, the proxy exposes the node's normal browser profile surface. If you
|
|
35
|
+
set `nodeHost.browserProxy.allowProfiles`, the proxy becomes restrictive:
|
|
36
|
+
non-allowlisted profile targeting is rejected, and persistent profile
|
|
37
|
+
create/delete routes are blocked through the proxy.
|
|
38
|
+
|
|
39
|
+
Disable it on the node if needed:
|
|
40
|
+
|
|
41
|
+
```json5
|
|
42
|
+
{
|
|
43
|
+
nodeHost: {
|
|
44
|
+
browserProxy: {
|
|
45
|
+
enabled: false,
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Run (foreground)
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
Durar node run --host <gateway-host> --port 18789
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Options:
|
|
58
|
+
|
|
59
|
+
- `--host <host>`: Gateway WebSocket host (default: `127.0.0.1`)
|
|
60
|
+
- `--port <port>`: Gateway WebSocket port (default: `18789`)
|
|
61
|
+
- `--tls`: Use TLS for the gateway connection
|
|
62
|
+
- `--tls-fingerprint <sha256>`: Expected TLS certificate fingerprint (sha256)
|
|
63
|
+
- `--node-id <id>`: Override node id (clears pairing token)
|
|
64
|
+
- `--display-name <name>`: Override the node display name
|
|
65
|
+
|
|
66
|
+
## Gateway auth for node host
|
|
67
|
+
|
|
68
|
+
`Durar node run` and `Durar node install` resolve gateway auth from config/env (no `--token`/`--password` flags on node commands):
|
|
69
|
+
|
|
70
|
+
- `Durar_GATEWAY_TOKEN` / `Durar_GATEWAY_PASSWORD` are checked first.
|
|
71
|
+
- Then local config fallback: `gateway.auth.token` / `gateway.auth.password`.
|
|
72
|
+
- In local mode, node host intentionally does not inherit `gateway.remote.token` / `gateway.remote.password`.
|
|
73
|
+
- If `gateway.auth.token` / `gateway.auth.password` is explicitly configured via SecretRef and unresolved, node auth resolution fails closed (no remote fallback masking).
|
|
74
|
+
- In `gateway.mode=remote`, remote client fields (`gateway.remote.token` / `gateway.remote.password`) are also eligible per remote precedence rules.
|
|
75
|
+
- Node host auth resolution only honors `Durar_GATEWAY_*` env vars.
|
|
76
|
+
|
|
77
|
+
## Service (background)
|
|
78
|
+
|
|
79
|
+
Install a headless node host as a user service.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
Durar node install --host <gateway-host> --port 18789
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Options:
|
|
86
|
+
|
|
87
|
+
- `--host <host>`: Gateway WebSocket host (default: `127.0.0.1`)
|
|
88
|
+
- `--port <port>`: Gateway WebSocket port (default: `18789`)
|
|
89
|
+
- `--tls`: Use TLS for the gateway connection
|
|
90
|
+
- `--tls-fingerprint <sha256>`: Expected TLS certificate fingerprint (sha256)
|
|
91
|
+
- `--node-id <id>`: Override node id (clears pairing token)
|
|
92
|
+
- `--display-name <name>`: Override the node display name
|
|
93
|
+
- `--runtime <runtime>`: Service runtime (`node` or `bun`)
|
|
94
|
+
- `--force`: Reinstall/overwrite if already installed
|
|
95
|
+
|
|
96
|
+
Manage the service:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
Durar node status
|
|
100
|
+
Durar node stop
|
|
101
|
+
Durar node restart
|
|
102
|
+
Durar node uninstall
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Use `Durar node run` for a foreground node host (no service).
|
|
106
|
+
|
|
107
|
+
Service commands accept `--json` for machine-readable output.
|
|
108
|
+
|
|
109
|
+
## Pairing
|
|
110
|
+
|
|
111
|
+
The first connection creates a pending device pairing request (`role: node`) on the Gateway.
|
|
112
|
+
Approve it via:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
Durar devices list
|
|
116
|
+
Durar devices approve <requestId>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
If the node retries pairing with changed auth details (role/scopes/public key),
|
|
120
|
+
the previous pending request is superseded and a new `requestId` is created.
|
|
121
|
+
Run `Durar devices list` again before approval.
|
|
122
|
+
|
|
123
|
+
The node host stores its node id, token, display name, and gateway connection info in
|
|
124
|
+
`~/.Durar/node.json`.
|
|
125
|
+
|
|
126
|
+
## Exec approvals
|
|
127
|
+
|
|
128
|
+
`system.run` is gated by local exec approvals:
|
|
129
|
+
|
|
130
|
+
- `~/.Durar/exec-approvals.json`
|
|
131
|
+
- [Exec approvals](/tools/exec-approvals)
|
|
132
|
+
- `Durar approvals --node <id|name|ip>` (edit from the Gateway)
|
|
133
|
+
|
|
134
|
+
For approved async node exec, Durar prepares a canonical `systemRunPlan`
|
|
135
|
+
before prompting. The later approved `system.run` forward reuses that stored
|
|
136
|
+
plan, so edits to command/cwd/session fields after the approval request was
|
|
137
|
+
created are rejected instead of changing what the node executes.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `Durar nodes` (status, pairing, invoke, camera/canvas/screen)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You’re managing paired nodes (cameras, screen, canvas)
|
|
5
|
+
- You need to approve requests or invoke node commands
|
|
6
|
+
title: "nodes"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# `Durar nodes`
|
|
10
|
+
|
|
11
|
+
Manage paired nodes (devices) and invoke node capabilities.
|
|
12
|
+
|
|
13
|
+
Related:
|
|
14
|
+
|
|
15
|
+
- Nodes overview: [Nodes](/nodes)
|
|
16
|
+
- Camera: [Camera nodes](/nodes/camera)
|
|
17
|
+
- Images: [Image nodes](/nodes/images)
|
|
18
|
+
|
|
19
|
+
Common options:
|
|
20
|
+
|
|
21
|
+
- `--url`, `--token`, `--timeout`, `--json`
|
|
22
|
+
|
|
23
|
+
## Common commands
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
Durar nodes list
|
|
27
|
+
Durar nodes list --connected
|
|
28
|
+
Durar nodes list --last-connected 24h
|
|
29
|
+
Durar nodes pending
|
|
30
|
+
Durar nodes approve <requestId>
|
|
31
|
+
Durar nodes reject <requestId>
|
|
32
|
+
Durar nodes rename --node <id|name|ip> --name <displayName>
|
|
33
|
+
Durar nodes status
|
|
34
|
+
Durar nodes status --connected
|
|
35
|
+
Durar nodes status --last-connected 24h
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`nodes list` prints pending/paired tables. Paired rows include the most recent connect age (Last Connect).
|
|
39
|
+
Use `--connected` to only show currently-connected nodes. Use `--last-connected <duration>` to
|
|
40
|
+
filter to nodes that connected within a duration (e.g. `24h`, `7d`).
|
|
41
|
+
|
|
42
|
+
Approval note:
|
|
43
|
+
|
|
44
|
+
- `Durar nodes pending` only needs pairing scope.
|
|
45
|
+
- `Durar nodes approve <requestId>` inherits extra scope requirements from the
|
|
46
|
+
pending request:
|
|
47
|
+
- commandless request: pairing only
|
|
48
|
+
- non-exec node commands: pairing + write
|
|
49
|
+
- `system.run` / `system.run.prepare` / `system.which`: pairing + admin
|
|
50
|
+
|
|
51
|
+
## Invoke
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
Durar nodes invoke --node <id|name|ip> --command <command> --params <json>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Invoke flags:
|
|
58
|
+
|
|
59
|
+
- `--params <json>`: JSON object string (default `{}`).
|
|
60
|
+
- `--invoke-timeout <ms>`: node invoke timeout (default `15000`).
|
|
61
|
+
- `--idempotency-key <key>`: optional idempotency key.
|
|
62
|
+
- `system.run` and `system.run.prepare` are blocked here; use the `exec` tool with `host=node` for shell execution.
|
|
63
|
+
|
|
64
|
+
For shell execution on a node, use the `exec` tool with `host=node` instead of `Durar nodes run`.
|
|
65
|
+
The `nodes` CLI is now capability-focused: direct RPC via `nodes invoke`, plus pairing, camera,
|
|
66
|
+
screen, location, canvas, and notifications.
|