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,367 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Runbook for the Gateway service, lifecycle, and operations"
|
|
3
|
+
read_when:
|
|
4
|
+
- Running or debugging the gateway process
|
|
5
|
+
title: "Gateway Runbook"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Gateway runbook
|
|
9
|
+
|
|
10
|
+
Use this page for day-1 startup and day-2 operations of the Gateway service.
|
|
11
|
+
|
|
12
|
+
<CardGroup cols={2}>
|
|
13
|
+
<Card title="Deep troubleshooting" icon="siren" href="/gateway/troubleshooting">
|
|
14
|
+
Symptom-first diagnostics with exact command ladders and log signatures.
|
|
15
|
+
</Card>
|
|
16
|
+
<Card title="Configuration" icon="sliders" href="/gateway/configuration">
|
|
17
|
+
Task-oriented setup guide + full configuration reference.
|
|
18
|
+
</Card>
|
|
19
|
+
<Card title="Secrets management" icon="key-round" href="/gateway/secrets">
|
|
20
|
+
SecretRef contract, runtime snapshot behavior, and migrate/reload operations.
|
|
21
|
+
</Card>
|
|
22
|
+
<Card title="Secrets plan contract" icon="shield-check" href="/gateway/secrets-plan-contract">
|
|
23
|
+
Exact `secrets apply` target/path rules and ref-only auth-profile behavior.
|
|
24
|
+
</Card>
|
|
25
|
+
</CardGroup>
|
|
26
|
+
|
|
27
|
+
## 5-minute local startup
|
|
28
|
+
|
|
29
|
+
<Steps>
|
|
30
|
+
<Step title="Start the Gateway">
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
Durar gateway --port 18789
|
|
34
|
+
# debug/trace mirrored to stdio
|
|
35
|
+
Durar gateway --port 18789 --verbose
|
|
36
|
+
# force-kill listener on selected port, then start
|
|
37
|
+
Durar gateway --force
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
</Step>
|
|
41
|
+
|
|
42
|
+
<Step title="Verify service health">
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
Durar gateway status
|
|
46
|
+
Durar status
|
|
47
|
+
Durar logs --follow
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Healthy baseline: `Runtime: running` and `RPC probe: ok`.
|
|
51
|
+
|
|
52
|
+
</Step>
|
|
53
|
+
|
|
54
|
+
<Step title="Validate channel readiness">
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
Durar channels status --probe
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
With a reachable gateway this runs live per-account channel probes and optional audits.
|
|
61
|
+
If the gateway is unreachable, the CLI falls back to config-only channel summaries instead
|
|
62
|
+
of live probe output.
|
|
63
|
+
|
|
64
|
+
</Step>
|
|
65
|
+
</Steps>
|
|
66
|
+
|
|
67
|
+
<Note>
|
|
68
|
+
Gateway config reload watches the active config file path (resolved from profile/state defaults, or `Durar_CONFIG_PATH` when set).
|
|
69
|
+
Default mode is `gateway.reload.mode="hybrid"`.
|
|
70
|
+
After the first successful load, the running process serves the active in-memory config snapshot; successful reload swaps that snapshot atomically.
|
|
71
|
+
</Note>
|
|
72
|
+
|
|
73
|
+
## Runtime model
|
|
74
|
+
|
|
75
|
+
- One always-on process for routing, control plane, and channel connections.
|
|
76
|
+
- Single multiplexed port for:
|
|
77
|
+
- WebSocket control/RPC
|
|
78
|
+
- HTTP APIs, OpenAI compatible (`/v1/models`, `/v1/embeddings`, `/v1/chat/completions`, `/v1/responses`, `/tools/invoke`)
|
|
79
|
+
- Control UI and hooks
|
|
80
|
+
- Default bind mode: `loopback`.
|
|
81
|
+
- Auth is required by default. Shared-secret setups use
|
|
82
|
+
`gateway.auth.token` / `gateway.auth.password` (or
|
|
83
|
+
`Durar_GATEWAY_TOKEN` / `Durar_GATEWAY_PASSWORD`), and non-loopback
|
|
84
|
+
reverse-proxy setups can use `gateway.auth.mode: "trusted-proxy"`.
|
|
85
|
+
|
|
86
|
+
## OpenAI-compatible endpoints
|
|
87
|
+
|
|
88
|
+
Durar’s highest-leverage compatibility surface is now:
|
|
89
|
+
|
|
90
|
+
- `GET /v1/models`
|
|
91
|
+
- `GET /v1/models/{id}`
|
|
92
|
+
- `POST /v1/embeddings`
|
|
93
|
+
- `POST /v1/chat/completions`
|
|
94
|
+
- `POST /v1/responses`
|
|
95
|
+
|
|
96
|
+
Why this set matters:
|
|
97
|
+
|
|
98
|
+
- Most Open WebUI, LobeChat, and LibreChat integrations probe `/v1/models` first.
|
|
99
|
+
- Many RAG and memory pipelines expect `/v1/embeddings`.
|
|
100
|
+
- Agent-native clients increasingly prefer `/v1/responses`.
|
|
101
|
+
|
|
102
|
+
Planning note:
|
|
103
|
+
|
|
104
|
+
- `/v1/models` is agent-first: it returns `Durar`, `Durar/default`, and `Durar/<agentId>`.
|
|
105
|
+
- `Durar/default` is the stable alias that always maps to the configured default agent.
|
|
106
|
+
- Use `x-Durar-model` when you want a backend provider/model override; otherwise the selected agent's normal model and embedding setup stays in control.
|
|
107
|
+
|
|
108
|
+
All of these run on the main Gateway port and use the same trusted operator auth boundary as the rest of the Gateway HTTP API.
|
|
109
|
+
|
|
110
|
+
### Port and bind precedence
|
|
111
|
+
|
|
112
|
+
| Setting | Resolution order |
|
|
113
|
+
| ------------ | ------------------------------------------------------------- |
|
|
114
|
+
| Gateway port | `--port` → `Durar_GATEWAY_PORT` → `gateway.port` → `18789` |
|
|
115
|
+
| Bind mode | CLI/override → `gateway.bind` → `loopback` |
|
|
116
|
+
|
|
117
|
+
### Hot reload modes
|
|
118
|
+
|
|
119
|
+
| `gateway.reload.mode` | Behavior |
|
|
120
|
+
| --------------------- | ------------------------------------------ |
|
|
121
|
+
| `off` | No config reload |
|
|
122
|
+
| `hot` | Apply only hot-safe changes |
|
|
123
|
+
| `restart` | Restart on reload-required changes |
|
|
124
|
+
| `hybrid` (default) | Hot-apply when safe, restart when required |
|
|
125
|
+
|
|
126
|
+
## Operator command set
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
Durar gateway status
|
|
130
|
+
Durar gateway status --deep # adds a system-level service scan
|
|
131
|
+
Durar gateway status --json
|
|
132
|
+
Durar gateway install
|
|
133
|
+
Durar gateway restart
|
|
134
|
+
Durar gateway stop
|
|
135
|
+
Durar secrets reload
|
|
136
|
+
Durar logs --follow
|
|
137
|
+
Durar doctor
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
`gateway status --deep` is for extra service discovery (LaunchDaemons/systemd system
|
|
141
|
+
units/schtasks), not a deeper RPC health probe.
|
|
142
|
+
|
|
143
|
+
## Multiple gateways (same host)
|
|
144
|
+
|
|
145
|
+
Most installs should run one gateway per machine. A single gateway can host multiple
|
|
146
|
+
agents and channels.
|
|
147
|
+
|
|
148
|
+
You only need multiple gateways when you intentionally want isolation or a rescue bot.
|
|
149
|
+
|
|
150
|
+
Useful checks:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
Durar gateway status --deep
|
|
154
|
+
Durar gateway probe
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
What to expect:
|
|
158
|
+
|
|
159
|
+
- `gateway status --deep` can report `Other gateway-like services detected (best effort)`
|
|
160
|
+
and print cleanup hints when stale launchd/systemd/schtasks installs are still around.
|
|
161
|
+
- `gateway probe` can warn about `multiple reachable gateways` when more than one target
|
|
162
|
+
answers.
|
|
163
|
+
- If that is intentional, isolate ports, config/state, and workspace roots per gateway.
|
|
164
|
+
|
|
165
|
+
Detailed setup: [/gateway/multiple-gateways](/gateway/multiple-gateways).
|
|
166
|
+
|
|
167
|
+
## Remote access
|
|
168
|
+
|
|
169
|
+
Preferred: Tailscale/VPN.
|
|
170
|
+
Fallback: SSH tunnel.
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
ssh -N -L 18789:127.0.0.1:18789 user@host
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Then connect clients to `ws://127.0.0.1:18789` locally.
|
|
177
|
+
|
|
178
|
+
<Warning>
|
|
179
|
+
SSH tunnels do not bypass gateway auth. For shared-secret auth, clients still
|
|
180
|
+
must send `token`/`password` even over the tunnel. For identity-bearing modes,
|
|
181
|
+
the request still has to satisfy that auth path.
|
|
182
|
+
</Warning>
|
|
183
|
+
|
|
184
|
+
See: [Remote Gateway](/gateway/remote), [Authentication](/gateway/authentication), [Tailscale](/gateway/tailscale).
|
|
185
|
+
|
|
186
|
+
## Supervision and service lifecycle
|
|
187
|
+
|
|
188
|
+
Use supervised runs for production-like reliability.
|
|
189
|
+
|
|
190
|
+
<Tabs>
|
|
191
|
+
<Tab title="macOS (launchd)">
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
Durar gateway install
|
|
195
|
+
Durar gateway status
|
|
196
|
+
Durar gateway restart
|
|
197
|
+
Durar gateway stop
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
LaunchAgent labels are `ai.Durar.gateway` (default) or `ai.Durar.<profile>` (named profile). `Durar doctor` audits and repairs service config drift.
|
|
201
|
+
|
|
202
|
+
</Tab>
|
|
203
|
+
|
|
204
|
+
<Tab title="Linux (systemd user)">
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
Durar gateway install
|
|
208
|
+
systemctl --user enable --now Durar-gateway[-<profile>].service
|
|
209
|
+
Durar gateway status
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
For persistence after logout, enable lingering:
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
sudo loginctl enable-linger <user>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Manual user-unit example when you need a custom install path:
|
|
219
|
+
|
|
220
|
+
```ini
|
|
221
|
+
[Unit]
|
|
222
|
+
Description=Durar Gateway
|
|
223
|
+
After=network-online.target
|
|
224
|
+
Wants=network-online.target
|
|
225
|
+
|
|
226
|
+
[Service]
|
|
227
|
+
ExecStart=/usr/local/bin/Durar gateway --port 18789
|
|
228
|
+
Restart=always
|
|
229
|
+
RestartSec=5
|
|
230
|
+
TimeoutStopSec=30
|
|
231
|
+
TimeoutStartSec=30
|
|
232
|
+
SuccessExitStatus=0 143
|
|
233
|
+
KillMode=control-group
|
|
234
|
+
|
|
235
|
+
[Install]
|
|
236
|
+
WantedBy=default.target
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
</Tab>
|
|
240
|
+
|
|
241
|
+
<Tab title="Windows (native)">
|
|
242
|
+
|
|
243
|
+
```powershell
|
|
244
|
+
Durar gateway install
|
|
245
|
+
Durar gateway status --json
|
|
246
|
+
Durar gateway restart
|
|
247
|
+
Durar gateway stop
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Native Windows managed startup uses a Scheduled Task named `Durar Gateway`
|
|
251
|
+
(or `Durar Gateway (<profile>)` for named profiles). If Scheduled Task
|
|
252
|
+
creation is denied, Durar falls back to a per-user Startup-folder launcher
|
|
253
|
+
that points at `gateway.cmd` inside the state directory.
|
|
254
|
+
|
|
255
|
+
</Tab>
|
|
256
|
+
|
|
257
|
+
<Tab title="Linux (system service)">
|
|
258
|
+
|
|
259
|
+
Use a system unit for multi-user/always-on hosts.
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
sudo systemctl daemon-reload
|
|
263
|
+
sudo systemctl enable --now Durar-gateway[-<profile>].service
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Use the same service body as the user unit, but install it under
|
|
267
|
+
`/etc/systemd/system/Durar-gateway[-<profile>].service` and adjust
|
|
268
|
+
`ExecStart=` if your `Durar` binary lives elsewhere.
|
|
269
|
+
|
|
270
|
+
</Tab>
|
|
271
|
+
</Tabs>
|
|
272
|
+
|
|
273
|
+
## Multiple gateways on one host
|
|
274
|
+
|
|
275
|
+
Most setups should run **one** Gateway.
|
|
276
|
+
Use multiple only for strict isolation/redundancy (for example a rescue profile).
|
|
277
|
+
|
|
278
|
+
Checklist per instance:
|
|
279
|
+
|
|
280
|
+
- Unique `gateway.port`
|
|
281
|
+
- Unique `Durar_CONFIG_PATH`
|
|
282
|
+
- Unique `Durar_STATE_DIR`
|
|
283
|
+
- Unique `agents.defaults.workspace`
|
|
284
|
+
|
|
285
|
+
Example:
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
Durar_CONFIG_PATH=~/.Durar/a.json Durar_STATE_DIR=~/.Durar-a Durar gateway --port 19001
|
|
289
|
+
Durar_CONFIG_PATH=~/.Durar/b.json Durar_STATE_DIR=~/.Durar-b Durar gateway --port 19002
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
See: [Multiple gateways](/gateway/multiple-gateways).
|
|
293
|
+
|
|
294
|
+
### Dev profile quick path
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
Durar --dev setup
|
|
298
|
+
Durar --dev gateway --allow-unconfigured
|
|
299
|
+
Durar --dev status
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Defaults include isolated state/config and base gateway port `19001`.
|
|
303
|
+
|
|
304
|
+
## Protocol quick reference (operator view)
|
|
305
|
+
|
|
306
|
+
- First client frame must be `connect`.
|
|
307
|
+
- Gateway returns `hello-ok` snapshot (`presence`, `health`, `stateVersion`, `uptimeMs`, limits/policy).
|
|
308
|
+
- `hello-ok.features.methods` / `events` are a conservative discovery list, not
|
|
309
|
+
a generated dump of every callable helper route.
|
|
310
|
+
- Requests: `req(method, params)` → `res(ok/payload|error)`.
|
|
311
|
+
- Common events include `connect.challenge`, `agent`, `chat`,
|
|
312
|
+
`session.message`, `session.tool`, `sessions.changed`, `presence`, `tick`,
|
|
313
|
+
`health`, `heartbeat`, pairing/approval lifecycle events, and `shutdown`.
|
|
314
|
+
|
|
315
|
+
Agent runs are two-stage:
|
|
316
|
+
|
|
317
|
+
1. Immediate accepted ack (`status:"accepted"`)
|
|
318
|
+
2. Final completion response (`status:"ok"|"error"`), with streamed `agent` events in between.
|
|
319
|
+
|
|
320
|
+
See full protocol docs: [Gateway Protocol](/gateway/protocol).
|
|
321
|
+
|
|
322
|
+
## Operational checks
|
|
323
|
+
|
|
324
|
+
### Liveness
|
|
325
|
+
|
|
326
|
+
- Open WS and send `connect`.
|
|
327
|
+
- Expect `hello-ok` response with snapshot.
|
|
328
|
+
|
|
329
|
+
### Readiness
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
Durar gateway status
|
|
333
|
+
Durar channels status --probe
|
|
334
|
+
Durar health
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### Gap recovery
|
|
338
|
+
|
|
339
|
+
Events are not replayed. On sequence gaps, refresh state (`health`, `system-presence`) before continuing.
|
|
340
|
+
|
|
341
|
+
## Common failure signatures
|
|
342
|
+
|
|
343
|
+
| Signature | Likely issue |
|
|
344
|
+
| -------------------------------------------------------------- | ------------------------------------------------------------------------------- |
|
|
345
|
+
| `refusing to bind gateway ... without auth` | Non-loopback bind without a valid gateway auth path |
|
|
346
|
+
| `another gateway instance is already listening` / `EADDRINUSE` | Port conflict |
|
|
347
|
+
| `Gateway start blocked: set gateway.mode=local` | Config set to remote mode, or local-mode stamp is missing from a damaged config |
|
|
348
|
+
| `unauthorized` during connect | Auth mismatch between client and gateway |
|
|
349
|
+
|
|
350
|
+
For full diagnosis ladders, use [Gateway Troubleshooting](/gateway/troubleshooting).
|
|
351
|
+
|
|
352
|
+
## Safety guarantees
|
|
353
|
+
|
|
354
|
+
- Gateway protocol clients fail fast when Gateway is unavailable (no implicit direct-channel fallback).
|
|
355
|
+
- Invalid/non-connect first frames are rejected and closed.
|
|
356
|
+
- Graceful shutdown emits `shutdown` event before socket close.
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
Related:
|
|
361
|
+
|
|
362
|
+
- [Troubleshooting](/gateway/troubleshooting)
|
|
363
|
+
- [Background Process](/gateway/background-process)
|
|
364
|
+
- [Configuration](/gateway/configuration)
|
|
365
|
+
- [Health](/gateway/health)
|
|
366
|
+
- [Doctor](/gateway/doctor)
|
|
367
|
+
- [Authentication](/gateway/authentication)
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Run Durar on local LLMs (LM Studio, vLLM, LiteLLM, custom OpenAI endpoints)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to serve models from your own GPU box
|
|
5
|
+
- You are wiring LM Studio or an OpenAI-compatible proxy
|
|
6
|
+
- You need the safest local model guidance
|
|
7
|
+
title: "Local Models"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Local models
|
|
11
|
+
|
|
12
|
+
Local is doable, but Durar expects large context + strong defenses against prompt injection. Small cards truncate context and leak safety. Aim high: **≥2 maxed-out Mac Studios or equivalent GPU rig (~$30k+)**. A single **24 GB** GPU works only for lighter prompts with higher latency. Use the **largest / full-size model variant you can run**; aggressively quantized or “small” checkpoints raise prompt-injection risk (see [Security](/gateway/security)).
|
|
13
|
+
|
|
14
|
+
If you want the lowest-friction local setup, start with [Ollama](/providers/ollama) and `Durar onboard`. This page is the opinionated guide for higher-end local stacks and custom OpenAI-compatible local servers.
|
|
15
|
+
|
|
16
|
+
## Recommended: LM Studio + large local model (Responses API)
|
|
17
|
+
|
|
18
|
+
Best current local stack. Load a large model in LM Studio (for example, a full-size Qwen, DeepSeek, or Llama build), enable the local server (default `http://127.0.0.1:1234`), and use Responses API to keep reasoning separate from final text.
|
|
19
|
+
|
|
20
|
+
```json5
|
|
21
|
+
{
|
|
22
|
+
agents: {
|
|
23
|
+
defaults: {
|
|
24
|
+
model: { primary: “lmstudio/my-local-model” },
|
|
25
|
+
models: {
|
|
26
|
+
“anthropic/claude-opus-4-6”: { alias: “Opus” },
|
|
27
|
+
“lmstudio/my-local-model”: { alias: “Local” },
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
models: {
|
|
32
|
+
mode: “merge”,
|
|
33
|
+
providers: {
|
|
34
|
+
lmstudio: {
|
|
35
|
+
baseUrl: “http://127.0.0.1:1234/v1”,
|
|
36
|
+
apiKey: “lmstudio”,
|
|
37
|
+
api: “openai-responses”,
|
|
38
|
+
models: [
|
|
39
|
+
{
|
|
40
|
+
id: “my-local-model”,
|
|
41
|
+
name: “Local Model”,
|
|
42
|
+
reasoning: false,
|
|
43
|
+
input: [“text”],
|
|
44
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
45
|
+
contextWindow: 196608,
|
|
46
|
+
maxTokens: 8192,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**Setup checklist**
|
|
56
|
+
|
|
57
|
+
- Install LM Studio: [https://lmstudio.ai](https://lmstudio.ai)
|
|
58
|
+
- In LM Studio, download the **largest model build available** (avoid “small”/heavily quantized variants), start the server, confirm `http://127.0.0.1:1234/v1/models` lists it.
|
|
59
|
+
- Replace `my-local-model` with the actual model ID shown in LM Studio.
|
|
60
|
+
- Keep the model loaded; cold-load adds startup latency.
|
|
61
|
+
- Adjust `contextWindow`/`maxTokens` if your LM Studio build differs.
|
|
62
|
+
- For WhatsApp, stick to Responses API so only final text is sent.
|
|
63
|
+
|
|
64
|
+
Keep hosted models configured even when running local; use `models.mode: "merge"` so fallbacks stay available.
|
|
65
|
+
|
|
66
|
+
### Hybrid config: hosted primary, local fallback
|
|
67
|
+
|
|
68
|
+
```json5
|
|
69
|
+
{
|
|
70
|
+
agents: {
|
|
71
|
+
defaults: {
|
|
72
|
+
model: {
|
|
73
|
+
primary: "anthropic/claude-sonnet-4-6",
|
|
74
|
+
fallbacks: ["lmstudio/my-local-model", "anthropic/claude-opus-4-6"],
|
|
75
|
+
},
|
|
76
|
+
models: {
|
|
77
|
+
"anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
|
|
78
|
+
"lmstudio/my-local-model": { alias: "Local" },
|
|
79
|
+
"anthropic/claude-opus-4-6": { alias: "Opus" },
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
models: {
|
|
84
|
+
mode: "merge",
|
|
85
|
+
providers: {
|
|
86
|
+
lmstudio: {
|
|
87
|
+
baseUrl: "http://127.0.0.1:1234/v1",
|
|
88
|
+
apiKey: "lmstudio",
|
|
89
|
+
api: "openai-responses",
|
|
90
|
+
models: [
|
|
91
|
+
{
|
|
92
|
+
id: "my-local-model",
|
|
93
|
+
name: "Local Model",
|
|
94
|
+
reasoning: false,
|
|
95
|
+
input: ["text"],
|
|
96
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
97
|
+
contextWindow: 196608,
|
|
98
|
+
maxTokens: 8192,
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Local-first with hosted safety net
|
|
108
|
+
|
|
109
|
+
Swap the primary and fallback order; keep the same providers block and `models.mode: "merge"` so you can fall back to Sonnet or Opus when the local box is down.
|
|
110
|
+
|
|
111
|
+
### Regional hosting / data routing
|
|
112
|
+
|
|
113
|
+
- Hosted MiniMax/Kimi/GLM variants also exist on OpenRouter with region-pinned endpoints (e.g., US-hosted). Pick the regional variant there to keep traffic in your chosen jurisdiction while still using `models.mode: "merge"` for Anthropic/OpenAI fallbacks.
|
|
114
|
+
- Local-only remains the strongest privacy path; hosted regional routing is the middle ground when you need provider features but want control over data flow.
|
|
115
|
+
|
|
116
|
+
## Other OpenAI-compatible local proxies
|
|
117
|
+
|
|
118
|
+
vLLM, LiteLLM, OAI-proxy, or custom gateways work if they expose an OpenAI-style `/v1` endpoint. Replace the provider block above with your endpoint and model ID:
|
|
119
|
+
|
|
120
|
+
```json5
|
|
121
|
+
{
|
|
122
|
+
models: {
|
|
123
|
+
mode: "merge",
|
|
124
|
+
providers: {
|
|
125
|
+
local: {
|
|
126
|
+
baseUrl: "http://127.0.0.1:8000/v1",
|
|
127
|
+
apiKey: "sk-local",
|
|
128
|
+
api: "openai-responses",
|
|
129
|
+
models: [
|
|
130
|
+
{
|
|
131
|
+
id: "my-local-model",
|
|
132
|
+
name: "Local Model",
|
|
133
|
+
reasoning: false,
|
|
134
|
+
input: ["text"],
|
|
135
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
136
|
+
contextWindow: 120000,
|
|
137
|
+
maxTokens: 8192,
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
Keep `models.mode: "merge"` so hosted models stay available as fallbacks.
|
|
147
|
+
|
|
148
|
+
Behavior note for local/proxied `/v1` backends:
|
|
149
|
+
|
|
150
|
+
- Durar treats these as proxy-style OpenAI-compatible routes, not native
|
|
151
|
+
OpenAI endpoints
|
|
152
|
+
- native OpenAI-only request shaping does not apply here: no
|
|
153
|
+
`service_tier`, no Responses `store`, no OpenAI reasoning-compat payload
|
|
154
|
+
shaping, and no prompt-cache hints
|
|
155
|
+
- hidden Durar attribution headers (`originator`, `version`, `User-Agent`)
|
|
156
|
+
are not injected on these custom proxy URLs
|
|
157
|
+
|
|
158
|
+
## Troubleshooting
|
|
159
|
+
|
|
160
|
+
- Gateway can reach the proxy? `curl http://127.0.0.1:1234/v1/models`.
|
|
161
|
+
- LM Studio model unloaded? Reload; cold start is a common “hanging” cause.
|
|
162
|
+
- Context errors? Lower `contextWindow` or raise your server limit.
|
|
163
|
+
- Safety: local models skip provider-side filters; keep agents narrow and compaction on to limit prompt injection blast radius.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Logging surfaces, file logs, WS log styles, and console formatting"
|
|
3
|
+
read_when:
|
|
4
|
+
- Changing logging output or formats
|
|
5
|
+
- Debugging CLI or gateway output
|
|
6
|
+
title: "Gateway Logging"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Logging
|
|
10
|
+
|
|
11
|
+
For a user-facing overview (CLI + Control UI + config), see [/logging](/logging).
|
|
12
|
+
|
|
13
|
+
Durar has two log “surfaces”:
|
|
14
|
+
|
|
15
|
+
- **Console output** (what you see in the terminal / Debug UI).
|
|
16
|
+
- **File logs** (JSON lines) written by the gateway logger.
|
|
17
|
+
|
|
18
|
+
## File-based logger
|
|
19
|
+
|
|
20
|
+
- Default rolling log file is under `/tmp/Durar/` (one file per day): `Durar-YYYY-MM-DD.log`
|
|
21
|
+
- Date uses the gateway host's local timezone.
|
|
22
|
+
- The log file path and level can be configured via `~/.Durar/Durar.json`:
|
|
23
|
+
- `logging.file`
|
|
24
|
+
- `logging.level`
|
|
25
|
+
|
|
26
|
+
The file format is one JSON object per line.
|
|
27
|
+
|
|
28
|
+
The Control UI Logs tab tails this file via the gateway (`logs.tail`).
|
|
29
|
+
CLI can do the same:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
Durar logs --follow
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Verbose vs. log levels**
|
|
36
|
+
|
|
37
|
+
- **File logs** are controlled exclusively by `logging.level`.
|
|
38
|
+
- `--verbose` only affects **console verbosity** (and WS log style); it does **not**
|
|
39
|
+
raise the file log level.
|
|
40
|
+
- To capture verbose-only details in file logs, set `logging.level` to `debug` or
|
|
41
|
+
`trace`.
|
|
42
|
+
|
|
43
|
+
## Console capture
|
|
44
|
+
|
|
45
|
+
The CLI captures `console.log/info/warn/error/debug/trace` and writes them to file logs,
|
|
46
|
+
while still printing to stdout/stderr.
|
|
47
|
+
|
|
48
|
+
You can tune console verbosity independently via:
|
|
49
|
+
|
|
50
|
+
- `logging.consoleLevel` (default `info`)
|
|
51
|
+
- `logging.consoleStyle` (`pretty` | `compact` | `json`)
|
|
52
|
+
|
|
53
|
+
## Tool summary redaction
|
|
54
|
+
|
|
55
|
+
Verbose tool summaries (e.g. `🛠️ Exec: ...`) can mask sensitive tokens before they hit the
|
|
56
|
+
console stream. This is **tools-only** and does not alter file logs.
|
|
57
|
+
|
|
58
|
+
- `logging.redactSensitive`: `off` | `tools` (default: `tools`)
|
|
59
|
+
- `logging.redactPatterns`: array of regex strings (overrides defaults)
|
|
60
|
+
- Use raw regex strings (auto `gi`), or `/pattern/flags` if you need custom flags.
|
|
61
|
+
- Matches are masked by keeping the first 6 + last 4 chars (length >= 18), otherwise `***`.
|
|
62
|
+
- Defaults cover common key assignments, CLI flags, JSON fields, bearer headers, PEM blocks, and popular token prefixes.
|
|
63
|
+
|
|
64
|
+
## Gateway WebSocket logs
|
|
65
|
+
|
|
66
|
+
The gateway prints WebSocket protocol logs in two modes:
|
|
67
|
+
|
|
68
|
+
- **Normal mode (no `--verbose`)**: only “interesting” RPC results are printed:
|
|
69
|
+
- errors (`ok=false`)
|
|
70
|
+
- slow calls (default threshold: `>= 50ms`)
|
|
71
|
+
- parse errors
|
|
72
|
+
- **Verbose mode (`--verbose`)**: prints all WS request/response traffic.
|
|
73
|
+
|
|
74
|
+
### WS log style
|
|
75
|
+
|
|
76
|
+
`Durar gateway` supports a per-gateway style switch:
|
|
77
|
+
|
|
78
|
+
- `--ws-log auto` (default): normal mode is optimized; verbose mode uses compact output
|
|
79
|
+
- `--ws-log compact`: compact output (paired request/response) when verbose
|
|
80
|
+
- `--ws-log full`: full per-frame output when verbose
|
|
81
|
+
- `--compact`: alias for `--ws-log compact`
|
|
82
|
+
|
|
83
|
+
Examples:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# optimized (only errors/slow)
|
|
87
|
+
Durar gateway
|
|
88
|
+
|
|
89
|
+
# show all WS traffic (paired)
|
|
90
|
+
Durar gateway --verbose --ws-log compact
|
|
91
|
+
|
|
92
|
+
# show all WS traffic (full meta)
|
|
93
|
+
Durar gateway --verbose --ws-log full
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Console formatting (subsystem logging)
|
|
97
|
+
|
|
98
|
+
The console formatter is **TTY-aware** and prints consistent, prefixed lines.
|
|
99
|
+
Subsystem loggers keep output grouped and scannable.
|
|
100
|
+
|
|
101
|
+
Behavior:
|
|
102
|
+
|
|
103
|
+
- **Subsystem prefixes** on every line (e.g. `[gateway]`, `[canvas]`, `[tailscale]`)
|
|
104
|
+
- **Subsystem colors** (stable per subsystem) plus level coloring
|
|
105
|
+
- **Color when output is a TTY or the environment looks like a rich terminal** (`TERM`/`COLORTERM`/`TERM_PROGRAM`), respects `NO_COLOR`
|
|
106
|
+
- **Shortened subsystem prefixes**: drops leading `gateway/` + `channels/`, keeps last 2 segments (e.g. `whatsapp/outbound`)
|
|
107
|
+
- **Sub-loggers by subsystem** (auto prefix + structured field `{ subsystem }`)
|
|
108
|
+
- **`logRaw()`** for QR/UX output (no prefix, no formatting)
|
|
109
|
+
- **Console styles** (e.g. `pretty | compact | json`)
|
|
110
|
+
- **Console log level** separate from file log level (file keeps full detail when `logging.level` is set to `debug`/`trace`)
|
|
111
|
+
- **WhatsApp message bodies** are logged at `debug` (use `--verbose` to see them)
|
|
112
|
+
|
|
113
|
+
This keeps existing file logs stable while making interactive output scannable.
|