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,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Community-maintained Durar plugins: browse, install, and submit your own"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to find third-party Durar plugins
|
|
5
|
+
- You want to publish or list your own plugin
|
|
6
|
+
title: "Community Plugins"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Community Plugins
|
|
10
|
+
|
|
11
|
+
Community plugins are third-party packages that extend Durar with new
|
|
12
|
+
channels, tools, providers, or other capabilities. They are built and maintained
|
|
13
|
+
by the community, published on [Durar Gateway](/tools/Durar Gateway) or npm, and
|
|
14
|
+
installable with a single command.
|
|
15
|
+
|
|
16
|
+
Durar Gateway is the canonical discovery surface for community plugins. Do not open
|
|
17
|
+
docs-only PRs just to add your plugin here for discoverability; publish it on
|
|
18
|
+
Durar Gateway instead.
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
Durar plugins install <package-name>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Durar checks Durar Gateway first and falls back to npm automatically.
|
|
25
|
+
|
|
26
|
+
## Listed plugins
|
|
27
|
+
|
|
28
|
+
### Codex App Server Bridge
|
|
29
|
+
|
|
30
|
+
Independent Durar bridge for Codex App Server conversations. Bind a chat to
|
|
31
|
+
a Codex thread, talk to it with plain text, and control it with chat-native
|
|
32
|
+
commands for resume, planning, review, model selection, compaction, and more.
|
|
33
|
+
|
|
34
|
+
- **npm:** `Durar-codex-app-server`
|
|
35
|
+
- **repo:** [github.com/pwrdrvr/Durar-codex-app-server](https://github.com/pwrdrvr/Durar-codex-app-server)
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
Durar plugins install Durar-codex-app-server
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### DingTalk
|
|
42
|
+
|
|
43
|
+
Enterprise robot integration using Stream mode. Supports text, images, and
|
|
44
|
+
file messages via any DingTalk client.
|
|
45
|
+
|
|
46
|
+
- **npm:** `@largezhou/ddingtalk`
|
|
47
|
+
- **repo:** [github.com/largezhou/Durar-dingtalk](https://github.com/largezhou/Durar-dingtalk)
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
Durar plugins install @largezhou/ddingtalk
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Lossless Claw (LCM)
|
|
54
|
+
|
|
55
|
+
Lossless Context Management plugin for Durar. DAG-based conversation
|
|
56
|
+
summarization with incremental compaction — preserves full context fidelity
|
|
57
|
+
while reducing token usage.
|
|
58
|
+
|
|
59
|
+
- **npm:** `@martian-engineering/lossless-claw`
|
|
60
|
+
- **repo:** [github.com/Martian-Engineering/lossless-claw](https://github.com/Martian-Engineering/lossless-claw)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
Durar plugins install @martian-engineering/lossless-claw
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Opik
|
|
67
|
+
|
|
68
|
+
Official plugin that exports agent traces to Opik. Monitor agent behavior,
|
|
69
|
+
cost, tokens, errors, and more.
|
|
70
|
+
|
|
71
|
+
- **npm:** `@opik/opik-Durar`
|
|
72
|
+
- **repo:** [github.com/comet-ml/opik-Durar](https://github.com/comet-ml/opik-Durar)
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
Durar plugins install @opik/opik-Durar
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### QQbot
|
|
79
|
+
|
|
80
|
+
Connect Durar to QQ via the QQ Bot API. Supports private chats, group
|
|
81
|
+
mentions, channel messages, and rich media including voice, images, videos,
|
|
82
|
+
and files.
|
|
83
|
+
|
|
84
|
+
- **npm:** `@tencent-connect/Durar-qqbot`
|
|
85
|
+
- **repo:** [github.com/tencent-connect/Durar-qqbot](https://github.com/tencent-connect/Durar-qqbot)
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
Durar plugins install @tencent-connect/Durar-qqbot
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### wecom
|
|
92
|
+
|
|
93
|
+
WeCom channel plugin for Durar by the Tencent WeCom team. Powered by
|
|
94
|
+
WeCom Bot WebSocket persistent connections, it supports direct messages & group
|
|
95
|
+
chats, streaming replies, proactive messaging, image/file processing, Markdown
|
|
96
|
+
formatting, built-in access control, and document/meeting/messaging skills.
|
|
97
|
+
|
|
98
|
+
- **npm:** `@wecom/wecom-Durar-plugin`
|
|
99
|
+
- **repo:** [github.com/WecomTeam/wecom-Durar-plugin](https://github.com/WecomTeam/wecom-Durar-plugin)
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
Durar plugins install @wecom/wecom-Durar-plugin
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Submit your plugin
|
|
106
|
+
|
|
107
|
+
We welcome community plugins that are useful, documented, and safe to operate.
|
|
108
|
+
|
|
109
|
+
<Steps>
|
|
110
|
+
<Step title="Publish to Durar Gateway or npm">
|
|
111
|
+
Your plugin must be installable via `Durar plugins install \<package-name\>`.
|
|
112
|
+
Publish to [Durar Gateway](/tools/Durar Gateway) (preferred) or npm.
|
|
113
|
+
See [Building Plugins](/plugins/building-plugins) for the full guide.
|
|
114
|
+
|
|
115
|
+
</Step>
|
|
116
|
+
|
|
117
|
+
<Step title="Host on GitHub">
|
|
118
|
+
Source code must be in a public repository with setup docs and an issue
|
|
119
|
+
tracker.
|
|
120
|
+
|
|
121
|
+
</Step>
|
|
122
|
+
|
|
123
|
+
<Step title="Use docs PRs only for source-doc changes">
|
|
124
|
+
You do not need a docs PR just to make your plugin discoverable. Publish it
|
|
125
|
+
on Durar Gateway instead.
|
|
126
|
+
|
|
127
|
+
Open a docs PR only when Durar's source docs need an actual content
|
|
128
|
+
change, such as correcting install guidance or adding cross-repo
|
|
129
|
+
documentation that belongs in the main docs set.
|
|
130
|
+
|
|
131
|
+
</Step>
|
|
132
|
+
</Steps>
|
|
133
|
+
|
|
134
|
+
## Quality bar
|
|
135
|
+
|
|
136
|
+
| Requirement | Why |
|
|
137
|
+
| --------------------------- | --------------------------------------------- |
|
|
138
|
+
| Published on Durar Gateway or npm | Users need `Durar plugins install` to work |
|
|
139
|
+
| Public GitHub repo | Source review, issue tracking, transparency |
|
|
140
|
+
| Setup and usage docs | Users need to know how to configure it |
|
|
141
|
+
| Active maintenance | Recent updates or responsive issue handling |
|
|
142
|
+
|
|
143
|
+
Low-effort wrappers, unclear ownership, or unmaintained packages may be declined.
|
|
144
|
+
|
|
145
|
+
## Related
|
|
146
|
+
|
|
147
|
+
- [Install and Configure Plugins](/tools/plugin) — how to install any plugin
|
|
148
|
+
- [Building Plugins](/plugins/building-plugins) — create your own
|
|
149
|
+
- [Plugin Manifest](/plugins/manifest) — manifest schema
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Plugin manifest + JSON schema requirements (strict config validation)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You are building an Durar plugin
|
|
5
|
+
- You need to ship a plugin config schema or debug plugin validation errors
|
|
6
|
+
title: "Plugin Manifest"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Plugin manifest (Durar.plugin.json)
|
|
10
|
+
|
|
11
|
+
This page is for the **native Durar plugin manifest** only.
|
|
12
|
+
|
|
13
|
+
For compatible bundle layouts, see [Plugin bundles](/plugins/bundles).
|
|
14
|
+
|
|
15
|
+
Compatible bundle formats use different manifest files:
|
|
16
|
+
|
|
17
|
+
- Codex bundle: `.codex-plugin/plugin.json`
|
|
18
|
+
- Claude bundle: `.claude-plugin/plugin.json` or the default Claude component
|
|
19
|
+
layout without a manifest
|
|
20
|
+
- Cursor bundle: `.cursor-plugin/plugin.json`
|
|
21
|
+
|
|
22
|
+
Durar auto-detects those bundle layouts too, but they are not validated
|
|
23
|
+
against the `Durar.plugin.json` schema described here.
|
|
24
|
+
|
|
25
|
+
For compatible bundles, Durar currently reads bundle metadata plus declared
|
|
26
|
+
skill roots, Claude command roots, Claude bundle `settings.json` defaults,
|
|
27
|
+
Claude bundle LSP defaults, and supported hook packs when the layout matches
|
|
28
|
+
Durar runtime expectations.
|
|
29
|
+
|
|
30
|
+
Every native Durar plugin **must** ship a `Durar.plugin.json` file in the
|
|
31
|
+
**plugin root**. Durar uses this manifest to validate configuration
|
|
32
|
+
**without executing plugin code**. Missing or invalid manifests are treated as
|
|
33
|
+
plugin errors and block config validation.
|
|
34
|
+
|
|
35
|
+
See the full plugin system guide: [Plugins](/tools/plugin).
|
|
36
|
+
For the native capability model and current external-compatibility guidance:
|
|
37
|
+
[Capability model](/plugins/architecture#public-capability-model).
|
|
38
|
+
|
|
39
|
+
## What this file does
|
|
40
|
+
|
|
41
|
+
`Durar.plugin.json` is the metadata Durar reads before it loads your
|
|
42
|
+
plugin code.
|
|
43
|
+
|
|
44
|
+
Use it for:
|
|
45
|
+
|
|
46
|
+
- plugin identity
|
|
47
|
+
- config validation
|
|
48
|
+
- auth and onboarding metadata that should be available without booting plugin
|
|
49
|
+
runtime
|
|
50
|
+
- alias and auto-enable metadata that should resolve before plugin runtime loads
|
|
51
|
+
- shorthand model-family ownership metadata that should auto-activate the
|
|
52
|
+
plugin before runtime loads
|
|
53
|
+
- static capability ownership snapshots used for bundled compat wiring and
|
|
54
|
+
contract coverage
|
|
55
|
+
- channel-specific config metadata that should merge into catalog and validation
|
|
56
|
+
surfaces without loading runtime
|
|
57
|
+
- config UI hints
|
|
58
|
+
|
|
59
|
+
Do not use it for:
|
|
60
|
+
|
|
61
|
+
- registering runtime behavior
|
|
62
|
+
- declaring code entrypoints
|
|
63
|
+
- npm install metadata
|
|
64
|
+
|
|
65
|
+
Those belong in your plugin code and `package.json`.
|
|
66
|
+
|
|
67
|
+
## Minimal example
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"id": "voice-call",
|
|
72
|
+
"configSchema": {
|
|
73
|
+
"type": "object",
|
|
74
|
+
"additionalProperties": false,
|
|
75
|
+
"properties": {}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Rich example
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"id": "openrouter",
|
|
85
|
+
"name": "OpenRouter",
|
|
86
|
+
"description": "OpenRouter provider plugin",
|
|
87
|
+
"version": "1.0.0",
|
|
88
|
+
"providers": ["openrouter"],
|
|
89
|
+
"modelSupport": {
|
|
90
|
+
"modelPrefixes": ["router-"]
|
|
91
|
+
},
|
|
92
|
+
"cliBackends": ["openrouter-cli"],
|
|
93
|
+
"providerAuthEnvVars": {
|
|
94
|
+
"openrouter": ["OPENROUTER_API_KEY"]
|
|
95
|
+
},
|
|
96
|
+
"providerAuthChoices": [
|
|
97
|
+
{
|
|
98
|
+
"provider": "openrouter",
|
|
99
|
+
"method": "api-key",
|
|
100
|
+
"choiceId": "openrouter-api-key",
|
|
101
|
+
"choiceLabel": "OpenRouter API key",
|
|
102
|
+
"groupId": "openrouter",
|
|
103
|
+
"groupLabel": "OpenRouter",
|
|
104
|
+
"optionKey": "openrouterApiKey",
|
|
105
|
+
"cliFlag": "--openrouter-api-key",
|
|
106
|
+
"cliOption": "--openrouter-api-key <key>",
|
|
107
|
+
"cliDescription": "OpenRouter API key",
|
|
108
|
+
"onboardingScopes": ["text-inference"]
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"uiHints": {
|
|
112
|
+
"apiKey": {
|
|
113
|
+
"label": "API key",
|
|
114
|
+
"placeholder": "sk-or-v1-...",
|
|
115
|
+
"sensitive": true
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
"configSchema": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"additionalProperties": false,
|
|
121
|
+
"properties": {
|
|
122
|
+
"apiKey": {
|
|
123
|
+
"type": "string"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Top-level field reference
|
|
131
|
+
|
|
132
|
+
| Field | Required | Type | What it means |
|
|
133
|
+
| ----------------------------------- | -------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
134
|
+
| `id` | Yes | `string` | Canonical plugin id. This is the id used in `plugins.entries.<id>`. |
|
|
135
|
+
| `configSchema` | Yes | `object` | Inline JSON Schema for this plugin's config. |
|
|
136
|
+
| `enabledByDefault` | No | `true` | Marks a bundled plugin as enabled by default. Omit it, or set any non-`true` value, to leave the plugin disabled by default. |
|
|
137
|
+
| `legacyPluginIds` | No | `string[]` | Legacy ids that normalize to this canonical plugin id. |
|
|
138
|
+
| `autoEnableWhenConfiguredProviders` | No | `string[]` | Provider ids that should auto-enable this plugin when auth, config, or model refs mention them. |
|
|
139
|
+
| `kind` | No | `"memory"` \| `"context-engine"` | Declares an exclusive plugin kind used by `plugins.slots.*`. |
|
|
140
|
+
| `channels` | No | `string[]` | Channel ids owned by this plugin. Used for discovery and config validation. |
|
|
141
|
+
| `providers` | No | `string[]` | Provider ids owned by this plugin. |
|
|
142
|
+
| `modelSupport` | No | `object` | Manifest-owned shorthand model-family metadata used to auto-load the plugin before runtime. |
|
|
143
|
+
| `cliBackends` | No | `string[]` | CLI inference backend ids owned by this plugin. Used for startup auto-activation from explicit config refs. |
|
|
144
|
+
| `providerAuthEnvVars` | No | `Record<string, string[]>` | Cheap provider-auth env metadata that Durar can inspect without loading plugin code. |
|
|
145
|
+
| `providerAuthChoices` | No | `object[]` | Cheap auth-choice metadata for onboarding pickers, preferred-provider resolution, and simple CLI flag wiring. |
|
|
146
|
+
| `contracts` | No | `object` | Static bundled capability snapshot for speech, realtime transcription, realtime voice, media-understanding, image-generation, video-generation, web-fetch, web search, and tool ownership. |
|
|
147
|
+
| `channelConfigs` | No | `Record<string, object>` | Manifest-owned channel config metadata merged into discovery and validation surfaces before runtime loads. |
|
|
148
|
+
| `skills` | No | `string[]` | Skill directories to load, relative to the plugin root. |
|
|
149
|
+
| `name` | No | `string` | Human-readable plugin name. |
|
|
150
|
+
| `description` | No | `string` | Short summary shown in plugin surfaces. |
|
|
151
|
+
| `version` | No | `string` | Informational plugin version. |
|
|
152
|
+
| `uiHints` | No | `Record<string, object>` | UI labels, placeholders, and sensitivity hints for config fields. |
|
|
153
|
+
|
|
154
|
+
## providerAuthChoices reference
|
|
155
|
+
|
|
156
|
+
Each `providerAuthChoices` entry describes one onboarding or auth choice.
|
|
157
|
+
Durar reads this before provider runtime loads.
|
|
158
|
+
|
|
159
|
+
| Field | Required | Type | What it means |
|
|
160
|
+
| --------------------- | -------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
161
|
+
| `provider` | Yes | `string` | Provider id this choice belongs to. |
|
|
162
|
+
| `method` | Yes | `string` | Auth method id to dispatch to. |
|
|
163
|
+
| `choiceId` | Yes | `string` | Stable auth-choice id used by onboarding and CLI flows. |
|
|
164
|
+
| `choiceLabel` | No | `string` | User-facing label. If omitted, Durar falls back to `choiceId`. |
|
|
165
|
+
| `choiceHint` | No | `string` | Short helper text for the picker. |
|
|
166
|
+
| `assistantPriority` | No | `number` | Lower values sort earlier in assistant-driven interactive pickers. |
|
|
167
|
+
| `assistantVisibility` | No | `"visible"` \| `"manual-only"` | Hide the choice from assistant pickers while still allowing manual CLI selection. |
|
|
168
|
+
| `deprecatedChoiceIds` | No | `string[]` | Legacy choice ids that should redirect users to this replacement choice. |
|
|
169
|
+
| `groupId` | No | `string` | Optional group id for grouping related choices. |
|
|
170
|
+
| `groupLabel` | No | `string` | User-facing label for that group. |
|
|
171
|
+
| `groupHint` | No | `string` | Short helper text for the group. |
|
|
172
|
+
| `optionKey` | No | `string` | Internal option key for simple one-flag auth flows. |
|
|
173
|
+
| `cliFlag` | No | `string` | CLI flag name, such as `--openrouter-api-key`. |
|
|
174
|
+
| `cliOption` | No | `string` | Full CLI option shape, such as `--openrouter-api-key <key>`. |
|
|
175
|
+
| `cliDescription` | No | `string` | Description used in CLI help. |
|
|
176
|
+
| `onboardingScopes` | No | `Array<"text-inference" \| "image-generation">` | Which onboarding surfaces this choice should appear in. If omitted, it defaults to `["text-inference"]`. |
|
|
177
|
+
|
|
178
|
+
## uiHints reference
|
|
179
|
+
|
|
180
|
+
`uiHints` is a map from config field names to small rendering hints.
|
|
181
|
+
|
|
182
|
+
```json
|
|
183
|
+
{
|
|
184
|
+
"uiHints": {
|
|
185
|
+
"apiKey": {
|
|
186
|
+
"label": "API key",
|
|
187
|
+
"help": "Used for OpenRouter requests",
|
|
188
|
+
"placeholder": "sk-or-v1-...",
|
|
189
|
+
"sensitive": true
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Each field hint can include:
|
|
196
|
+
|
|
197
|
+
| Field | Type | What it means |
|
|
198
|
+
| ------------- | ---------- | --------------------------------------- |
|
|
199
|
+
| `label` | `string` | User-facing field label. |
|
|
200
|
+
| `help` | `string` | Short helper text. |
|
|
201
|
+
| `tags` | `string[]` | Optional UI tags. |
|
|
202
|
+
| `advanced` | `boolean` | Marks the field as advanced. |
|
|
203
|
+
| `sensitive` | `boolean` | Marks the field as secret or sensitive. |
|
|
204
|
+
| `placeholder` | `string` | Placeholder text for form inputs. |
|
|
205
|
+
|
|
206
|
+
## contracts reference
|
|
207
|
+
|
|
208
|
+
Use `contracts` only for static capability ownership metadata that Durar can
|
|
209
|
+
read without importing the plugin runtime.
|
|
210
|
+
|
|
211
|
+
```json
|
|
212
|
+
{
|
|
213
|
+
"contracts": {
|
|
214
|
+
"speechProviders": ["openai"],
|
|
215
|
+
"realtimeTranscriptionProviders": ["openai"],
|
|
216
|
+
"realtimeVoiceProviders": ["openai"],
|
|
217
|
+
"mediaUnderstandingProviders": ["openai", "openai-codex"],
|
|
218
|
+
"imageGenerationProviders": ["openai"],
|
|
219
|
+
"videoGenerationProviders": ["qwen"],
|
|
220
|
+
"webFetchProviders": ["firecrawl"],
|
|
221
|
+
"webSearchProviders": ["gemini"],
|
|
222
|
+
"tools": ["firecrawl_search", "firecrawl_scrape"]
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Each list is optional:
|
|
228
|
+
|
|
229
|
+
| Field | Type | What it means |
|
|
230
|
+
| -------------------------------- | ---------- | -------------------------------------------------------------- |
|
|
231
|
+
| `speechProviders` | `string[]` | Speech provider ids this plugin owns. |
|
|
232
|
+
| `realtimeTranscriptionProviders` | `string[]` | Realtime-transcription provider ids this plugin owns. |
|
|
233
|
+
| `realtimeVoiceProviders` | `string[]` | Realtime-voice provider ids this plugin owns. |
|
|
234
|
+
| `mediaUnderstandingProviders` | `string[]` | Media-understanding provider ids this plugin owns. |
|
|
235
|
+
| `imageGenerationProviders` | `string[]` | Image-generation provider ids this plugin owns. |
|
|
236
|
+
| `videoGenerationProviders` | `string[]` | Video-generation provider ids this plugin owns. |
|
|
237
|
+
| `webFetchProviders` | `string[]` | Web-fetch provider ids this plugin owns. |
|
|
238
|
+
| `webSearchProviders` | `string[]` | Web-search provider ids this plugin owns. |
|
|
239
|
+
| `tools` | `string[]` | Agent tool names this plugin owns for bundled contract checks. |
|
|
240
|
+
|
|
241
|
+
## channelConfigs reference
|
|
242
|
+
|
|
243
|
+
Use `channelConfigs` when a channel plugin needs cheap config metadata before
|
|
244
|
+
runtime loads.
|
|
245
|
+
|
|
246
|
+
```json
|
|
247
|
+
{
|
|
248
|
+
"channelConfigs": {
|
|
249
|
+
"matrix": {
|
|
250
|
+
"schema": {
|
|
251
|
+
"type": "object",
|
|
252
|
+
"additionalProperties": false,
|
|
253
|
+
"properties": {
|
|
254
|
+
"homeserverUrl": { "type": "string" }
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"uiHints": {
|
|
258
|
+
"homeserverUrl": {
|
|
259
|
+
"label": "Homeserver URL",
|
|
260
|
+
"placeholder": "https://matrix.example.com"
|
|
261
|
+
}
|
|
262
|
+
},
|
|
263
|
+
"label": "Matrix",
|
|
264
|
+
"description": "Matrix homeserver connection",
|
|
265
|
+
"preferOver": ["matrix-legacy"]
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Each channel entry can include:
|
|
272
|
+
|
|
273
|
+
| Field | Type | What it means |
|
|
274
|
+
| ------------- | ------------------------ | ----------------------------------------------------------------------------------------- |
|
|
275
|
+
| `schema` | `object` | JSON Schema for `channels.<id>`. Required for each declared channel config entry. |
|
|
276
|
+
| `uiHints` | `Record<string, object>` | Optional UI labels/placeholders/sensitive hints for that channel config section. |
|
|
277
|
+
| `label` | `string` | Channel label merged into picker and inspect surfaces when runtime metadata is not ready. |
|
|
278
|
+
| `description` | `string` | Short channel description for inspect and catalog surfaces. |
|
|
279
|
+
| `preferOver` | `string[]` | Legacy or lower-priority plugin ids this channel should outrank in selection surfaces. |
|
|
280
|
+
|
|
281
|
+
## modelSupport reference
|
|
282
|
+
|
|
283
|
+
Use `modelSupport` when Durar should infer your provider plugin from
|
|
284
|
+
shorthand model ids like `gpt-5.4` or `claude-sonnet-4.6` before plugin runtime
|
|
285
|
+
loads.
|
|
286
|
+
|
|
287
|
+
```json
|
|
288
|
+
{
|
|
289
|
+
"modelSupport": {
|
|
290
|
+
"modelPrefixes": ["gpt-", "o1", "o3", "o4"],
|
|
291
|
+
"modelPatterns": ["^computer-use-preview"]
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Durar applies this precedence:
|
|
297
|
+
|
|
298
|
+
- explicit `provider/model` refs use the owning `providers` manifest metadata
|
|
299
|
+
- `modelPatterns` beat `modelPrefixes`
|
|
300
|
+
- if one non-bundled plugin and one bundled plugin both match, the non-bundled
|
|
301
|
+
plugin wins
|
|
302
|
+
- remaining ambiguity is ignored until the user or config specifies a provider
|
|
303
|
+
|
|
304
|
+
Fields:
|
|
305
|
+
|
|
306
|
+
| Field | Type | What it means |
|
|
307
|
+
| --------------- | ---------- | ------------------------------------------------------------------------------- |
|
|
308
|
+
| `modelPrefixes` | `string[]` | Prefixes matched with `startsWith` against shorthand model ids. |
|
|
309
|
+
| `modelPatterns` | `string[]` | Regex sources matched against shorthand model ids after profile suffix removal. |
|
|
310
|
+
|
|
311
|
+
Legacy top-level capability keys are deprecated. Use `Durar doctor --fix` to
|
|
312
|
+
move `speechProviders`, `realtimeTranscriptionProviders`,
|
|
313
|
+
`realtimeVoiceProviders`, `mediaUnderstandingProviders`,
|
|
314
|
+
`imageGenerationProviders`, `videoGenerationProviders`,
|
|
315
|
+
`webFetchProviders`, and `webSearchProviders` under `contracts`; normal
|
|
316
|
+
manifest loading no longer treats those top-level fields as capability
|
|
317
|
+
ownership.
|
|
318
|
+
|
|
319
|
+
## Manifest versus package.json
|
|
320
|
+
|
|
321
|
+
The two files serve different jobs:
|
|
322
|
+
|
|
323
|
+
| File | Use it for |
|
|
324
|
+
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
|
|
325
|
+
| `Durar.plugin.json` | Discovery, config validation, auth-choice metadata, and UI hints that must exist before plugin code runs |
|
|
326
|
+
| `package.json` | npm metadata, dependency installation, and the `Durar` block used for entrypoints, install gating, setup, or catalog metadata |
|
|
327
|
+
|
|
328
|
+
If you are unsure where a piece of metadata belongs, use this rule:
|
|
329
|
+
|
|
330
|
+
- if Durar must know it before loading plugin code, put it in `Durar.plugin.json`
|
|
331
|
+
- if it is about packaging, entry files, or npm install behavior, put it in `package.json`
|
|
332
|
+
|
|
333
|
+
### package.json fields that affect discovery
|
|
334
|
+
|
|
335
|
+
Some pre-runtime plugin metadata intentionally lives in `package.json` under the
|
|
336
|
+
`Durar` block instead of `Durar.plugin.json`.
|
|
337
|
+
|
|
338
|
+
Important examples:
|
|
339
|
+
|
|
340
|
+
| Field | What it means |
|
|
341
|
+
| ----------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
342
|
+
| `Durar.extensions` | Declares native plugin entrypoints. |
|
|
343
|
+
| `Durar.setupEntry` | Lightweight setup-only entrypoint used during onboarding and deferred channel startup. |
|
|
344
|
+
| `Durar.channel` | Cheap channel catalog metadata like labels, docs paths, aliases, and selection copy. |
|
|
345
|
+
| `Durar.install.npmSpec` / `Durar.install.localPath` | Install/update hints for bundled and externally published plugins. |
|
|
346
|
+
| `Durar.install.defaultChoice` | Preferred install path when multiple install sources are available. |
|
|
347
|
+
| `Durar.install.minHostVersion` | Minimum supported Durar host version, using a semver floor like `>=2026.3.22`. |
|
|
348
|
+
| `Durar.install.allowInvalidConfigRecovery` | Allows a narrow bundled-plugin reinstall recovery path when config is invalid. |
|
|
349
|
+
| `Durar.startup.deferConfiguredChannelFullLoadUntilAfterListen` | Lets setup-only channel surfaces load before the full channel plugin during startup. |
|
|
350
|
+
|
|
351
|
+
`Durar.install.minHostVersion` is enforced during install and manifest
|
|
352
|
+
registry loading. Invalid values are rejected; newer-but-valid values skip the
|
|
353
|
+
plugin on older hosts.
|
|
354
|
+
|
|
355
|
+
`Durar.install.allowInvalidConfigRecovery` is intentionally narrow. It does
|
|
356
|
+
not make arbitrary broken configs installable. Today it only allows install
|
|
357
|
+
flows to recover from specific stale bundled-plugin upgrade failures, such as a
|
|
358
|
+
missing bundled plugin path or a stale `channels.<id>` entry for that same
|
|
359
|
+
bundled plugin. Unrelated config errors still block install and send operators
|
|
360
|
+
to `Durar doctor --fix`.
|
|
361
|
+
|
|
362
|
+
## JSON Schema requirements
|
|
363
|
+
|
|
364
|
+
- **Every plugin must ship a JSON Schema**, even if it accepts no config.
|
|
365
|
+
- An empty schema is acceptable (for example, `{ "type": "object", "additionalProperties": false }`).
|
|
366
|
+
- Schemas are validated at config read/write time, not at runtime.
|
|
367
|
+
|
|
368
|
+
## Validation behavior
|
|
369
|
+
|
|
370
|
+
- Unknown `channels.*` keys are **errors**, unless the channel id is declared by
|
|
371
|
+
a plugin manifest.
|
|
372
|
+
- `plugins.entries.<id>`, `plugins.allow`, `plugins.deny`, and `plugins.slots.*`
|
|
373
|
+
must reference **discoverable** plugin ids. Unknown ids are **errors**.
|
|
374
|
+
- If a plugin is installed but has a broken or missing manifest or schema,
|
|
375
|
+
validation fails and Doctor reports the plugin error.
|
|
376
|
+
- If plugin config exists but the plugin is **disabled**, the config is kept and
|
|
377
|
+
a **warning** is surfaced in Doctor + logs.
|
|
378
|
+
|
|
379
|
+
See [Configuration reference](/gateway/configuration) for the full `plugins.*` schema.
|
|
380
|
+
|
|
381
|
+
## Notes
|
|
382
|
+
|
|
383
|
+
- The manifest is **required for native Durar plugins**, including local filesystem loads.
|
|
384
|
+
- Runtime still loads the plugin module separately; the manifest is only for
|
|
385
|
+
discovery + validation.
|
|
386
|
+
- Native manifests are parsed with JSON5, so comments, trailing commas, and
|
|
387
|
+
unquoted keys are accepted as long as the final value is still an object.
|
|
388
|
+
- Only documented manifest fields are read by the manifest loader. Avoid adding
|
|
389
|
+
custom top-level keys here.
|
|
390
|
+
- `providerAuthEnvVars` is the cheap metadata path for auth probes, env-marker
|
|
391
|
+
validation, and similar provider-auth surfaces that should not boot plugin
|
|
392
|
+
runtime just to inspect env names.
|
|
393
|
+
- `providerAuthChoices` is the cheap metadata path for auth-choice pickers,
|
|
394
|
+
`--auth-choice` resolution, preferred-provider mapping, and simple onboarding
|
|
395
|
+
CLI flag registration before provider runtime loads. For runtime wizard
|
|
396
|
+
metadata that requires provider code, see
|
|
397
|
+
[Provider runtime hooks](/plugins/architecture#provider-runtime-hooks).
|
|
398
|
+
- Exclusive plugin kinds are selected through `plugins.slots.*`.
|
|
399
|
+
- `kind: "memory"` is selected by `plugins.slots.memory`.
|
|
400
|
+
- `kind: "context-engine"` is selected by `plugins.slots.contextEngine`
|
|
401
|
+
(default: built-in `legacy`).
|
|
402
|
+
- `channels`, `providers`, `cliBackends`, and `skills` can be omitted when a
|
|
403
|
+
plugin does not need them.
|
|
404
|
+
- If your plugin depends on native modules, document the build steps and any
|
|
405
|
+
package-manager allowlist requirements (for example, pnpm `allow-build-scripts`
|
|
406
|
+
- `pnpm rebuild <package>`).
|
|
407
|
+
|
|
408
|
+
## Related
|
|
409
|
+
|
|
410
|
+
- [Building Plugins](/plugins/building-plugins) — getting started with plugins
|
|
411
|
+
- [Plugin Architecture](/plugins/architecture) — internal architecture
|
|
412
|
+
- [SDK Overview](/plugins/sdk-overview) — Plugin SDK reference
|