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,144 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Node.js"
|
|
3
|
+
summary: "Install and configure Node.js for Durar — version requirements, install options, and PATH troubleshooting"
|
|
4
|
+
read_when:
|
|
5
|
+
- "You need to install Node.js before installing Durar"
|
|
6
|
+
- "You installed Durar but `Durar` is command not found"
|
|
7
|
+
- "npm install -g fails with permissions or PATH issues"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Node.js
|
|
11
|
+
|
|
12
|
+
Durar requires **Node 22.14 or newer**. **Node 24 is the default and recommended runtime** for installs, CI, and release workflows. Node 22 remains supported via the active LTS line. The [installer script](/install#alternative-install-methods) will detect and install Node automatically — this page is for when you want to set up Node yourself and make sure everything is wired up correctly (versions, PATH, global installs).
|
|
13
|
+
|
|
14
|
+
## Check your version
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
node -v
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If this prints `v24.x.x` or higher, you're on the recommended default. If it prints `v22.14.x` or higher, you're on the supported Node 22 LTS path, but we still recommend upgrading to Node 24 when convenient. If Node isn't installed or the version is too old, pick an install method below.
|
|
21
|
+
|
|
22
|
+
## Install Node
|
|
23
|
+
|
|
24
|
+
<Tabs>
|
|
25
|
+
<Tab title="macOS">
|
|
26
|
+
**Homebrew** (recommended):
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
brew install node
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Or download the macOS installer from [nodejs.org](https://nodejs.org/).
|
|
33
|
+
|
|
34
|
+
</Tab>
|
|
35
|
+
<Tab title="Linux">
|
|
36
|
+
**Ubuntu / Debian:**
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
|
|
40
|
+
sudo apt-get install -y nodejs
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Fedora / RHEL:**
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
sudo dnf install nodejs
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Or use a version manager (see below).
|
|
50
|
+
|
|
51
|
+
</Tab>
|
|
52
|
+
<Tab title="Windows">
|
|
53
|
+
**winget** (recommended):
|
|
54
|
+
|
|
55
|
+
```powershell
|
|
56
|
+
winget install OpenJS.NodeJS.LTS
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Chocolatey:**
|
|
60
|
+
|
|
61
|
+
```powershell
|
|
62
|
+
choco install nodejs-lts
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Or download the Windows installer from [nodejs.org](https://nodejs.org/).
|
|
66
|
+
|
|
67
|
+
</Tab>
|
|
68
|
+
</Tabs>
|
|
69
|
+
|
|
70
|
+
<Accordion title="Using a version manager (nvm, fnm, mise, asdf)">
|
|
71
|
+
Version managers let you switch between Node versions easily. Popular options:
|
|
72
|
+
|
|
73
|
+
- [**fnm**](https://github.com/Schniz/fnm) — fast, cross-platform
|
|
74
|
+
- [**nvm**](https://github.com/nvm-sh/nvm) — widely used on macOS/Linux
|
|
75
|
+
- [**mise**](https://mise.jdx.dev/) — polyglot (Node, Python, Ruby, etc.)
|
|
76
|
+
|
|
77
|
+
Example with fnm:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
fnm install 24
|
|
81
|
+
fnm use 24
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
<Warning>
|
|
85
|
+
Make sure your version manager is initialized in your shell startup file (`~/.zshrc` or `~/.bashrc`). If it isn't, `Durar` may not be found in new terminal sessions because the PATH won't include Node's bin directory.
|
|
86
|
+
</Warning>
|
|
87
|
+
</Accordion>
|
|
88
|
+
|
|
89
|
+
## Troubleshooting
|
|
90
|
+
|
|
91
|
+
### `Durar: command not found`
|
|
92
|
+
|
|
93
|
+
This almost always means npm's global bin directory isn't on your PATH.
|
|
94
|
+
|
|
95
|
+
<Steps>
|
|
96
|
+
<Step title="Find your global npm prefix">
|
|
97
|
+
```bash
|
|
98
|
+
npm prefix -g
|
|
99
|
+
```
|
|
100
|
+
</Step>
|
|
101
|
+
<Step title="Check if it's on your PATH">
|
|
102
|
+
```bash
|
|
103
|
+
echo "$PATH"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Look for `<npm-prefix>/bin` (macOS/Linux) or `<npm-prefix>` (Windows) in the output.
|
|
107
|
+
|
|
108
|
+
</Step>
|
|
109
|
+
<Step title="Add it to your shell startup file">
|
|
110
|
+
<Tabs>
|
|
111
|
+
<Tab title="macOS / Linux">
|
|
112
|
+
Add to `~/.zshrc` or `~/.bashrc`:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
export PATH="$(npm prefix -g)/bin:$PATH"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Then open a new terminal (or run `rehash` in zsh / `hash -r` in bash).
|
|
119
|
+
</Tab>
|
|
120
|
+
<Tab title="Windows">
|
|
121
|
+
Add the output of `npm prefix -g` to your system PATH via Settings → System → Environment Variables.
|
|
122
|
+
</Tab>
|
|
123
|
+
</Tabs>
|
|
124
|
+
|
|
125
|
+
</Step>
|
|
126
|
+
</Steps>
|
|
127
|
+
|
|
128
|
+
### Permission errors on `npm install -g` (Linux)
|
|
129
|
+
|
|
130
|
+
If you see `EACCES` errors, switch npm's global prefix to a user-writable directory:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
mkdir -p "$HOME/.npm-global"
|
|
134
|
+
npm config set prefix "$HOME/.npm-global"
|
|
135
|
+
export PATH="$HOME/.npm-global/bin:$PATH"
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Add the `export PATH=...` line to your `~/.bashrc` or `~/.zshrc` to make it permanent.
|
|
139
|
+
|
|
140
|
+
## Related
|
|
141
|
+
|
|
142
|
+
- [Install Overview](/install) — all installation methods
|
|
143
|
+
- [Updating](/install/updating) — keeping Durar up to date
|
|
144
|
+
- [Getting Started](/start/getting-started) — first steps after install
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Deploy OpenClaw on Northflank with one-click template"
|
|
3
|
+
read_when:
|
|
4
|
+
- Deploying OpenClaw to Northflank
|
|
5
|
+
- You want a one-click cloud deploy with browser-based Control UI
|
|
6
|
+
title: "Northflank"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Deploy OpenClaw on Northflank with a one-click template and access it through the web Control UI.
|
|
10
|
+
This is the easiest "no terminal on the server" path: Northflank runs the Gateway for you.
|
|
11
|
+
|
|
12
|
+
## How to get started
|
|
13
|
+
|
|
14
|
+
1. Click [Deploy OpenClaw](https://northflank.com/stacks/deploy-openclaw) to open the template.
|
|
15
|
+
2. Create an [account on Northflank](https://app.northflank.com/signup) if you don't already have one.
|
|
16
|
+
3. Click **Deploy OpenClaw now**.
|
|
17
|
+
4. Set the required environment variable: `OPENCLAW_GATEWAY_TOKEN` (use a strong random value).
|
|
18
|
+
5. Click **Deploy stack** to build and run the OpenClaw template.
|
|
19
|
+
6. Wait for the deployment to complete, then click **View resources**.
|
|
20
|
+
7. Open the OpenClaw service.
|
|
21
|
+
8. Open the public OpenClaw URL at `/openclaw` and connect using the configured shared secret. This template uses `OPENCLAW_GATEWAY_TOKEN` by default; if you replace it with password auth, use that password instead.
|
|
22
|
+
|
|
23
|
+
## What you get
|
|
24
|
+
|
|
25
|
+
- Hosted OpenClaw Gateway + Control UI
|
|
26
|
+
- Persistent storage via Northflank Volume (`/data`) so `openclaw.json`,
|
|
27
|
+
per-agent `auth-profiles.json`, channel/provider state, sessions, and
|
|
28
|
+
workspace survive redeploys
|
|
29
|
+
|
|
30
|
+
## Connect a channel
|
|
31
|
+
|
|
32
|
+
Use the Control UI at `/openclaw` or run `openclaw onboard` via SSH for channel setup instructions:
|
|
33
|
+
|
|
34
|
+
- [Telegram](/channels/telegram) (fastest — just a bot token)
|
|
35
|
+
- [Discord](/channels/discord)
|
|
36
|
+
- [All channels](/channels)
|
|
37
|
+
|
|
38
|
+
## Next steps
|
|
39
|
+
|
|
40
|
+
- Set up messaging channels: [Channels](/channels)
|
|
41
|
+
- Configure the Gateway: [Gateway configuration](/gateway/configuration)
|
|
42
|
+
- Keep OpenClaw up to date: [Updating](/install/updating)
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Host Durar on Oracle Cloud's Always Free ARM tier"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up Durar on Oracle Cloud
|
|
5
|
+
- Looking for free VPS hosting for Durar
|
|
6
|
+
- Want 24/7 Durar on a small server
|
|
7
|
+
title: "Oracle Cloud"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Oracle Cloud
|
|
11
|
+
|
|
12
|
+
Run a persistent Durar Gateway on Oracle Cloud's **Always Free** ARM tier (up to 4 OCPU, 24 GB RAM, 200 GB storage) at no cost.
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
- Oracle Cloud account ([signup](https://www.oracle.com/cloud/free/)) -- see [community signup guide](https://gist.github.com/rssnyder/51e3cfedd730e7dd5f4a816143b25dbd) if you hit issues
|
|
17
|
+
- Tailscale account (free at [tailscale.com](https://tailscale.com))
|
|
18
|
+
- An SSH key pair
|
|
19
|
+
- About 30 minutes
|
|
20
|
+
|
|
21
|
+
## Setup
|
|
22
|
+
|
|
23
|
+
<Steps>
|
|
24
|
+
<Step title="Create an OCI instance">
|
|
25
|
+
1. Log into [Oracle Cloud Console](https://cloud.oracle.com/).
|
|
26
|
+
2. Navigate to **Compute > Instances > Create Instance**.
|
|
27
|
+
3. Configure:
|
|
28
|
+
- **Name:** `Durar`
|
|
29
|
+
- **Image:** Ubuntu 24.04 (aarch64)
|
|
30
|
+
- **Shape:** `VM.Standard.A1.Flex` (Ampere ARM)
|
|
31
|
+
- **OCPUs:** 2 (or up to 4)
|
|
32
|
+
- **Memory:** 12 GB (or up to 24 GB)
|
|
33
|
+
- **Boot volume:** 50 GB (up to 200 GB free)
|
|
34
|
+
- **SSH key:** Add your public key
|
|
35
|
+
4. Click **Create** and note the public IP address.
|
|
36
|
+
|
|
37
|
+
<Tip>
|
|
38
|
+
If instance creation fails with "Out of capacity", try a different availability domain or retry later. Free tier capacity is limited.
|
|
39
|
+
</Tip>
|
|
40
|
+
|
|
41
|
+
</Step>
|
|
42
|
+
|
|
43
|
+
<Step title="Connect and update the system">
|
|
44
|
+
```bash
|
|
45
|
+
ssh ubuntu@YOUR_PUBLIC_IP
|
|
46
|
+
|
|
47
|
+
sudo apt update && sudo apt upgrade -y
|
|
48
|
+
sudo apt install -y build-essential
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`build-essential` is required for ARM compilation of some dependencies.
|
|
52
|
+
|
|
53
|
+
</Step>
|
|
54
|
+
|
|
55
|
+
<Step title="Configure user and hostname">
|
|
56
|
+
```bash
|
|
57
|
+
sudo hostnamectl set-hostname Durar
|
|
58
|
+
sudo passwd ubuntu
|
|
59
|
+
sudo loginctl enable-linger ubuntu
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Enabling linger keeps user services running after logout.
|
|
63
|
+
|
|
64
|
+
</Step>
|
|
65
|
+
|
|
66
|
+
<Step title="Install Tailscale">
|
|
67
|
+
```bash
|
|
68
|
+
curl -fsSL https://tailscale.com/install.sh | sh
|
|
69
|
+
sudo tailscale up --ssh --hostname=Durar
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
From now on, connect via Tailscale: `ssh ubuntu@Durar`.
|
|
73
|
+
|
|
74
|
+
</Step>
|
|
75
|
+
|
|
76
|
+
<Step title="Install Durar">
|
|
77
|
+
```bash
|
|
78
|
+
curl -fsSL https://Durar.ai/install.sh | bash
|
|
79
|
+
source ~/.bashrc
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
When prompted "How do you want to hatch your bot?", select **Do this later**.
|
|
83
|
+
|
|
84
|
+
</Step>
|
|
85
|
+
|
|
86
|
+
<Step title="Configure the gateway">
|
|
87
|
+
Use token auth with Tailscale Serve for secure remote access.
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
Durar config set gateway.bind loopback
|
|
91
|
+
Durar config set gateway.auth.mode token
|
|
92
|
+
Durar doctor --generate-gateway-token
|
|
93
|
+
Durar config set gateway.tailscale.mode serve
|
|
94
|
+
Durar config set gateway.trustedProxies '["127.0.0.1"]'
|
|
95
|
+
|
|
96
|
+
systemctl --user restart Durar-gateway.service
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`gateway.trustedProxies=["127.0.0.1"]` here is only for the local Tailscale Serve proxy's forwarded-IP/local-client handling. It is **not** `gateway.auth.mode: "trusted-proxy"`. Diff viewer routes keep fail-closed behavior in this setup: raw `127.0.0.1` viewer requests without forwarded proxy headers can return `Diff not found`. Use `mode=file` / `mode=both` for attachments, or intentionally enable remote viewers and set `plugins.entries.diffs.config.viewerBaseUrl` (or pass a proxy `baseUrl`) if you need shareable viewer links.
|
|
100
|
+
|
|
101
|
+
</Step>
|
|
102
|
+
|
|
103
|
+
<Step title="Lock down VCN security">
|
|
104
|
+
Block all traffic except Tailscale at the network edge:
|
|
105
|
+
|
|
106
|
+
1. Go to **Networking > Virtual Cloud Networks** in the OCI Console.
|
|
107
|
+
2. Click your VCN, then **Security Lists > Default Security List**.
|
|
108
|
+
3. **Remove** all ingress rules except `0.0.0.0/0 UDP 41641` (Tailscale).
|
|
109
|
+
4. Keep default egress rules (allow all outbound).
|
|
110
|
+
|
|
111
|
+
This blocks SSH on port 22, HTTP, HTTPS, and everything else at the network edge. You can only connect via Tailscale from this point on.
|
|
112
|
+
|
|
113
|
+
</Step>
|
|
114
|
+
|
|
115
|
+
<Step title="Verify">
|
|
116
|
+
```bash
|
|
117
|
+
Durar --version
|
|
118
|
+
systemctl --user status Durar-gateway.service
|
|
119
|
+
tailscale serve status
|
|
120
|
+
curl http://localhost:18789
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Access the Control UI from any device on your tailnet:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
https://Durar.<tailnet-name>.ts.net/
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Replace `<tailnet-name>` with your tailnet name (visible in `tailscale status`).
|
|
130
|
+
|
|
131
|
+
</Step>
|
|
132
|
+
</Steps>
|
|
133
|
+
|
|
134
|
+
## Fallback: SSH tunnel
|
|
135
|
+
|
|
136
|
+
If Tailscale Serve is not working, use an SSH tunnel from your local machine:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
ssh -L 18789:127.0.0.1:18789 ubuntu@Durar
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Then open `http://localhost:18789`.
|
|
143
|
+
|
|
144
|
+
## Troubleshooting
|
|
145
|
+
|
|
146
|
+
**Instance creation fails ("Out of capacity")** -- Free tier ARM instances are popular. Try a different availability domain or retry during off-peak hours.
|
|
147
|
+
|
|
148
|
+
**Tailscale will not connect** -- Run `sudo tailscale up --ssh --hostname=Durar --reset` to re-authenticate.
|
|
149
|
+
|
|
150
|
+
**Gateway will not start** -- Run `Durar doctor --non-interactive` and check logs with `journalctl --user -u Durar-gateway.service -n 50`.
|
|
151
|
+
|
|
152
|
+
**ARM binary issues** -- Most npm packages work on ARM64. For native binaries, look for `linux-arm64` or `aarch64` releases. Verify architecture with `uname -m`.
|
|
153
|
+
|
|
154
|
+
## Next steps
|
|
155
|
+
|
|
156
|
+
- [Channels](/channels) -- connect Telegram, WhatsApp, Discord, and more
|
|
157
|
+
- [Gateway configuration](/gateway/configuration) -- all config options
|
|
158
|
+
- [Updating](/install/updating) -- keep Durar up to date
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Run Durar in a rootless Podman container"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want a containerized gateway with Podman instead of Docker
|
|
5
|
+
title: "Podman"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Podman
|
|
9
|
+
|
|
10
|
+
Run the Durar Gateway in a rootless Podman container, managed by your current non-root user.
|
|
11
|
+
|
|
12
|
+
The intended model is:
|
|
13
|
+
|
|
14
|
+
- Podman runs the gateway container.
|
|
15
|
+
- Your host `Durar` CLI is the control plane.
|
|
16
|
+
- Persistent state lives on the host under `~/.Durar` by default.
|
|
17
|
+
- Day-to-day management uses `Durar --container <name> ...` instead of `sudo -u Durar`, `podman exec`, or a separate service user.
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
- **Podman** in rootless mode
|
|
22
|
+
- **Durar CLI** installed on the host
|
|
23
|
+
- **Optional:** `systemd --user` if you want Quadlet-managed auto-start
|
|
24
|
+
- **Optional:** `sudo` only if you want `loginctl enable-linger "$(whoami)"` for boot persistence on a headless host
|
|
25
|
+
|
|
26
|
+
## Quick start
|
|
27
|
+
|
|
28
|
+
<Steps>
|
|
29
|
+
<Step title="One-time setup">
|
|
30
|
+
From the repo root, run `./scripts/podman/setup.sh`.
|
|
31
|
+
</Step>
|
|
32
|
+
|
|
33
|
+
<Step title="Start the Gateway container">
|
|
34
|
+
Start the container with `./scripts/run-Durar-podman.sh launch`.
|
|
35
|
+
</Step>
|
|
36
|
+
|
|
37
|
+
<Step title="Run onboarding inside the container">
|
|
38
|
+
Run `./scripts/run-Durar-podman.sh launch setup`, then open `http://127.0.0.1:18789/`.
|
|
39
|
+
</Step>
|
|
40
|
+
|
|
41
|
+
<Step title="Manage the running container from the host CLI">
|
|
42
|
+
Set `Durar_CONTAINER=Durar`, then use normal `Durar` commands from the host.
|
|
43
|
+
</Step>
|
|
44
|
+
</Steps>
|
|
45
|
+
|
|
46
|
+
Setup details:
|
|
47
|
+
|
|
48
|
+
- `./scripts/podman/setup.sh` builds `Durar:local` in your rootless Podman store by default, or uses `Durar_IMAGE` / `Durar_PODMAN_IMAGE` if you set one.
|
|
49
|
+
- It creates `~/.Durar/Durar.json` with `gateway.mode: "local"` if missing.
|
|
50
|
+
- It creates `~/.Durar/.env` with `Durar_GATEWAY_TOKEN` if missing.
|
|
51
|
+
- For manual launches, the helper reads only a small allowlist of Podman-related keys from `~/.Durar/.env` and passes explicit runtime env vars to the container; it does not hand the full env file to Podman.
|
|
52
|
+
|
|
53
|
+
Quadlet-managed setup:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
./scripts/podman/setup.sh --quadlet
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Quadlet is a Linux-only option because it depends on systemd user services.
|
|
60
|
+
|
|
61
|
+
You can also set `Durar_PODMAN_QUADLET=1`.
|
|
62
|
+
|
|
63
|
+
Optional build/setup env vars:
|
|
64
|
+
|
|
65
|
+
- `Durar_IMAGE` or `Durar_PODMAN_IMAGE` -- use an existing/pulled image instead of building `Durar:local`
|
|
66
|
+
- `Durar_DOCKER_APT_PACKAGES` -- install extra apt packages during image build
|
|
67
|
+
- `Durar_EXTENSIONS` -- pre-install extension dependencies at build time
|
|
68
|
+
|
|
69
|
+
Container start:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
./scripts/run-Durar-podman.sh launch
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
The script starts the container as your current uid/gid with `--userns=keep-id` and bind-mounts your Durar state into the container.
|
|
76
|
+
|
|
77
|
+
Onboarding:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
./scripts/run-Durar-podman.sh launch setup
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Then open `http://127.0.0.1:18789/` and use the token from `~/.Durar/.env`.
|
|
84
|
+
|
|
85
|
+
Host CLI default:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
export Durar_CONTAINER=Durar
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Then commands such as these will run inside that container automatically:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
Durar dashboard --no-open
|
|
95
|
+
Durar gateway status --deep # includes extra service scan
|
|
96
|
+
Durar doctor
|
|
97
|
+
Durar channels login
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
On macOS, Podman machine may make the browser appear non-local to the gateway.
|
|
101
|
+
If the Control UI reports device-auth errors after launch, use the Tailscale guidance in
|
|
102
|
+
[Podman + Tailscale](#podman--tailscale).
|
|
103
|
+
|
|
104
|
+
<a id="podman--tailscale"></a>
|
|
105
|
+
|
|
106
|
+
## Podman + Tailscale
|
|
107
|
+
|
|
108
|
+
For HTTPS or remote browser access, follow the main Tailscale docs.
|
|
109
|
+
|
|
110
|
+
Podman-specific note:
|
|
111
|
+
|
|
112
|
+
- Keep the Podman publish host at `127.0.0.1`.
|
|
113
|
+
- Prefer host-managed `tailscale serve` over `Durar gateway --tailscale serve`.
|
|
114
|
+
- On macOS, if local browser device-auth context is unreliable, use Tailscale access instead of ad hoc local tunnel workarounds.
|
|
115
|
+
|
|
116
|
+
See:
|
|
117
|
+
|
|
118
|
+
- [Tailscale](/gateway/tailscale)
|
|
119
|
+
- [Control UI](/web/control-ui)
|
|
120
|
+
|
|
121
|
+
## Systemd (Quadlet, optional)
|
|
122
|
+
|
|
123
|
+
If you ran `./scripts/podman/setup.sh --quadlet`, setup installs a Quadlet file at:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
~/.config/containers/systemd/Durar.container
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Useful commands:
|
|
130
|
+
|
|
131
|
+
- **Start:** `systemctl --user start Durar.service`
|
|
132
|
+
- **Stop:** `systemctl --user stop Durar.service`
|
|
133
|
+
- **Status:** `systemctl --user status Durar.service`
|
|
134
|
+
- **Logs:** `journalctl --user -u Durar.service -f`
|
|
135
|
+
|
|
136
|
+
After editing the Quadlet file:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
systemctl --user daemon-reload
|
|
140
|
+
systemctl --user restart Durar.service
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
For boot persistence on SSH/headless hosts, enable lingering for your current user:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
sudo loginctl enable-linger "$(whoami)"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Config, env, and storage
|
|
150
|
+
|
|
151
|
+
- **Config dir:** `~/.Durar`
|
|
152
|
+
- **Workspace dir:** `~/.Durar/workspace`
|
|
153
|
+
- **Token file:** `~/.Durar/.env`
|
|
154
|
+
- **Launch helper:** `./scripts/run-Durar-podman.sh`
|
|
155
|
+
|
|
156
|
+
The launch script and Quadlet bind-mount host state into the container:
|
|
157
|
+
|
|
158
|
+
- `Durar_CONFIG_DIR` -> `/home/node/.Durar`
|
|
159
|
+
- `Durar_WORKSPACE_DIR` -> `/home/node/.Durar/workspace`
|
|
160
|
+
|
|
161
|
+
By default those are host directories, not anonymous container state, so
|
|
162
|
+
`Durar.json`, per-agent `auth-profiles.json`, channel/provider state,
|
|
163
|
+
sessions, and workspace survive container replacement.
|
|
164
|
+
The Podman setup also seeds `gateway.controlUi.allowedOrigins` for `127.0.0.1` and `localhost` on the published gateway port so the local dashboard works with the container's non-loopback bind.
|
|
165
|
+
|
|
166
|
+
Useful env vars for the manual launcher:
|
|
167
|
+
|
|
168
|
+
- `Durar_PODMAN_CONTAINER` -- container name (`Durar` by default)
|
|
169
|
+
- `Durar_PODMAN_IMAGE` / `Durar_IMAGE` -- image to run
|
|
170
|
+
- `Durar_PODMAN_GATEWAY_HOST_PORT` -- host port mapped to container `18789`
|
|
171
|
+
- `Durar_PODMAN_BRIDGE_HOST_PORT` -- host port mapped to container `18790`
|
|
172
|
+
- `Durar_PODMAN_PUBLISH_HOST` -- host interface for published ports; default is `127.0.0.1`
|
|
173
|
+
- `Durar_GATEWAY_BIND` -- gateway bind mode inside the container; default is `lan`
|
|
174
|
+
- `Durar_PODMAN_USERNS` -- `keep-id` (default), `auto`, or `host`
|
|
175
|
+
|
|
176
|
+
The manual launcher reads `~/.Durar/.env` before finalizing container/image defaults, so you can persist these there.
|
|
177
|
+
|
|
178
|
+
If you use a non-default `Durar_CONFIG_DIR` or `Durar_WORKSPACE_DIR`, set the same variables for both `./scripts/podman/setup.sh` and later `./scripts/run-Durar-podman.sh launch` commands. The repo-local launcher does not persist custom path overrides across shells.
|
|
179
|
+
|
|
180
|
+
Quadlet note:
|
|
181
|
+
|
|
182
|
+
- The generated Quadlet service intentionally keeps a fixed, hardened default shape: `127.0.0.1` published ports, `--bind lan` inside the container, and `keep-id` user namespace.
|
|
183
|
+
- It pins `Durar_NO_RESPAWN=1`, `Restart=on-failure`, and `TimeoutStartSec=300`.
|
|
184
|
+
- It publishes both `127.0.0.1:18789:18789` (gateway) and `127.0.0.1:18790:18790` (bridge).
|
|
185
|
+
- It reads `~/.Durar/.env` as a runtime `EnvironmentFile` for values such as `Durar_GATEWAY_TOKEN`, but it does not consume the manual launcher's Podman-specific override allowlist.
|
|
186
|
+
- If you need custom publish ports, publish host, or other container-run flags, use the manual launcher or edit `~/.config/containers/systemd/Durar.container` directly, then reload and restart the service.
|
|
187
|
+
|
|
188
|
+
## Useful commands
|
|
189
|
+
|
|
190
|
+
- **Container logs:** `podman logs -f Durar`
|
|
191
|
+
- **Stop container:** `podman stop Durar`
|
|
192
|
+
- **Remove container:** `podman rm -f Durar`
|
|
193
|
+
- **Open dashboard URL from host CLI:** `Durar dashboard --no-open`
|
|
194
|
+
- **Health/status via host CLI:** `Durar gateway status --deep` (RPC probe + extra
|
|
195
|
+
service scan)
|
|
196
|
+
|
|
197
|
+
## Troubleshooting
|
|
198
|
+
|
|
199
|
+
- **Permission denied (EACCES) on config or workspace:** The container runs with `--userns=keep-id` and `--user <your uid>:<your gid>` by default. Ensure the host config/workspace paths are owned by your current user.
|
|
200
|
+
- **Gateway start blocked (missing `gateway.mode=local`):** Ensure `~/.Durar/Durar.json` exists and sets `gateway.mode="local"`. `scripts/podman/setup.sh` creates this if missing.
|
|
201
|
+
- **Container CLI commands hit the wrong target:** Use `Durar --container <name> ...` explicitly, or export `Durar_CONTAINER=<name>` in your shell.
|
|
202
|
+
- **`Durar update` fails with `--container`:** Expected. Rebuild/pull the image, then restart the container or the Quadlet service.
|
|
203
|
+
- **Quadlet service does not start:** Run `systemctl --user daemon-reload`, then `systemctl --user start Durar.service`. On headless systems you may also need `sudo loginctl enable-linger "$(whoami)"`.
|
|
204
|
+
- **SELinux blocks bind mounts:** Leave the default mount behavior alone; the launcher auto-adds `:Z` on Linux when SELinux is enforcing or permissive.
|
|
205
|
+
|
|
206
|
+
## Related
|
|
207
|
+
|
|
208
|
+
- [Docker](/install/docker)
|
|
209
|
+
- [Gateway background process](/gateway/background-process)
|
|
210
|
+
- [Gateway troubleshooting](/gateway/troubleshooting)
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Deploy OpenClaw on Railway with one-click template"
|
|
3
|
+
read_when:
|
|
4
|
+
- Deploying OpenClaw to Railway
|
|
5
|
+
- You want a one-click cloud deploy with browser-based Control UI
|
|
6
|
+
title: "Railway"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Deploy OpenClaw on Railway with a one-click template and access it through the web Control UI.
|
|
10
|
+
This is the easiest "no terminal on the server" path: Railway runs the Gateway for you.
|
|
11
|
+
|
|
12
|
+
## Quick checklist (new users)
|
|
13
|
+
|
|
14
|
+
1. Click **Deploy on Railway** (below).
|
|
15
|
+
2. Add a **Volume** mounted at `/data`.
|
|
16
|
+
3. Set the required **Variables** (at least `OPENCLAW_GATEWAY_PORT` and `OPENCLAW_GATEWAY_TOKEN`).
|
|
17
|
+
4. Enable **HTTP Proxy** on port `8080`.
|
|
18
|
+
5. Open `https://<your-railway-domain>/openclaw` and connect using the configured shared secret. This template uses `OPENCLAW_GATEWAY_TOKEN` by default; if you replace it with password auth, use that password instead.
|
|
19
|
+
|
|
20
|
+
## One-click deploy
|
|
21
|
+
|
|
22
|
+
<a href="https://railway.com/deploy/clawdbot-railway-template" target="_blank" rel="noreferrer">
|
|
23
|
+
Deploy on Railway
|
|
24
|
+
</a>
|
|
25
|
+
|
|
26
|
+
After deploy, find your public URL in **Railway → your service → Settings → Domains**.
|
|
27
|
+
|
|
28
|
+
Railway will either:
|
|
29
|
+
|
|
30
|
+
- give you a generated domain (often `https://<something>.up.railway.app`), or
|
|
31
|
+
- use your custom domain if you attached one.
|
|
32
|
+
|
|
33
|
+
Then open:
|
|
34
|
+
|
|
35
|
+
- `https://<your-railway-domain>/openclaw` — Control UI
|
|
36
|
+
|
|
37
|
+
## What you get
|
|
38
|
+
|
|
39
|
+
- Hosted OpenClaw Gateway + Control UI
|
|
40
|
+
- Persistent storage via Railway Volume (`/data`) so `openclaw.json`,
|
|
41
|
+
per-agent `auth-profiles.json`, channel/provider state, sessions, and
|
|
42
|
+
workspace survive redeploys
|
|
43
|
+
|
|
44
|
+
## Required Railway settings
|
|
45
|
+
|
|
46
|
+
### Public Networking
|
|
47
|
+
|
|
48
|
+
Enable **HTTP Proxy** for the service.
|
|
49
|
+
|
|
50
|
+
- Port: `8080`
|
|
51
|
+
|
|
52
|
+
### Volume (required)
|
|
53
|
+
|
|
54
|
+
Attach a volume mounted at:
|
|
55
|
+
|
|
56
|
+
- `/data`
|
|
57
|
+
|
|
58
|
+
### Variables
|
|
59
|
+
|
|
60
|
+
Set these variables on the service:
|
|
61
|
+
|
|
62
|
+
- `OPENCLAW_GATEWAY_PORT=8080` (required — must match the port in Public Networking)
|
|
63
|
+
- `OPENCLAW_GATEWAY_TOKEN` (required; treat as an admin secret)
|
|
64
|
+
- `OPENCLAW_STATE_DIR=/data/.openclaw` (recommended)
|
|
65
|
+
- `OPENCLAW_WORKSPACE_DIR=/data/workspace` (recommended)
|
|
66
|
+
|
|
67
|
+
## Connect a channel
|
|
68
|
+
|
|
69
|
+
Use the Control UI at `/openclaw` or run `openclaw onboard` via Railway's shell for channel setup instructions:
|
|
70
|
+
|
|
71
|
+
- [Telegram](/channels/telegram) (fastest — just a bot token)
|
|
72
|
+
- [Discord](/channels/discord)
|
|
73
|
+
- [All channels](/channels)
|
|
74
|
+
|
|
75
|
+
## Backups & migration
|
|
76
|
+
|
|
77
|
+
Export your state, config, auth profiles, and workspace:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
openclaw backup create
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
This creates a portable backup archive with OpenClaw state plus any configured
|
|
84
|
+
workspace. See [Backup](/cli/backup) for details.
|
|
85
|
+
|
|
86
|
+
## Next steps
|
|
87
|
+
|
|
88
|
+
- Set up messaging channels: [Channels](/channels)
|
|
89
|
+
- Configure the Gateway: [Gateway configuration](/gateway/configuration)
|
|
90
|
+
- Keep OpenClaw up to date: [Updating](/install/updating)
|