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,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Run multiple Durar Gateways on one host (isolation, ports, and profiles)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Running more than one Gateway on the same machine
|
|
5
|
+
- You need isolated config/state/ports per Gateway
|
|
6
|
+
title: "Multiple Gateways"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Multiple Gateways (same host)
|
|
10
|
+
|
|
11
|
+
Most setups should use one Gateway because a single Gateway can handle multiple messaging connections and agents. If you need stronger isolation or redundancy (e.g., a rescue bot), run separate Gateways with isolated profiles/ports.
|
|
12
|
+
|
|
13
|
+
## Isolation checklist (required)
|
|
14
|
+
|
|
15
|
+
- `Durar_CONFIG_PATH` — per-instance config file
|
|
16
|
+
- `Durar_STATE_DIR` — per-instance sessions, creds, caches
|
|
17
|
+
- `agents.defaults.workspace` — per-instance workspace root
|
|
18
|
+
- `gateway.port` (or `--port`) — unique per instance
|
|
19
|
+
- Derived ports (browser/canvas) must not overlap
|
|
20
|
+
|
|
21
|
+
If these are shared, you will hit config races and port conflicts.
|
|
22
|
+
|
|
23
|
+
## Recommended: profiles (`--profile`)
|
|
24
|
+
|
|
25
|
+
Profiles auto-scope `Durar_STATE_DIR` + `Durar_CONFIG_PATH` and suffix service names.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# main
|
|
29
|
+
Durar --profile main setup
|
|
30
|
+
Durar --profile main gateway --port 18789
|
|
31
|
+
|
|
32
|
+
# rescue
|
|
33
|
+
Durar --profile rescue setup
|
|
34
|
+
Durar --profile rescue gateway --port 19001
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Per-profile services:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
Durar --profile main gateway install
|
|
41
|
+
Durar --profile rescue gateway install
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Rescue-bot guide
|
|
45
|
+
|
|
46
|
+
Run a second Gateway on the same host with its own:
|
|
47
|
+
|
|
48
|
+
- profile/config
|
|
49
|
+
- state dir
|
|
50
|
+
- workspace
|
|
51
|
+
- base port (plus derived ports)
|
|
52
|
+
|
|
53
|
+
This keeps the rescue bot isolated from the main bot so it can debug or apply config changes if the primary bot is down.
|
|
54
|
+
|
|
55
|
+
Port spacing: leave at least 20 ports between base ports so the derived browser/canvas/CDP ports never collide.
|
|
56
|
+
|
|
57
|
+
### How to install (rescue bot)
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Main bot (existing or fresh, without --profile param)
|
|
61
|
+
# Runs on port 18789 + Chrome CDC/Canvas/... Ports
|
|
62
|
+
Durar onboard
|
|
63
|
+
Durar gateway install
|
|
64
|
+
|
|
65
|
+
# Rescue bot (isolated profile + ports)
|
|
66
|
+
Durar --profile rescue onboard
|
|
67
|
+
# Notes:
|
|
68
|
+
# - workspace name will be postfixed with -rescue per default
|
|
69
|
+
# - Port should be at least 18789 + 20 Ports,
|
|
70
|
+
# better choose completely different base port, like 19789,
|
|
71
|
+
# - rest of the onboarding is the same as normal
|
|
72
|
+
|
|
73
|
+
# To install the service (if not happened automatically during setup)
|
|
74
|
+
Durar --profile rescue gateway install
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Port mapping (derived)
|
|
78
|
+
|
|
79
|
+
Base port = `gateway.port` (or `Durar_GATEWAY_PORT` / `--port`).
|
|
80
|
+
|
|
81
|
+
- browser control service port = base + 2 (loopback only)
|
|
82
|
+
- canvas host is served on the Gateway HTTP server (same port as `gateway.port`)
|
|
83
|
+
- Browser profile CDP ports auto-allocate from `browser.controlPort + 9 .. + 108`
|
|
84
|
+
|
|
85
|
+
If you override any of these in config or env, you must keep them unique per instance.
|
|
86
|
+
|
|
87
|
+
## Browser/CDP notes (common footgun)
|
|
88
|
+
|
|
89
|
+
- Do **not** pin `browser.cdpUrl` to the same values on multiple instances.
|
|
90
|
+
- Each instance needs its own browser control port and CDP range (derived from its gateway port).
|
|
91
|
+
- If you need explicit CDP ports, set `browser.profiles.<name>.cdpPort` per instance.
|
|
92
|
+
- Remote Chrome: use `browser.profiles.<name>.cdpUrl` (per profile, per instance).
|
|
93
|
+
|
|
94
|
+
## Manual env example
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
Durar_CONFIG_PATH=~/.Durar/main.json \
|
|
98
|
+
Durar_STATE_DIR=~/.Durar-main \
|
|
99
|
+
Durar gateway --port 18789
|
|
100
|
+
|
|
101
|
+
Durar_CONFIG_PATH=~/.Durar/rescue.json \
|
|
102
|
+
Durar_STATE_DIR=~/.Durar-rescue \
|
|
103
|
+
Durar gateway --port 19001
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Quick checks
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
Durar --profile main gateway status --deep
|
|
110
|
+
Durar --profile rescue gateway status --deep
|
|
111
|
+
Durar --profile rescue gateway probe
|
|
112
|
+
Durar --profile main status
|
|
113
|
+
Durar --profile rescue status
|
|
114
|
+
Durar --profile rescue browser status
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Interpretation:
|
|
118
|
+
|
|
119
|
+
- `gateway status --deep` helps catch stale launchd/systemd/schtasks services from older installs.
|
|
120
|
+
- `gateway probe` warning text such as `multiple reachable gateways detected` is expected only when you intentionally run more than one isolated gateway.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How the Gateway, nodes, and canvas host connect."
|
|
3
|
+
read_when:
|
|
4
|
+
- You want a concise view of the Gateway networking model
|
|
5
|
+
title: "Network model"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Network Model
|
|
9
|
+
|
|
10
|
+
> This content has been merged into [Network](/network#core-model). See that page for the current guide.
|
|
11
|
+
|
|
12
|
+
Most operations flow through the Gateway (`Durar gateway`), a single long-running
|
|
13
|
+
process that owns channel connections and the WebSocket control plane.
|
|
14
|
+
|
|
15
|
+
## Core rules
|
|
16
|
+
|
|
17
|
+
- One Gateway per host is recommended. It is the only process allowed to own the WhatsApp Web session. For rescue bots or strict isolation, run multiple gateways with isolated profiles and ports. See [Multiple gateways](/gateway/multiple-gateways).
|
|
18
|
+
- Loopback first: the Gateway WS defaults to `ws://127.0.0.1:18789`. The wizard creates shared-secret auth by default and usually generates a token, even for loopback. For non-loopback access, use a valid gateway auth path: shared-secret token/password auth, or a correctly configured non-loopback `trusted-proxy` deployment. Tailnet/mobile setups usually work best through Tailscale Serve or another `wss://` endpoint instead of raw tailnet `ws://`.
|
|
19
|
+
- Nodes connect to the Gateway WS over LAN, tailnet, or SSH as needed. The
|
|
20
|
+
legacy TCP bridge has been removed.
|
|
21
|
+
- Canvas host is served by the Gateway HTTP server on the **same port** as the Gateway (default `18789`):
|
|
22
|
+
- `/__Durar__/canvas/`
|
|
23
|
+
- `/__Durar__/a2ui/`
|
|
24
|
+
When `gateway.auth` is configured and the Gateway binds beyond loopback, these routes are protected by Gateway auth. Node clients use node-scoped capability URLs tied to their active WS session. See [Gateway configuration](/gateway/configuration) (`canvasHost`, `gateway`).
|
|
25
|
+
- Remote use is typically SSH tunnel or tailnet VPN. See [Remote access](/gateway/remote) and [Discovery](/gateway/discovery).
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Expose an OpenAI-compatible /v1/chat/completions HTTP endpoint from the Gateway"
|
|
3
|
+
read_when:
|
|
4
|
+
- Integrating tools that expect OpenAI Chat Completions
|
|
5
|
+
title: "OpenAI Chat Completions"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# OpenAI Chat Completions (HTTP)
|
|
9
|
+
|
|
10
|
+
Durar’s Gateway can serve a small OpenAI-compatible Chat Completions endpoint.
|
|
11
|
+
|
|
12
|
+
This endpoint is **disabled by default**. Enable it in config first.
|
|
13
|
+
|
|
14
|
+
- `POST /v1/chat/completions`
|
|
15
|
+
- Same port as the Gateway (WS + HTTP multiplex): `http://<gateway-host>:<port>/v1/chat/completions`
|
|
16
|
+
|
|
17
|
+
When the Gateway’s OpenAI-compatible HTTP surface is enabled, it also serves:
|
|
18
|
+
|
|
19
|
+
- `GET /v1/models`
|
|
20
|
+
- `GET /v1/models/{id}`
|
|
21
|
+
- `POST /v1/embeddings`
|
|
22
|
+
- `POST /v1/responses`
|
|
23
|
+
|
|
24
|
+
Under the hood, requests are executed as a normal Gateway agent run (same codepath as `Durar agent`), so routing/permissions/config match your Gateway.
|
|
25
|
+
|
|
26
|
+
## Authentication
|
|
27
|
+
|
|
28
|
+
Uses the Gateway auth configuration.
|
|
29
|
+
|
|
30
|
+
Common HTTP auth paths:
|
|
31
|
+
|
|
32
|
+
- shared-secret auth (`gateway.auth.mode="token"` or `"password"`):
|
|
33
|
+
`Authorization: Bearer <token-or-password>`
|
|
34
|
+
- trusted identity-bearing HTTP auth (`gateway.auth.mode="trusted-proxy"`):
|
|
35
|
+
route through the configured identity-aware proxy and let it inject the
|
|
36
|
+
required identity headers
|
|
37
|
+
- private-ingress open auth (`gateway.auth.mode="none"`):
|
|
38
|
+
no auth header required
|
|
39
|
+
|
|
40
|
+
Notes:
|
|
41
|
+
|
|
42
|
+
- When `gateway.auth.mode="token"`, use `gateway.auth.token` (or `Durar_GATEWAY_TOKEN`).
|
|
43
|
+
- When `gateway.auth.mode="password"`, use `gateway.auth.password` (or `Durar_GATEWAY_PASSWORD`).
|
|
44
|
+
- When `gateway.auth.mode="trusted-proxy"`, the HTTP request must come from a
|
|
45
|
+
configured non-loopback trusted proxy source; same-host loopback proxies do
|
|
46
|
+
not satisfy this mode.
|
|
47
|
+
- If `gateway.auth.rateLimit` is configured and too many auth failures occur, the endpoint returns `429` with `Retry-After`.
|
|
48
|
+
|
|
49
|
+
## Security boundary (important)
|
|
50
|
+
|
|
51
|
+
Treat this endpoint as a **full operator-access** surface for the gateway instance.
|
|
52
|
+
|
|
53
|
+
- HTTP bearer auth here is not a narrow per-user scope model.
|
|
54
|
+
- A valid Gateway token/password for this endpoint should be treated like an owner/operator credential.
|
|
55
|
+
- Requests run through the same control-plane agent path as trusted operator actions.
|
|
56
|
+
- There is no separate non-owner/per-user tool boundary on this endpoint; once a caller passes Gateway auth here, Durar treats that caller as a trusted operator for this gateway.
|
|
57
|
+
- For shared-secret auth modes (`token` and `password`), the endpoint restores the normal full operator defaults even if the caller sends a narrower `x-Durar-scopes` header.
|
|
58
|
+
- Trusted identity-bearing HTTP modes (for example trusted proxy auth or `gateway.auth.mode="none"`) honor `x-Durar-scopes` when present and otherwise fall back to the normal operator default scope set.
|
|
59
|
+
- If the target agent policy allows sensitive tools, this endpoint can use them.
|
|
60
|
+
- Keep this endpoint on loopback/tailnet/private ingress only; do not expose it directly to the public internet.
|
|
61
|
+
|
|
62
|
+
Auth matrix:
|
|
63
|
+
|
|
64
|
+
- `gateway.auth.mode="token"` or `"password"` + `Authorization: Bearer ...`
|
|
65
|
+
- proves possession of the shared gateway operator secret
|
|
66
|
+
- ignores narrower `x-Durar-scopes`
|
|
67
|
+
- restores the full default operator scope set:
|
|
68
|
+
`operator.admin`, `operator.approvals`, `operator.pairing`,
|
|
69
|
+
`operator.read`, `operator.talk.secrets`, `operator.write`
|
|
70
|
+
- treats chat turns on this endpoint as owner-sender turns
|
|
71
|
+
- trusted identity-bearing HTTP modes (for example trusted proxy auth, or `gateway.auth.mode="none"` on private ingress)
|
|
72
|
+
- authenticate some outer trusted identity or deployment boundary
|
|
73
|
+
- honor `x-Durar-scopes` when the header is present
|
|
74
|
+
- fall back to the normal operator default scope set when the header is absent
|
|
75
|
+
- only lose owner semantics when the caller explicitly narrows scopes and omits `operator.admin`
|
|
76
|
+
|
|
77
|
+
See [Security](/gateway/security) and [Remote access](/gateway/remote).
|
|
78
|
+
|
|
79
|
+
## Agent-first model contract
|
|
80
|
+
|
|
81
|
+
Durar treats the OpenAI `model` field as an **agent target**, not a raw provider model id.
|
|
82
|
+
|
|
83
|
+
- `model: "Durar"` routes to the configured default agent.
|
|
84
|
+
- `model: "Durar/default"` also routes to the configured default agent.
|
|
85
|
+
- `model: "Durar/<agentId>"` routes to a specific agent.
|
|
86
|
+
|
|
87
|
+
Optional request headers:
|
|
88
|
+
|
|
89
|
+
- `x-Durar-model: <provider/model-or-bare-id>` overrides the backend model for the selected agent.
|
|
90
|
+
- `x-Durar-agent-id: <agentId>` remains supported as a compatibility override.
|
|
91
|
+
- `x-Durar-session-key: <sessionKey>` fully controls session routing.
|
|
92
|
+
- `x-Durar-message-channel: <channel>` sets the synthetic ingress channel context for channel-aware prompts and policies.
|
|
93
|
+
|
|
94
|
+
Compatibility aliases still accepted:
|
|
95
|
+
|
|
96
|
+
- `model: "Durar:<agentId>"`
|
|
97
|
+
- `model: "agent:<agentId>"`
|
|
98
|
+
|
|
99
|
+
## Enabling the endpoint
|
|
100
|
+
|
|
101
|
+
Set `gateway.http.endpoints.chatCompletions.enabled` to `true`:
|
|
102
|
+
|
|
103
|
+
```json5
|
|
104
|
+
{
|
|
105
|
+
gateway: {
|
|
106
|
+
http: {
|
|
107
|
+
endpoints: {
|
|
108
|
+
chatCompletions: { enabled: true },
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Disabling the endpoint
|
|
116
|
+
|
|
117
|
+
Set `gateway.http.endpoints.chatCompletions.enabled` to `false`:
|
|
118
|
+
|
|
119
|
+
```json5
|
|
120
|
+
{
|
|
121
|
+
gateway: {
|
|
122
|
+
http: {
|
|
123
|
+
endpoints: {
|
|
124
|
+
chatCompletions: { enabled: false },
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Session behavior
|
|
132
|
+
|
|
133
|
+
By default the endpoint is **stateless per request** (a new session key is generated each call).
|
|
134
|
+
|
|
135
|
+
If the request includes an OpenAI `user` string, the Gateway derives a stable session key from it, so repeated calls can share an agent session.
|
|
136
|
+
|
|
137
|
+
## Why this surface matters
|
|
138
|
+
|
|
139
|
+
This is the highest-leverage compatibility set for self-hosted frontends and tooling:
|
|
140
|
+
|
|
141
|
+
- Most Open WebUI, LobeChat, and LibreChat setups expect `/v1/models`.
|
|
142
|
+
- Many RAG systems expect `/v1/embeddings`.
|
|
143
|
+
- Existing OpenAI chat clients can usually start with `/v1/chat/completions`.
|
|
144
|
+
- More agent-native clients increasingly prefer `/v1/responses`.
|
|
145
|
+
|
|
146
|
+
## Model list and agent routing
|
|
147
|
+
|
|
148
|
+
<AccordionGroup>
|
|
149
|
+
<Accordion title="What does `/v1/models` return?">
|
|
150
|
+
An Durar agent-target list.
|
|
151
|
+
|
|
152
|
+
The returned ids are `Durar`, `Durar/default`, and `Durar/<agentId>` entries.
|
|
153
|
+
Use them directly as OpenAI `model` values.
|
|
154
|
+
|
|
155
|
+
</Accordion>
|
|
156
|
+
<Accordion title="Does `/v1/models` list agents or sub-agents?">
|
|
157
|
+
It lists top-level agent targets, not backend provider models and not sub-agents.
|
|
158
|
+
|
|
159
|
+
Sub-agents remain internal execution topology. They do not appear as pseudo-models.
|
|
160
|
+
|
|
161
|
+
</Accordion>
|
|
162
|
+
<Accordion title="Why is `Durar/default` included?">
|
|
163
|
+
`Durar/default` is the stable alias for the configured default agent.
|
|
164
|
+
|
|
165
|
+
That means clients can keep using one predictable id even if the real default agent id changes between environments.
|
|
166
|
+
|
|
167
|
+
</Accordion>
|
|
168
|
+
<Accordion title="How do I override the backend model?">
|
|
169
|
+
Use `x-Durar-model`.
|
|
170
|
+
|
|
171
|
+
Examples:
|
|
172
|
+
`x-Durar-model: openai/gpt-5.4`
|
|
173
|
+
`x-Durar-model: gpt-5.4`
|
|
174
|
+
|
|
175
|
+
If you omit it, the selected agent runs with its normal configured model choice.
|
|
176
|
+
|
|
177
|
+
</Accordion>
|
|
178
|
+
<Accordion title="How do embeddings fit this contract?">
|
|
179
|
+
`/v1/embeddings` uses the same agent-target `model` ids.
|
|
180
|
+
|
|
181
|
+
Use `model: "Durar/default"` or `model: "Durar/<agentId>"`.
|
|
182
|
+
When you need a specific embedding model, send it in `x-Durar-model`.
|
|
183
|
+
Without that header, the request passes through to the selected agent's normal embedding setup.
|
|
184
|
+
|
|
185
|
+
</Accordion>
|
|
186
|
+
</AccordionGroup>
|
|
187
|
+
|
|
188
|
+
## Streaming (SSE)
|
|
189
|
+
|
|
190
|
+
Set `stream: true` to receive Server-Sent Events (SSE):
|
|
191
|
+
|
|
192
|
+
- `Content-Type: text/event-stream`
|
|
193
|
+
- Each event line is `data: <json>`
|
|
194
|
+
- Stream ends with `data: [DONE]`
|
|
195
|
+
|
|
196
|
+
## Open WebUI quick setup
|
|
197
|
+
|
|
198
|
+
For a basic Open WebUI connection:
|
|
199
|
+
|
|
200
|
+
- Base URL: `http://127.0.0.1:18789/v1`
|
|
201
|
+
- Docker on macOS base URL: `http://host.docker.internal:18789/v1`
|
|
202
|
+
- API key: your Gateway bearer token
|
|
203
|
+
- Model: `Durar/default`
|
|
204
|
+
|
|
205
|
+
Expected behavior:
|
|
206
|
+
|
|
207
|
+
- `GET /v1/models` should list `Durar/default`
|
|
208
|
+
- Open WebUI should use `Durar/default` as the chat model id
|
|
209
|
+
- If you want a specific backend provider/model for that agent, set the agent's normal default model or send `x-Durar-model`
|
|
210
|
+
|
|
211
|
+
Quick smoke:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
curl -sS http://127.0.0.1:18789/v1/models \
|
|
215
|
+
-H 'Authorization: Bearer YOUR_TOKEN'
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
If that returns `Durar/default`, most Open WebUI setups can connect with the same base URL and token.
|
|
219
|
+
|
|
220
|
+
## Examples
|
|
221
|
+
|
|
222
|
+
Non-streaming:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
curl -sS http://127.0.0.1:18789/v1/chat/completions \
|
|
226
|
+
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
227
|
+
-H 'Content-Type: application/json' \
|
|
228
|
+
-d '{
|
|
229
|
+
"model": "Durar/default",
|
|
230
|
+
"messages": [{"role":"user","content":"hi"}]
|
|
231
|
+
}'
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Streaming:
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
curl -N http://127.0.0.1:18789/v1/chat/completions \
|
|
238
|
+
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
239
|
+
-H 'Content-Type: application/json' \
|
|
240
|
+
-H 'x-Durar-model: openai/gpt-5.4' \
|
|
241
|
+
-d '{
|
|
242
|
+
"model": "Durar/research",
|
|
243
|
+
"stream": true,
|
|
244
|
+
"messages": [{"role":"user","content":"hi"}]
|
|
245
|
+
}'
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
List models:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
curl -sS http://127.0.0.1:18789/v1/models \
|
|
252
|
+
-H 'Authorization: Bearer YOUR_TOKEN'
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Fetch one model:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
curl -sS http://127.0.0.1:18789/v1/models/Durar%2Fdefault \
|
|
259
|
+
-H 'Authorization: Bearer YOUR_TOKEN'
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Create embeddings:
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
curl -sS http://127.0.0.1:18789/v1/embeddings \
|
|
266
|
+
-H 'Authorization: Bearer YOUR_TOKEN' \
|
|
267
|
+
-H 'Content-Type: application/json' \
|
|
268
|
+
-H 'x-Durar-model: openai/text-embedding-3-small' \
|
|
269
|
+
-d '{
|
|
270
|
+
"model": "Durar/default",
|
|
271
|
+
"input": ["alpha", "beta"]
|
|
272
|
+
}'
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Notes:
|
|
276
|
+
|
|
277
|
+
- `/v1/models` returns Durar agent targets, not raw provider catalogs.
|
|
278
|
+
- `Durar/default` is always present so one stable id works across environments.
|
|
279
|
+
- Backend provider/model overrides belong in `x-Durar-model`, not the OpenAI `model` field.
|
|
280
|
+
- `/v1/embeddings` supports `input` as a string or array of strings.
|