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,244 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Android app (node): connection runbook + Connect/Chat/Voice/Canvas command surface"
|
|
3
|
+
read_when:
|
|
4
|
+
- Pairing or reconnecting the Android node
|
|
5
|
+
- Debugging Android gateway discovery or auth
|
|
6
|
+
- Verifying chat history parity across clients
|
|
7
|
+
title: "Android App"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Android App (Node)
|
|
11
|
+
|
|
12
|
+
> **Note:** The Android app has not been publicly released yet. The source code is available in the [Durar repository](https://github.com/openclaw/openclaw) under `apps/android`. You can build it yourself using Java 17 and the Android SDK (`./gradlew :app:assemblePlayDebug`). See [apps/android/README.md](https://github.com/openclaw/openclaw/blob/main/apps/android/README.md) for build instructions.
|
|
13
|
+
|
|
14
|
+
## Support snapshot
|
|
15
|
+
|
|
16
|
+
- Role: companion node app (Android does not host the Gateway).
|
|
17
|
+
- Gateway required: yes (run it on macOS, Linux, or Windows via WSL2).
|
|
18
|
+
- Install: [Getting Started](/start/getting-started) + [Pairing](/channels/pairing).
|
|
19
|
+
- Gateway: [Runbook](/gateway) + [Configuration](/gateway/configuration).
|
|
20
|
+
- Protocols: [Gateway protocol](/gateway/protocol) (nodes + control plane).
|
|
21
|
+
|
|
22
|
+
## System control
|
|
23
|
+
|
|
24
|
+
System control (launchd/systemd) lives on the Gateway host. See [Gateway](/gateway).
|
|
25
|
+
|
|
26
|
+
## Connection Runbook
|
|
27
|
+
|
|
28
|
+
Android node app ⇄ (mDNS/NSD + WebSocket) ⇄ **Gateway**
|
|
29
|
+
|
|
30
|
+
Android connects directly to the Gateway WebSocket and uses device pairing (`role: node`).
|
|
31
|
+
|
|
32
|
+
For Tailscale or public hosts, Android requires a secure endpoint:
|
|
33
|
+
|
|
34
|
+
- Preferred: Tailscale Serve / Funnel with `https://<magicdns>` / `wss://<magicdns>`
|
|
35
|
+
- Also supported: any other `wss://` Gateway URL with a real TLS endpoint
|
|
36
|
+
- Cleartext `ws://` remains supported on private LAN addresses / `.local` hosts, plus `localhost`, `127.0.0.1`, and the Android emulator bridge (`10.0.2.2`)
|
|
37
|
+
|
|
38
|
+
### Prerequisites
|
|
39
|
+
|
|
40
|
+
- You can run the Gateway on the “master” machine.
|
|
41
|
+
- Android device/emulator can reach the gateway WebSocket:
|
|
42
|
+
- Same LAN with mDNS/NSD, **or**
|
|
43
|
+
- Same Tailscale tailnet using Wide-Area Bonjour / unicast DNS-SD (see below), **or**
|
|
44
|
+
- Manual gateway host/port (fallback)
|
|
45
|
+
- Tailnet/public mobile pairing does **not** use raw tailnet IP `ws://` endpoints. Use Tailscale Serve or another `wss://` URL instead.
|
|
46
|
+
- You can run the CLI (`Durar`) on the gateway machine (or via SSH).
|
|
47
|
+
|
|
48
|
+
### 1) Start the Gateway
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
Durar gateway --port 18789 --verbose
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Confirm in logs you see something like:
|
|
55
|
+
|
|
56
|
+
- `listening on ws://0.0.0.0:18789`
|
|
57
|
+
|
|
58
|
+
For remote Android access over Tailscale, prefer Serve/Funnel instead of a raw tailnet bind:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
Durar gateway --tailscale serve
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
This gives Android a secure `wss://` / `https://` endpoint. A plain `gateway.bind: "tailnet"` setup is not enough for first-time remote Android pairing unless you also terminate TLS separately.
|
|
65
|
+
|
|
66
|
+
### 2) Verify discovery (optional)
|
|
67
|
+
|
|
68
|
+
From the gateway machine:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
dns-sd -B _Durar-gw._tcp local.
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
More debugging notes: [Bonjour](/gateway/bonjour).
|
|
75
|
+
|
|
76
|
+
If you also configured a wide-area discovery domain, compare against:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
Durar gateway discover --json
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
That shows `local.` plus the configured wide-area domain in one pass and uses the resolved
|
|
83
|
+
service endpoint instead of TXT-only hints.
|
|
84
|
+
|
|
85
|
+
#### Tailnet (Vienna ⇄ London) discovery via unicast DNS-SD
|
|
86
|
+
|
|
87
|
+
Android NSD/mDNS discovery won’t cross networks. If your Android node and the gateway are on different networks but connected via Tailscale, use Wide-Area Bonjour / unicast DNS-SD instead.
|
|
88
|
+
|
|
89
|
+
Discovery alone is not sufficient for tailnet/public Android pairing. The discovered route still needs a secure endpoint (`wss://` or Tailscale Serve):
|
|
90
|
+
|
|
91
|
+
1. Set up a DNS-SD zone (example `Durar.internal.`) on the gateway host and publish `_Durar-gw._tcp` records.
|
|
92
|
+
2. Configure Tailscale split DNS for your chosen domain pointing at that DNS server.
|
|
93
|
+
|
|
94
|
+
Details and example CoreDNS config: [Bonjour](/gateway/bonjour).
|
|
95
|
+
|
|
96
|
+
### 3) Connect from Android
|
|
97
|
+
|
|
98
|
+
In the Android app:
|
|
99
|
+
|
|
100
|
+
- The app keeps its gateway connection alive via a **foreground service** (persistent notification).
|
|
101
|
+
- Open the **Connect** tab.
|
|
102
|
+
- Use **Setup Code** or **Manual** mode.
|
|
103
|
+
- If discovery is blocked, use manual host/port in **Advanced controls**. For private LAN hosts, `ws://` still works. For Tailscale/public hosts, turn on TLS and use a `wss://` / Tailscale Serve endpoint.
|
|
104
|
+
|
|
105
|
+
After the first successful pairing, Android auto-reconnects on launch:
|
|
106
|
+
|
|
107
|
+
- Manual endpoint (if enabled), otherwise
|
|
108
|
+
- The last discovered gateway (best-effort).
|
|
109
|
+
|
|
110
|
+
### 4) Approve pairing (CLI)
|
|
111
|
+
|
|
112
|
+
On the gateway machine:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
Durar devices list
|
|
116
|
+
Durar devices approve <requestId>
|
|
117
|
+
Durar devices reject <requestId>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Pairing details: [Pairing](/channels/pairing).
|
|
121
|
+
|
|
122
|
+
### 5) Verify the node is connected
|
|
123
|
+
|
|
124
|
+
- Via nodes status:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
Durar nodes status
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
- Via Gateway:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
Durar gateway call node.list --params "{}"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 6) Chat + history
|
|
137
|
+
|
|
138
|
+
The Android Chat tab supports session selection (default `main`, plus other existing sessions):
|
|
139
|
+
|
|
140
|
+
- History: `chat.history` (display-normalized; inline directive tags are
|
|
141
|
+
stripped from visible text, plain-text tool-call XML payloads (including
|
|
142
|
+
`<tool_call>...</tool_call>`, `<function_call>...</function_call>`,
|
|
143
|
+
`<tool_calls>...</tool_calls>`, `<function_calls>...</function_calls>`, and
|
|
144
|
+
truncated tool-call blocks) and leaked ASCII/full-width model control tokens
|
|
145
|
+
are stripped, pure silent-token assistant rows such as exact `NO_REPLY` /
|
|
146
|
+
`no_reply` are omitted, and oversized rows can be replaced with placeholders)
|
|
147
|
+
- Send: `chat.send`
|
|
148
|
+
- Push updates (best-effort): `chat.subscribe` → `event:"chat"`
|
|
149
|
+
|
|
150
|
+
### 7) Canvas + camera
|
|
151
|
+
|
|
152
|
+
#### Gateway Canvas Host (recommended for web content)
|
|
153
|
+
|
|
154
|
+
If you want the node to show real HTML/CSS/JS that the agent can edit on disk, point the node at the Gateway canvas host.
|
|
155
|
+
|
|
156
|
+
Note: nodes load canvas from the Gateway HTTP server (same port as `gateway.port`, default `18789`).
|
|
157
|
+
|
|
158
|
+
1. Create `~/.Durar/workspace/canvas/index.html` on the gateway host.
|
|
159
|
+
|
|
160
|
+
2. Navigate the node to it (LAN):
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
Durar nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__Durar__/canvas/"}'
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Tailnet (optional): if both devices are on Tailscale, use a MagicDNS name or tailnet IP instead of `.local`, e.g. `http://<gateway-magicdns>:18789/__Durar__/canvas/`.
|
|
167
|
+
|
|
168
|
+
This server injects a live-reload client into HTML and reloads on file changes.
|
|
169
|
+
The A2UI host lives at `http://<gateway-host>:18789/__Durar__/a2ui/`.
|
|
170
|
+
|
|
171
|
+
Canvas commands (foreground only):
|
|
172
|
+
|
|
173
|
+
- `canvas.eval`, `canvas.snapshot`, `canvas.navigate` (use `{"url":""}` or `{"url":"/"}` to return to the default scaffold). `canvas.snapshot` returns `{ format, base64 }` (default `format="jpeg"`).
|
|
174
|
+
- A2UI: `canvas.a2ui.push`, `canvas.a2ui.reset` (`canvas.a2ui.pushJSONL` legacy alias)
|
|
175
|
+
|
|
176
|
+
Camera commands (foreground only; permission-gated):
|
|
177
|
+
|
|
178
|
+
- `camera.snap` (jpg)
|
|
179
|
+
- `camera.clip` (mp4)
|
|
180
|
+
|
|
181
|
+
See [Camera node](/nodes/camera) for parameters and CLI helpers.
|
|
182
|
+
|
|
183
|
+
### 8) Voice + expanded Android command surface
|
|
184
|
+
|
|
185
|
+
- Voice: Android uses a single mic on/off flow in the Voice tab with transcript capture and `talk.speak` playback. Local system TTS is used only when `talk.speak` is unavailable. Voice stops when the app leaves the foreground.
|
|
186
|
+
- Voice wake/talk-mode toggles are currently removed from Android UX/runtime.
|
|
187
|
+
- Additional Android command families (availability depends on device + permissions):
|
|
188
|
+
- `device.status`, `device.info`, `device.permissions`, `device.health`
|
|
189
|
+
- `notifications.list`, `notifications.actions` (see [Notification forwarding](#notification-forwarding) below)
|
|
190
|
+
- `photos.latest`
|
|
191
|
+
- `contacts.search`, `contacts.add`
|
|
192
|
+
- `calendar.events`, `calendar.add`
|
|
193
|
+
- `callLog.search`
|
|
194
|
+
- `sms.search`
|
|
195
|
+
- `motion.activity`, `motion.pedometer`
|
|
196
|
+
|
|
197
|
+
## Assistant entrypoints
|
|
198
|
+
|
|
199
|
+
Android supports launching Durar from the system assistant trigger (Google
|
|
200
|
+
Assistant). When configured, holding the home button or saying "Hey Google, ask
|
|
201
|
+
Durar..." opens the app and hands the prompt into the chat composer.
|
|
202
|
+
|
|
203
|
+
This uses Android **App Actions** metadata declared in the app manifest. No
|
|
204
|
+
extra configuration is needed on the gateway side -- the assistant intent is
|
|
205
|
+
handled entirely by the Android app and forwarded as a normal chat message.
|
|
206
|
+
|
|
207
|
+
<Note>
|
|
208
|
+
App Actions availability depends on the device, Google Play Services version,
|
|
209
|
+
and whether the user has set Durar as the default assistant app.
|
|
210
|
+
</Note>
|
|
211
|
+
|
|
212
|
+
## Notification forwarding
|
|
213
|
+
|
|
214
|
+
Android can forward device notifications to the gateway as events. Several controls let you scope which notifications are forwarded and when.
|
|
215
|
+
|
|
216
|
+
| Key | Type | Description |
|
|
217
|
+
| -------------------------------- | -------------- | ------------------------------------------------------------------------------------------------- |
|
|
218
|
+
| `notifications.allowPackages` | string[] | Only forward notifications from these package names. If set, all other packages are ignored. |
|
|
219
|
+
| `notifications.denyPackages` | string[] | Never forward notifications from these package names. Applied after `allowPackages`. |
|
|
220
|
+
| `notifications.quietHours.start` | string (HH:mm) | Start of quiet hours window (local device time). Notifications are suppressed during this window. |
|
|
221
|
+
| `notifications.quietHours.end` | string (HH:mm) | End of quiet hours window. |
|
|
222
|
+
| `notifications.rateLimit` | number | Maximum forwarded notifications per package per minute. Excess notifications are dropped. |
|
|
223
|
+
|
|
224
|
+
The notification picker also uses safer behavior for forwarded notification events, preventing accidental forwarding of sensitive system notifications.
|
|
225
|
+
|
|
226
|
+
Example configuration:
|
|
227
|
+
|
|
228
|
+
```json5
|
|
229
|
+
{
|
|
230
|
+
notifications: {
|
|
231
|
+
allowPackages: ["com.slack", "com.whatsapp"],
|
|
232
|
+
denyPackages: ["com.android.systemui"],
|
|
233
|
+
quietHours: {
|
|
234
|
+
start: "22:00",
|
|
235
|
+
end: "07:00",
|
|
236
|
+
},
|
|
237
|
+
rateLimit: 5,
|
|
238
|
+
},
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
<Note>
|
|
243
|
+
Notification forwarding requires the Android Notification Listener permission. The app prompts for this during setup.
|
|
244
|
+
</Note>
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Durar on DigitalOcean (simple paid VPS option)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up Durar on DigitalOcean
|
|
5
|
+
- Looking for cheap VPS hosting for Durar
|
|
6
|
+
title: "DigitalOcean (Platform)"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Durar on DigitalOcean
|
|
10
|
+
|
|
11
|
+
## Goal
|
|
12
|
+
|
|
13
|
+
Run a persistent Durar Gateway on DigitalOcean for **$6/month** (or $4/mo with reserved pricing).
|
|
14
|
+
|
|
15
|
+
If you want a $0/month option and don’t mind ARM + provider-specific setup, see the [Oracle Cloud guide](/platforms/oracle).
|
|
16
|
+
|
|
17
|
+
## Cost Comparison (2026)
|
|
18
|
+
|
|
19
|
+
| Provider | Plan | Specs | Price/mo | Notes |
|
|
20
|
+
| ------------ | --------------- | ---------------------- | ----------- | ------------------------------------- |
|
|
21
|
+
| Oracle Cloud | Always Free ARM | up to 4 OCPU, 24GB RAM | $0 | ARM, limited capacity / signup quirks |
|
|
22
|
+
| Hetzner | CX22 | 2 vCPU, 4GB RAM | €3.79 (~$4) | Cheapest paid option |
|
|
23
|
+
| DigitalOcean | Basic | 1 vCPU, 1GB RAM | $6 | Easy UI, good docs |
|
|
24
|
+
| Vultr | Cloud Compute | 1 vCPU, 1GB RAM | $6 | Many locations |
|
|
25
|
+
| Linode | Nanode | 1 vCPU, 1GB RAM | $5 | Now part of Akamai |
|
|
26
|
+
|
|
27
|
+
**Picking a provider:**
|
|
28
|
+
|
|
29
|
+
- DigitalOcean: simplest UX + predictable setup (this guide)
|
|
30
|
+
- Hetzner: good price/perf (see [Hetzner guide](/install/hetzner))
|
|
31
|
+
- Oracle Cloud: can be $0/month, but is more finicky and ARM-only (see [Oracle guide](/platforms/oracle))
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Prerequisites
|
|
36
|
+
|
|
37
|
+
- DigitalOcean account ([signup with $200 free credit](https://m.do.co/c/signup))
|
|
38
|
+
- SSH key pair (or willingness to use password auth)
|
|
39
|
+
- ~20 minutes
|
|
40
|
+
|
|
41
|
+
## 1) Create a Droplet
|
|
42
|
+
|
|
43
|
+
<Warning>
|
|
44
|
+
Use a clean base image (Ubuntu 24.04 LTS). Avoid third-party Marketplace 1-click images unless you have reviewed their startup scripts and firewall defaults.
|
|
45
|
+
</Warning>
|
|
46
|
+
|
|
47
|
+
1. Log into [DigitalOcean](https://cloud.digitalocean.com/)
|
|
48
|
+
2. Click **Create → Droplets**
|
|
49
|
+
3. Choose:
|
|
50
|
+
- **Region:** Closest to you (or your users)
|
|
51
|
+
- **Image:** Ubuntu 24.04 LTS
|
|
52
|
+
- **Size:** Basic → Regular → **$6/mo** (1 vCPU, 1GB RAM, 25GB SSD)
|
|
53
|
+
- **Authentication:** SSH key (recommended) or password
|
|
54
|
+
4. Click **Create Droplet**
|
|
55
|
+
5. Note the IP address
|
|
56
|
+
|
|
57
|
+
## 2) Connect via SSH
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
ssh root@YOUR_DROPLET_IP
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 3) Install Durar
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Update system
|
|
67
|
+
apt update && apt upgrade -y
|
|
68
|
+
|
|
69
|
+
# Install Node.js 24
|
|
70
|
+
curl -fsSL https://deb.nodesource.com/setup_24.x | bash -
|
|
71
|
+
apt install -y nodejs
|
|
72
|
+
|
|
73
|
+
# Install Durar
|
|
74
|
+
curl -fsSL https://Durar.ai/install.sh | bash
|
|
75
|
+
|
|
76
|
+
# Verify
|
|
77
|
+
Durar --version
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## 4) Run Onboarding
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
Durar onboard --install-daemon
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The wizard will walk you through:
|
|
87
|
+
|
|
88
|
+
- Model auth (API keys or OAuth)
|
|
89
|
+
- Channel setup (Telegram, WhatsApp, Discord, etc.)
|
|
90
|
+
- Gateway token (auto-generated)
|
|
91
|
+
- Daemon installation (systemd)
|
|
92
|
+
|
|
93
|
+
## 5) Verify the Gateway
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Check status
|
|
97
|
+
Durar status
|
|
98
|
+
|
|
99
|
+
# Check service
|
|
100
|
+
systemctl --user status Durar-gateway.service
|
|
101
|
+
|
|
102
|
+
# View logs
|
|
103
|
+
journalctl --user -u Durar-gateway.service -f
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 6) Access the Dashboard
|
|
107
|
+
|
|
108
|
+
The gateway binds to loopback by default. To access the Control UI:
|
|
109
|
+
|
|
110
|
+
**Option A: SSH Tunnel (recommended)**
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# From your local machine
|
|
114
|
+
ssh -L 18789:localhost:18789 root@YOUR_DROPLET_IP
|
|
115
|
+
|
|
116
|
+
# Then open: http://localhost:18789
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Option B: Tailscale Serve (HTTPS, loopback-only)**
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# On the droplet
|
|
123
|
+
curl -fsSL https://tailscale.com/install.sh | sh
|
|
124
|
+
tailscale up
|
|
125
|
+
|
|
126
|
+
# Configure Gateway to use Tailscale Serve
|
|
127
|
+
Durar config set gateway.tailscale.mode serve
|
|
128
|
+
Durar gateway restart
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Open: `https://<magicdns>/`
|
|
132
|
+
|
|
133
|
+
Notes:
|
|
134
|
+
|
|
135
|
+
- Serve keeps the Gateway loopback-only and authenticates Control UI/WebSocket traffic via Tailscale identity headers (tokenless auth assumes trusted gateway host; HTTP APIs do not use those Tailscale headers and instead follow the gateway's normal HTTP auth mode).
|
|
136
|
+
- To require explicit shared-secret credentials instead, set `gateway.auth.allowTailscale: false` and use `gateway.auth.mode: "token"` or `"password"`.
|
|
137
|
+
|
|
138
|
+
**Option C: Tailnet bind (no Serve)**
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
Durar config set gateway.bind tailnet
|
|
142
|
+
Durar gateway restart
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Open: `http://<tailscale-ip>:18789` (token required).
|
|
146
|
+
|
|
147
|
+
## 7) Connect Your Channels
|
|
148
|
+
|
|
149
|
+
### Telegram
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
Durar pairing list telegram
|
|
153
|
+
Durar pairing approve telegram <CODE>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### WhatsApp
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
Durar channels login whatsapp
|
|
160
|
+
# Scan QR code
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
See [Channels](/channels) for other providers.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Optimizations for 1GB RAM
|
|
168
|
+
|
|
169
|
+
The $6 droplet only has 1GB RAM. To keep things running smoothly:
|
|
170
|
+
|
|
171
|
+
### Add swap (recommended)
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
fallocate -l 2G /swapfile
|
|
175
|
+
chmod 600 /swapfile
|
|
176
|
+
mkswap /swapfile
|
|
177
|
+
swapon /swapfile
|
|
178
|
+
echo '/swapfile none swap sw 0 0' >> /etc/fstab
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Use a lighter model
|
|
182
|
+
|
|
183
|
+
If you're hitting OOMs, consider:
|
|
184
|
+
|
|
185
|
+
- Using API-based models (Claude, GPT) instead of local models
|
|
186
|
+
- Setting `agents.defaults.model.primary` to a smaller model
|
|
187
|
+
|
|
188
|
+
### Monitor memory
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
free -h
|
|
192
|
+
htop
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Persistence
|
|
198
|
+
|
|
199
|
+
All state lives in:
|
|
200
|
+
|
|
201
|
+
- `~/.Durar/` — `Durar.json`, per-agent `auth-profiles.json`, channel/provider state, and session data
|
|
202
|
+
- `~/.Durar/workspace/` — workspace (SOUL.md, memory, etc.)
|
|
203
|
+
|
|
204
|
+
These survive reboots. Back them up periodically:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
Durar backup create
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Oracle Cloud Free Alternative
|
|
213
|
+
|
|
214
|
+
Oracle Cloud offers **Always Free** ARM instances that are significantly more powerful than any paid option here — for $0/month.
|
|
215
|
+
|
|
216
|
+
| What you get | Specs |
|
|
217
|
+
| ----------------- | ---------------------- |
|
|
218
|
+
| **4 OCPUs** | ARM Ampere A1 |
|
|
219
|
+
| **24GB RAM** | More than enough |
|
|
220
|
+
| **200GB storage** | Block volume |
|
|
221
|
+
| **Forever free** | No credit card charges |
|
|
222
|
+
|
|
223
|
+
**Caveats:**
|
|
224
|
+
|
|
225
|
+
- Signup can be finicky (retry if it fails)
|
|
226
|
+
- ARM architecture — most things work, but some binaries need ARM builds
|
|
227
|
+
|
|
228
|
+
For the full setup guide, see [Oracle Cloud](/platforms/oracle). For signup tips and troubleshooting the enrollment process, see this [community guide](https://gist.github.com/rssnyder/51e3cfedd730e7dd5f4a816143b25dbd).
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Troubleshooting
|
|
233
|
+
|
|
234
|
+
### Gateway will not start
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
Durar gateway status
|
|
238
|
+
Durar doctor --non-interactive
|
|
239
|
+
journalctl --user -u Durar-gateway.service --no-pager -n 50
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Port already in use
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
lsof -i :18789
|
|
246
|
+
kill <PID>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Out of memory
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
# Check memory
|
|
253
|
+
free -h
|
|
254
|
+
|
|
255
|
+
# Add more swap
|
|
256
|
+
# Or upgrade to $12/mo droplet (2GB RAM)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## See Also
|
|
262
|
+
|
|
263
|
+
- [Hetzner guide](/install/hetzner) — cheaper, more powerful
|
|
264
|
+
- [Docker install](/install/docker) — containerized setup
|
|
265
|
+
- [Tailscale](/gateway/tailscale) — secure remote access
|
|
266
|
+
- [Configuration](/gateway/configuration) — full config reference
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Platform support overview (Gateway + companion apps)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Looking for OS support or install paths
|
|
5
|
+
- Deciding where to run the Gateway
|
|
6
|
+
title: "Platforms"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Platforms
|
|
10
|
+
|
|
11
|
+
Durar core is written in TypeScript. **Node is the recommended runtime**.
|
|
12
|
+
Bun is not recommended for the Gateway (WhatsApp/Telegram bugs).
|
|
13
|
+
|
|
14
|
+
Companion apps exist for macOS (menu bar app) and mobile nodes (iOS/Android). Windows and
|
|
15
|
+
Linux companion apps are planned, but the Gateway is fully supported today.
|
|
16
|
+
Native companion apps for Windows are also planned; the Gateway is recommended via WSL2.
|
|
17
|
+
|
|
18
|
+
## Choose your OS
|
|
19
|
+
|
|
20
|
+
- macOS: [macOS](/platforms/macos)
|
|
21
|
+
- iOS: [iOS](/platforms/ios)
|
|
22
|
+
- Android: [Android](/platforms/android)
|
|
23
|
+
- Windows: [Windows](/platforms/windows)
|
|
24
|
+
- Linux: [Linux](/platforms/linux)
|
|
25
|
+
|
|
26
|
+
## VPS & hosting
|
|
27
|
+
|
|
28
|
+
- VPS hub: [VPS hosting](/vps)
|
|
29
|
+
- Fly.io: [Fly.io](/install/fly)
|
|
30
|
+
- Hetzner (Docker): [Hetzner](/install/hetzner)
|
|
31
|
+
- GCP (Compute Engine): [GCP](/install/gcp)
|
|
32
|
+
- Azure (Linux VM): [Azure](/install/azure)
|
|
33
|
+
- exe.dev (VM + HTTPS proxy): [exe.dev](/install/exe-dev)
|
|
34
|
+
|
|
35
|
+
## Common links
|
|
36
|
+
|
|
37
|
+
- Install guide: [Getting Started](/start/getting-started)
|
|
38
|
+
- Gateway runbook: [Gateway](/gateway)
|
|
39
|
+
- Gateway configuration: [Configuration](/gateway/configuration)
|
|
40
|
+
- Service status: `Durar gateway status`
|
|
41
|
+
|
|
42
|
+
## Gateway service install (CLI)
|
|
43
|
+
|
|
44
|
+
Use one of these (all supported):
|
|
45
|
+
|
|
46
|
+
- Wizard (recommended): `Durar onboard --install-daemon`
|
|
47
|
+
- Direct: `Durar gateway install`
|
|
48
|
+
- Configure flow: `Durar configure` → select **Gateway service**
|
|
49
|
+
- Repair/migrate: `Durar doctor` (offers to install or fix the service)
|
|
50
|
+
|
|
51
|
+
The service target depends on OS:
|
|
52
|
+
|
|
53
|
+
- macOS: LaunchAgent (`ai.Durar.gateway` or `ai.Durar.<profile>`; legacy `com.Durar.*`)
|
|
54
|
+
- Linux/WSL2: systemd user service (`Durar-gateway[-<profile>].service`)
|
|
55
|
+
- Native Windows: Scheduled Task (`Durar Gateway` or `Durar Gateway (<profile>)`), with a per-user Startup-folder login item fallback if task creation is denied
|