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,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "web_fetch tool -- HTTP fetch with readable content extraction"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to fetch a URL and extract readable content
|
|
5
|
+
- You need to configure web_fetch or its Firecrawl fallback
|
|
6
|
+
- You want to understand web_fetch limits and caching
|
|
7
|
+
title: "Web Fetch"
|
|
8
|
+
sidebarTitle: "Web Fetch"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Web Fetch
|
|
12
|
+
|
|
13
|
+
The `web_fetch` tool does a plain HTTP GET and extracts readable content
|
|
14
|
+
(HTML to markdown or text). It does **not** execute JavaScript.
|
|
15
|
+
|
|
16
|
+
For JS-heavy sites or login-protected pages, use the
|
|
17
|
+
[Web Browser](/tools/browser) instead.
|
|
18
|
+
|
|
19
|
+
## Quick start
|
|
20
|
+
|
|
21
|
+
`web_fetch` is **enabled by default** -- no configuration needed. The agent can
|
|
22
|
+
call it immediately:
|
|
23
|
+
|
|
24
|
+
```javascript
|
|
25
|
+
await web_fetch({ url: "https://example.com/article" });
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Tool parameters
|
|
29
|
+
|
|
30
|
+
| Parameter | Type | Description |
|
|
31
|
+
| ------------- | -------- | ---------------------------------------- |
|
|
32
|
+
| `url` | `string` | URL to fetch (required, http/https only) |
|
|
33
|
+
| `extractMode` | `string` | `"markdown"` (default) or `"text"` |
|
|
34
|
+
| `maxChars` | `number` | Truncate output to this many chars |
|
|
35
|
+
|
|
36
|
+
## How it works
|
|
37
|
+
|
|
38
|
+
<Steps>
|
|
39
|
+
<Step title="Fetch">
|
|
40
|
+
Sends an HTTP GET with a Chrome-like User-Agent and `Accept-Language`
|
|
41
|
+
header. Blocks private/internal hostnames and re-checks redirects.
|
|
42
|
+
</Step>
|
|
43
|
+
<Step title="Extract">
|
|
44
|
+
Runs Readability (main-content extraction) on the HTML response.
|
|
45
|
+
</Step>
|
|
46
|
+
<Step title="Fallback (optional)">
|
|
47
|
+
If Readability fails and Firecrawl is configured, retries through the
|
|
48
|
+
Firecrawl API with bot-circumvention mode.
|
|
49
|
+
</Step>
|
|
50
|
+
<Step title="Cache">
|
|
51
|
+
Results are cached for 15 minutes (configurable) to reduce repeated
|
|
52
|
+
fetches of the same URL.
|
|
53
|
+
</Step>
|
|
54
|
+
</Steps>
|
|
55
|
+
|
|
56
|
+
## Config
|
|
57
|
+
|
|
58
|
+
```json5
|
|
59
|
+
{
|
|
60
|
+
tools: {
|
|
61
|
+
web: {
|
|
62
|
+
fetch: {
|
|
63
|
+
enabled: true, // default: true
|
|
64
|
+
provider: "firecrawl", // optional; omit for auto-detect
|
|
65
|
+
maxChars: 50000, // max output chars
|
|
66
|
+
maxCharsCap: 50000, // hard cap for maxChars param
|
|
67
|
+
maxResponseBytes: 2000000, // max download size before truncation
|
|
68
|
+
timeoutSeconds: 30,
|
|
69
|
+
cacheTtlMinutes: 15,
|
|
70
|
+
maxRedirects: 3,
|
|
71
|
+
readability: true, // use Readability extraction
|
|
72
|
+
userAgent: "Mozilla/5.0 ...", // override User-Agent
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Firecrawl fallback
|
|
80
|
+
|
|
81
|
+
If Readability extraction fails, `web_fetch` can fall back to
|
|
82
|
+
[Firecrawl](/tools/firecrawl) for bot-circumvention and better extraction:
|
|
83
|
+
|
|
84
|
+
```json5
|
|
85
|
+
{
|
|
86
|
+
tools: {
|
|
87
|
+
web: {
|
|
88
|
+
fetch: {
|
|
89
|
+
provider: "firecrawl", // optional; omit for auto-detect from available credentials
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
plugins: {
|
|
94
|
+
entries: {
|
|
95
|
+
firecrawl: {
|
|
96
|
+
enabled: true,
|
|
97
|
+
config: {
|
|
98
|
+
webFetch: {
|
|
99
|
+
apiKey: "fc-...", // optional if FIRECRAWL_API_KEY is set
|
|
100
|
+
baseUrl: "https://api.firecrawl.dev",
|
|
101
|
+
onlyMainContent: true,
|
|
102
|
+
maxAgeMs: 86400000, // cache duration (1 day)
|
|
103
|
+
timeoutSeconds: 60,
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
`plugins.entries.firecrawl.config.webFetch.apiKey` supports SecretRef objects.
|
|
113
|
+
Legacy `tools.web.fetch.firecrawl.*` config is auto-migrated by `Durar doctor --fix`.
|
|
114
|
+
|
|
115
|
+
<Note>
|
|
116
|
+
If Firecrawl is enabled and its SecretRef is unresolved with no
|
|
117
|
+
`FIRECRAWL_API_KEY` env fallback, gateway startup fails fast.
|
|
118
|
+
</Note>
|
|
119
|
+
|
|
120
|
+
<Note>
|
|
121
|
+
Firecrawl `baseUrl` overrides are locked down: they must use `https://` and
|
|
122
|
+
the official Firecrawl host (`api.firecrawl.dev`).
|
|
123
|
+
</Note>
|
|
124
|
+
|
|
125
|
+
Current runtime behavior:
|
|
126
|
+
|
|
127
|
+
- `tools.web.fetch.provider` selects the fetch fallback provider explicitly.
|
|
128
|
+
- If `provider` is omitted, Durar auto-detects the first ready web-fetch
|
|
129
|
+
provider from available credentials. Today the bundled provider is Firecrawl.
|
|
130
|
+
- If Readability is disabled, `web_fetch` skips straight to the selected
|
|
131
|
+
provider fallback. If no provider is available, it fails closed.
|
|
132
|
+
|
|
133
|
+
## Limits and safety
|
|
134
|
+
|
|
135
|
+
- `maxChars` is clamped to `tools.web.fetch.maxCharsCap`
|
|
136
|
+
- Response body is capped at `maxResponseBytes` before parsing; oversized
|
|
137
|
+
responses are truncated with a warning
|
|
138
|
+
- Private/internal hostnames are blocked
|
|
139
|
+
- Redirects are checked and limited by `maxRedirects`
|
|
140
|
+
- `web_fetch` is best-effort -- some sites need the [Web Browser](/tools/browser)
|
|
141
|
+
|
|
142
|
+
## Tool profiles
|
|
143
|
+
|
|
144
|
+
If you use tool profiles or allowlists, add `web_fetch` or `group:web`:
|
|
145
|
+
|
|
146
|
+
```json5
|
|
147
|
+
{
|
|
148
|
+
tools: {
|
|
149
|
+
allow: ["web_fetch"],
|
|
150
|
+
// or: allow: ["group:web"] (includes web_fetch, web_search, and x_search)
|
|
151
|
+
},
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Related
|
|
156
|
+
|
|
157
|
+
- [Web Search](/tools/web) -- search the web with multiple providers
|
|
158
|
+
- [Web Browser](/tools/browser) -- full browser automation for JS-heavy sites
|
|
159
|
+
- [Firecrawl](/tools/firecrawl) -- Firecrawl search and scrape tools
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "Web Search"
|
|
3
|
+
sidebarTitle: "Web Search"
|
|
4
|
+
summary: "web_search, x_search, and web_fetch -- search the web, search X posts, or fetch page content"
|
|
5
|
+
read_when:
|
|
6
|
+
- You want to enable or configure web_search
|
|
7
|
+
- You want to enable or configure x_search
|
|
8
|
+
- You need to choose a search provider
|
|
9
|
+
- You want to understand auto-detection and provider fallback
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Web Search
|
|
13
|
+
|
|
14
|
+
The `web_search` tool searches the web using your configured provider and
|
|
15
|
+
returns results. Results are cached by query for 15 minutes (configurable).
|
|
16
|
+
|
|
17
|
+
Durar also includes `x_search` for X (formerly Twitter) posts and
|
|
18
|
+
`web_fetch` for lightweight URL fetching. In this phase, `web_fetch` stays
|
|
19
|
+
local while `web_search` and `x_search` can use xAI Responses under the hood.
|
|
20
|
+
|
|
21
|
+
<Info>
|
|
22
|
+
`web_search` is a lightweight HTTP tool, not browser automation. For
|
|
23
|
+
JS-heavy sites or logins, use the [Web Browser](/tools/browser). For
|
|
24
|
+
fetching a specific URL, use [Web Fetch](/tools/web-fetch).
|
|
25
|
+
</Info>
|
|
26
|
+
|
|
27
|
+
## Quick start
|
|
28
|
+
|
|
29
|
+
<Steps>
|
|
30
|
+
<Step title="Choose a provider">
|
|
31
|
+
Pick a provider and complete any required setup. Some providers are
|
|
32
|
+
key-free, while others use API keys. See the provider pages below for
|
|
33
|
+
details.
|
|
34
|
+
</Step>
|
|
35
|
+
<Step title="Configure">
|
|
36
|
+
```bash
|
|
37
|
+
Durar configure --section web
|
|
38
|
+
```
|
|
39
|
+
This stores the provider and any needed credential. You can also set an env
|
|
40
|
+
var (for example `BRAVE_API_KEY`) and skip this step for API-backed
|
|
41
|
+
providers.
|
|
42
|
+
</Step>
|
|
43
|
+
<Step title="Use it">
|
|
44
|
+
The agent can now call `web_search`:
|
|
45
|
+
|
|
46
|
+
```javascript
|
|
47
|
+
await web_search({ query: "Durar plugin SDK" });
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
For X posts, use:
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
await x_search({ query: "dinner recipes" });
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
</Step>
|
|
57
|
+
</Steps>
|
|
58
|
+
|
|
59
|
+
## Choosing a provider
|
|
60
|
+
|
|
61
|
+
<CardGroup cols={2}>
|
|
62
|
+
<Card title="Brave Search" icon="shield" href="/tools/brave-search">
|
|
63
|
+
Structured results with snippets. Supports `llm-context` mode, country/language filters. Free tier available.
|
|
64
|
+
</Card>
|
|
65
|
+
<Card title="DuckDuckGo" icon="bird" href="/tools/duckduckgo-search">
|
|
66
|
+
Key-free fallback. No API key needed. Unofficial HTML-based integration.
|
|
67
|
+
</Card>
|
|
68
|
+
<Card title="Exa" icon="brain" href="/tools/exa-search">
|
|
69
|
+
Neural + keyword search with content extraction (highlights, text, summaries).
|
|
70
|
+
</Card>
|
|
71
|
+
<Card title="Firecrawl" icon="flame" href="/tools/firecrawl">
|
|
72
|
+
Structured results. Best paired with `firecrawl_search` and `firecrawl_scrape` for deep extraction.
|
|
73
|
+
</Card>
|
|
74
|
+
<Card title="Gemini" icon="sparkles" href="/tools/gemini-search">
|
|
75
|
+
AI-synthesized answers with citations via Google Search grounding.
|
|
76
|
+
</Card>
|
|
77
|
+
<Card title="Grok" icon="zap" href="/tools/grok-search">
|
|
78
|
+
AI-synthesized answers with citations via xAI web grounding.
|
|
79
|
+
</Card>
|
|
80
|
+
<Card title="Kimi" icon="moon" href="/tools/kimi-search">
|
|
81
|
+
AI-synthesized answers with citations via Moonshot web search.
|
|
82
|
+
</Card>
|
|
83
|
+
<Card title="MiniMax Search" icon="globe" href="/tools/minimax-search">
|
|
84
|
+
Structured results via the MiniMax Coding Plan search API.
|
|
85
|
+
</Card>
|
|
86
|
+
<Card title="Ollama Web Search" icon="globe" href="/tools/ollama-search">
|
|
87
|
+
Key-free search via your configured Ollama host. Requires `ollama signin`.
|
|
88
|
+
</Card>
|
|
89
|
+
<Card title="Perplexity" icon="search" href="/tools/perplexity-search">
|
|
90
|
+
Structured results with content extraction controls and domain filtering.
|
|
91
|
+
</Card>
|
|
92
|
+
<Card title="SearXNG" icon="server" href="/tools/searxng-search">
|
|
93
|
+
Self-hosted meta-search. No API key needed. Aggregates Google, Bing, DuckDuckGo, and more.
|
|
94
|
+
</Card>
|
|
95
|
+
<Card title="Tavily" icon="globe" href="/tools/tavily">
|
|
96
|
+
Structured results with search depth, topic filtering, and `tavily_extract` for URL extraction.
|
|
97
|
+
</Card>
|
|
98
|
+
</CardGroup>
|
|
99
|
+
|
|
100
|
+
### Provider comparison
|
|
101
|
+
|
|
102
|
+
| Provider | Result style | Filters | API key |
|
|
103
|
+
| ----------------------------------------- | -------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------- |
|
|
104
|
+
| [Brave](/tools/brave-search) | Structured snippets | Country, language, time, `llm-context` mode | `BRAVE_API_KEY` |
|
|
105
|
+
| [DuckDuckGo](/tools/duckduckgo-search) | Structured snippets | -- | None (key-free) |
|
|
106
|
+
| [Exa](/tools/exa-search) | Structured + extracted | Neural/keyword mode, date, content extraction | `EXA_API_KEY` |
|
|
107
|
+
| [Firecrawl](/tools/firecrawl) | Structured snippets | Via `firecrawl_search` tool | `FIRECRAWL_API_KEY` |
|
|
108
|
+
| [Gemini](/tools/gemini-search) | AI-synthesized + citations | -- | `GEMINI_API_KEY` |
|
|
109
|
+
| [Grok](/tools/grok-search) | AI-synthesized + citations | -- | `XAI_API_KEY` |
|
|
110
|
+
| [Kimi](/tools/kimi-search) | AI-synthesized + citations | -- | `KIMI_API_KEY` / `MOONSHOT_API_KEY` |
|
|
111
|
+
| [MiniMax Search](/tools/minimax-search) | Structured snippets | Region (`global` / `cn`) | `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` |
|
|
112
|
+
| [Ollama Web Search](/tools/ollama-search) | Structured snippets | -- | None by default; `ollama signin` required, can reuse Ollama provider bearer auth |
|
|
113
|
+
| [Perplexity](/tools/perplexity-search) | Structured snippets | Country, language, time, domains, content limits | `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` |
|
|
114
|
+
| [SearXNG](/tools/searxng-search) | Structured snippets | Categories, language | None (self-hosted) |
|
|
115
|
+
| [Tavily](/tools/tavily) | Structured snippets | Via `tavily_search` tool | `TAVILY_API_KEY` |
|
|
116
|
+
|
|
117
|
+
## Auto-detection
|
|
118
|
+
|
|
119
|
+
## Native Codex web search
|
|
120
|
+
|
|
121
|
+
Codex-capable models can optionally use the provider-native Responses `web_search` tool instead of Durar's managed `web_search` function.
|
|
122
|
+
|
|
123
|
+
- Configure it under `tools.web.search.openaiCodex`
|
|
124
|
+
- It only activates for Codex-capable models (`openai-codex/*` or providers using `api: "openai-codex-responses"`)
|
|
125
|
+
- Managed `web_search` still applies to non-Codex models
|
|
126
|
+
- `mode: "cached"` is the default and recommended setting
|
|
127
|
+
- `tools.web.search.enabled: false` disables both managed and native search
|
|
128
|
+
|
|
129
|
+
```json5
|
|
130
|
+
{
|
|
131
|
+
tools: {
|
|
132
|
+
web: {
|
|
133
|
+
search: {
|
|
134
|
+
enabled: true,
|
|
135
|
+
openaiCodex: {
|
|
136
|
+
enabled: true,
|
|
137
|
+
mode: "cached",
|
|
138
|
+
allowedDomains: ["example.com"],
|
|
139
|
+
contextSize: "high",
|
|
140
|
+
userLocation: {
|
|
141
|
+
country: "US",
|
|
142
|
+
city: "New York",
|
|
143
|
+
timezone: "America/New_York",
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
If native Codex search is enabled but the current model is not Codex-capable, Durar keeps the normal managed `web_search` behavior.
|
|
153
|
+
|
|
154
|
+
## Setting up web search
|
|
155
|
+
|
|
156
|
+
Provider lists in docs and setup flows are alphabetical. Auto-detection keeps a
|
|
157
|
+
separate precedence order.
|
|
158
|
+
|
|
159
|
+
If no `provider` is set, Durar checks providers in this order and uses the
|
|
160
|
+
first one that is ready:
|
|
161
|
+
|
|
162
|
+
API-backed providers first:
|
|
163
|
+
|
|
164
|
+
1. **Brave** -- `BRAVE_API_KEY` or `plugins.entries.brave.config.webSearch.apiKey` (order 10)
|
|
165
|
+
2. **MiniMax Search** -- `MINIMAX_CODE_PLAN_KEY` / `MINIMAX_CODING_API_KEY` or `plugins.entries.minimax.config.webSearch.apiKey` (order 15)
|
|
166
|
+
3. **Gemini** -- `GEMINI_API_KEY` or `plugins.entries.google.config.webSearch.apiKey` (order 20)
|
|
167
|
+
4. **Grok** -- `XAI_API_KEY` or `plugins.entries.xai.config.webSearch.apiKey` (order 30)
|
|
168
|
+
5. **Kimi** -- `KIMI_API_KEY` / `MOONSHOT_API_KEY` or `plugins.entries.moonshot.config.webSearch.apiKey` (order 40)
|
|
169
|
+
6. **Perplexity** -- `PERPLEXITY_API_KEY` / `OPENROUTER_API_KEY` or `plugins.entries.perplexity.config.webSearch.apiKey` (order 50)
|
|
170
|
+
7. **Firecrawl** -- `FIRECRAWL_API_KEY` or `plugins.entries.firecrawl.config.webSearch.apiKey` (order 60)
|
|
171
|
+
8. **Exa** -- `EXA_API_KEY` or `plugins.entries.exa.config.webSearch.apiKey` (order 65)
|
|
172
|
+
9. **Tavily** -- `TAVILY_API_KEY` or `plugins.entries.tavily.config.webSearch.apiKey` (order 70)
|
|
173
|
+
|
|
174
|
+
Key-free fallbacks after that:
|
|
175
|
+
|
|
176
|
+
10. **DuckDuckGo** -- key-free HTML fallback with no account or API key (order 100)
|
|
177
|
+
11. **Ollama Web Search** -- key-free fallback via your configured Ollama host; requires Ollama to be reachable and signed in with `ollama signin` and can reuse Ollama provider bearer auth if the host needs it (order 110)
|
|
178
|
+
12. **SearXNG** -- `SEARXNG_BASE_URL` or `plugins.entries.searxng.config.webSearch.baseUrl` (order 200)
|
|
179
|
+
|
|
180
|
+
If no provider is detected, it falls back to Brave (you will get a missing-key
|
|
181
|
+
error prompting you to configure one).
|
|
182
|
+
|
|
183
|
+
<Note>
|
|
184
|
+
All provider key fields support SecretRef objects. In auto-detect mode,
|
|
185
|
+
Durar resolves only the selected provider key -- non-selected SecretRefs
|
|
186
|
+
stay inactive.
|
|
187
|
+
</Note>
|
|
188
|
+
|
|
189
|
+
## Config
|
|
190
|
+
|
|
191
|
+
```json5
|
|
192
|
+
{
|
|
193
|
+
tools: {
|
|
194
|
+
web: {
|
|
195
|
+
search: {
|
|
196
|
+
enabled: true, // default: true
|
|
197
|
+
provider: "brave", // or omit for auto-detection
|
|
198
|
+
maxResults: 5,
|
|
199
|
+
timeoutSeconds: 30,
|
|
200
|
+
cacheTtlMinutes: 15,
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
},
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Provider-specific config (API keys, base URLs, modes) lives under
|
|
208
|
+
`plugins.entries.<plugin>.config.webSearch.*`. See the provider pages for
|
|
209
|
+
examples.
|
|
210
|
+
|
|
211
|
+
`web_fetch` fallback provider selection is separate:
|
|
212
|
+
|
|
213
|
+
- choose it with `tools.web.fetch.provider`
|
|
214
|
+
- or omit that field and let Durar auto-detect the first ready web-fetch
|
|
215
|
+
provider from available credentials
|
|
216
|
+
- today the bundled web-fetch provider is Firecrawl, configured under
|
|
217
|
+
`plugins.entries.firecrawl.config.webFetch.*`
|
|
218
|
+
|
|
219
|
+
When you choose **Kimi** during `Durar onboard` or
|
|
220
|
+
`Durar configure --section web`, Durar can also ask for:
|
|
221
|
+
|
|
222
|
+
- the Moonshot API region (`https://api.moonshot.ai/v1` or `https://api.moonshot.cn/v1`)
|
|
223
|
+
- the default Kimi web-search model (defaults to `kimi-k2.5`)
|
|
224
|
+
|
|
225
|
+
For `x_search`, configure `plugins.entries.xai.config.xSearch.*`. It uses the
|
|
226
|
+
same `XAI_API_KEY` fallback as Grok web search.
|
|
227
|
+
Legacy `tools.web.x_search.*` config is auto-migrated by `Durar doctor --fix`.
|
|
228
|
+
When you choose Grok during `Durar onboard` or `Durar configure --section web`,
|
|
229
|
+
Durar can also offer optional `x_search` setup with the same key.
|
|
230
|
+
This is a separate follow-up step inside the Grok path, not a separate top-level
|
|
231
|
+
web-search provider choice. If you pick another provider, Durar does not
|
|
232
|
+
show the `x_search` prompt.
|
|
233
|
+
|
|
234
|
+
### Storing API keys
|
|
235
|
+
|
|
236
|
+
<Tabs>
|
|
237
|
+
<Tab title="Config file">
|
|
238
|
+
Run `Durar configure --section web` or set the key directly:
|
|
239
|
+
|
|
240
|
+
```json5
|
|
241
|
+
{
|
|
242
|
+
plugins: {
|
|
243
|
+
entries: {
|
|
244
|
+
brave: {
|
|
245
|
+
config: {
|
|
246
|
+
webSearch: {
|
|
247
|
+
apiKey: "YOUR_KEY", // pragma: allowlist secret
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
</Tab>
|
|
257
|
+
<Tab title="Environment variable">
|
|
258
|
+
Set the provider env var in the Gateway process environment:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
export BRAVE_API_KEY="YOUR_KEY"
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
For a gateway install, put it in `~/.Durar/.env`.
|
|
265
|
+
See [Env vars](/help/faq#env-vars-and-env-loading).
|
|
266
|
+
|
|
267
|
+
</Tab>
|
|
268
|
+
</Tabs>
|
|
269
|
+
|
|
270
|
+
## Tool parameters
|
|
271
|
+
|
|
272
|
+
| Parameter | Description |
|
|
273
|
+
| --------------------- | ----------------------------------------------------- |
|
|
274
|
+
| `query` | Search query (required) |
|
|
275
|
+
| `count` | Results to return (1-10, default: 5) |
|
|
276
|
+
| `country` | 2-letter ISO country code (e.g. "US", "DE") |
|
|
277
|
+
| `language` | ISO 639-1 language code (e.g. "en", "de") |
|
|
278
|
+
| `search_lang` | Search-language code (Brave only) |
|
|
279
|
+
| `freshness` | Time filter: `day`, `week`, `month`, or `year` |
|
|
280
|
+
| `date_after` | Results after this date (YYYY-MM-DD) |
|
|
281
|
+
| `date_before` | Results before this date (YYYY-MM-DD) |
|
|
282
|
+
| `ui_lang` | UI language code (Brave only) |
|
|
283
|
+
| `domain_filter` | Domain allowlist/denylist array (Perplexity only) |
|
|
284
|
+
| `max_tokens` | Total content budget, default 25000 (Perplexity only) |
|
|
285
|
+
| `max_tokens_per_page` | Per-page token limit, default 2048 (Perplexity only) |
|
|
286
|
+
|
|
287
|
+
<Warning>
|
|
288
|
+
Not all parameters work with all providers. Brave `llm-context` mode
|
|
289
|
+
rejects `ui_lang`, `freshness`, `date_after`, and `date_before`.
|
|
290
|
+
Gemini, Grok, and Kimi return one synthesized answer with citations. They
|
|
291
|
+
accept `count` for shared-tool compatibility, but it does not change the
|
|
292
|
+
grounded answer shape.
|
|
293
|
+
Perplexity behaves the same way when you use the Sonar/OpenRouter
|
|
294
|
+
compatibility path (`plugins.entries.perplexity.config.webSearch.baseUrl` /
|
|
295
|
+
`model` or `OPENROUTER_API_KEY`).
|
|
296
|
+
SearXNG accepts `http://` only for trusted private-network or loopback hosts;
|
|
297
|
+
public SearXNG endpoints must use `https://`.
|
|
298
|
+
Firecrawl and Tavily only support `query` and `count` through `web_search`
|
|
299
|
+
-- use their dedicated tools for advanced options.
|
|
300
|
+
</Warning>
|
|
301
|
+
|
|
302
|
+
## x_search
|
|
303
|
+
|
|
304
|
+
`x_search` queries X (formerly Twitter) posts using xAI and returns
|
|
305
|
+
AI-synthesized answers with citations. It accepts natural-language queries and
|
|
306
|
+
optional structured filters. Durar only enables the built-in xAI `x_search`
|
|
307
|
+
tool on the request that serves this tool call.
|
|
308
|
+
|
|
309
|
+
<Note>
|
|
310
|
+
xAI documents `x_search` as supporting keyword search, semantic search, user
|
|
311
|
+
search, and thread fetch. For per-post engagement stats such as reposts,
|
|
312
|
+
replies, bookmarks, or views, prefer a targeted lookup for the exact post URL
|
|
313
|
+
or status ID. Broad keyword searches may find the right post but return less
|
|
314
|
+
complete per-post metadata. A good pattern is: locate the post first, then
|
|
315
|
+
run a second `x_search` query focused on that exact post.
|
|
316
|
+
</Note>
|
|
317
|
+
|
|
318
|
+
### x_search config
|
|
319
|
+
|
|
320
|
+
```json5
|
|
321
|
+
{
|
|
322
|
+
plugins: {
|
|
323
|
+
entries: {
|
|
324
|
+
xai: {
|
|
325
|
+
config: {
|
|
326
|
+
xSearch: {
|
|
327
|
+
enabled: true,
|
|
328
|
+
model: "grok-4-1-fast-non-reasoning",
|
|
329
|
+
inlineCitations: false,
|
|
330
|
+
maxTurns: 2,
|
|
331
|
+
timeoutSeconds: 30,
|
|
332
|
+
cacheTtlMinutes: 15,
|
|
333
|
+
},
|
|
334
|
+
webSearch: {
|
|
335
|
+
apiKey: "xai-...", // optional if XAI_API_KEY is set
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
},
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### x_search parameters
|
|
345
|
+
|
|
346
|
+
| Parameter | Description |
|
|
347
|
+
| ---------------------------- | ------------------------------------------------------ |
|
|
348
|
+
| `query` | Search query (required) |
|
|
349
|
+
| `allowed_x_handles` | Restrict results to specific X handles |
|
|
350
|
+
| `excluded_x_handles` | Exclude specific X handles |
|
|
351
|
+
| `from_date` | Only include posts on or after this date (YYYY-MM-DD) |
|
|
352
|
+
| `to_date` | Only include posts on or before this date (YYYY-MM-DD) |
|
|
353
|
+
| `enable_image_understanding` | Let xAI inspect images attached to matching posts |
|
|
354
|
+
| `enable_video_understanding` | Let xAI inspect videos attached to matching posts |
|
|
355
|
+
|
|
356
|
+
### x_search example
|
|
357
|
+
|
|
358
|
+
```javascript
|
|
359
|
+
await x_search({
|
|
360
|
+
query: "dinner recipes",
|
|
361
|
+
allowed_x_handles: ["nytfood"],
|
|
362
|
+
from_date: "2026-03-01",
|
|
363
|
+
});
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
```javascript
|
|
367
|
+
// Per-post stats: use the exact status URL or status ID when possible
|
|
368
|
+
await x_search({
|
|
369
|
+
query: "https://x.com/huntharo/status/1905678901234567890",
|
|
370
|
+
});
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Examples
|
|
374
|
+
|
|
375
|
+
```javascript
|
|
376
|
+
// Basic search
|
|
377
|
+
await web_search({ query: "Durar plugin SDK" });
|
|
378
|
+
|
|
379
|
+
// German-specific search
|
|
380
|
+
await web_search({ query: "TV online schauen", country: "DE", language: "de" });
|
|
381
|
+
|
|
382
|
+
// Recent results (past week)
|
|
383
|
+
await web_search({ query: "AI developments", freshness: "week" });
|
|
384
|
+
|
|
385
|
+
// Date range
|
|
386
|
+
await web_search({
|
|
387
|
+
query: "climate research",
|
|
388
|
+
date_after: "2024-01-01",
|
|
389
|
+
date_before: "2024-06-30",
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
// Domain filtering (Perplexity only)
|
|
393
|
+
await web_search({
|
|
394
|
+
query: "product reviews",
|
|
395
|
+
domain_filter: ["-reddit.com", "-pinterest.com"],
|
|
396
|
+
});
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## Tool profiles
|
|
400
|
+
|
|
401
|
+
If you use tool profiles or allowlists, add `web_search`, `x_search`, or `group:web`:
|
|
402
|
+
|
|
403
|
+
```json5
|
|
404
|
+
{
|
|
405
|
+
tools: {
|
|
406
|
+
allow: ["web_search", "x_search"],
|
|
407
|
+
// or: allow: ["group:web"] (includes web_search, x_search, and web_fetch)
|
|
408
|
+
},
|
|
409
|
+
}
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
## Related
|
|
413
|
+
|
|
414
|
+
- [Web Fetch](/tools/web-fetch) -- fetch a URL and extract readable content
|
|
415
|
+
- [Web Browser](/tools/browser) -- full browser automation for JS-heavy sites
|
|
416
|
+
- [Grok Search](/tools/grok-search) -- Grok as the `web_search` provider
|
|
417
|
+
- [Ollama Web Search](/tools/ollama-search) -- key-free web search through your Ollama host
|