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
package/docs/cli/logs.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `Durar logs` (tail gateway logs via RPC)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You need to tail Gateway logs remotely (without SSH)
|
|
5
|
+
- You want JSON log lines for tooling
|
|
6
|
+
title: "logs"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# `Durar logs`
|
|
10
|
+
|
|
11
|
+
Tail Gateway file logs over RPC (works in remote mode).
|
|
12
|
+
|
|
13
|
+
Related:
|
|
14
|
+
|
|
15
|
+
- Logging overview: [Logging](/logging)
|
|
16
|
+
- Gateway CLI: [gateway](/cli/gateway)
|
|
17
|
+
|
|
18
|
+
## Options
|
|
19
|
+
|
|
20
|
+
- `--limit <n>`: maximum number of log lines to return (default `200`)
|
|
21
|
+
- `--max-bytes <n>`: maximum bytes to read from the log file (default `250000`)
|
|
22
|
+
- `--follow`: follow the log stream
|
|
23
|
+
- `--interval <ms>`: polling interval while following (default `1000`)
|
|
24
|
+
- `--json`: emit line-delimited JSON events
|
|
25
|
+
- `--plain`: plain text output without styled formatting
|
|
26
|
+
- `--no-color`: disable ANSI colors
|
|
27
|
+
- `--local-time`: render timestamps in your local timezone
|
|
28
|
+
|
|
29
|
+
## Shared Gateway RPC options
|
|
30
|
+
|
|
31
|
+
`Durar logs` also accepts the standard Gateway client flags:
|
|
32
|
+
|
|
33
|
+
- `--url <url>`: Gateway WebSocket URL
|
|
34
|
+
- `--token <token>`: Gateway token
|
|
35
|
+
- `--timeout <ms>`: timeout in ms (default `30000`)
|
|
36
|
+
- `--expect-final`: wait for a final response when the Gateway call is agent-backed
|
|
37
|
+
|
|
38
|
+
When you pass `--url`, the CLI does not auto-apply config or environment credentials. Include `--token` explicitly if the target Gateway requires auth.
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
Durar logs
|
|
44
|
+
Durar logs --follow
|
|
45
|
+
Durar logs --follow --interval 2000
|
|
46
|
+
Durar logs --limit 500 --max-bytes 500000
|
|
47
|
+
Durar logs --json
|
|
48
|
+
Durar logs --plain
|
|
49
|
+
Durar logs --no-color
|
|
50
|
+
Durar logs --limit 500
|
|
51
|
+
Durar logs --local-time
|
|
52
|
+
Durar logs --follow --local-time
|
|
53
|
+
Durar logs --url ws://127.0.0.1:18789 --token "$Durar_GATEWAY_TOKEN"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Notes
|
|
57
|
+
|
|
58
|
+
- Use `--local-time` to render timestamps in your local timezone.
|
|
59
|
+
- If the local loopback Gateway asks for pairing, `Durar logs` falls back to the configured local log file automatically. Explicit `--url` targets do not use this fallback.
|
package/docs/cli/mcp.md
ADDED
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Expose Durar channel conversations over MCP and manage saved MCP server definitions"
|
|
3
|
+
read_when:
|
|
4
|
+
- Connecting Codex, Claude Code, or another MCP client to Durar-backed channels
|
|
5
|
+
- Running `Durar mcp serve`
|
|
6
|
+
- Managing Durar-saved MCP server definitions
|
|
7
|
+
title: "mcp"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# mcp
|
|
11
|
+
|
|
12
|
+
`Durar mcp` has two jobs:
|
|
13
|
+
|
|
14
|
+
- run Durar as an MCP server with `Durar mcp serve`
|
|
15
|
+
- manage Durar-owned outbound MCP server definitions with `list`, `show`,
|
|
16
|
+
`set`, and `unset`
|
|
17
|
+
|
|
18
|
+
In other words:
|
|
19
|
+
|
|
20
|
+
- `serve` is Durar acting as an MCP server
|
|
21
|
+
- `list` / `show` / `set` / `unset` is Durar acting as an MCP client-side
|
|
22
|
+
registry for other MCP servers its runtimes may consume later
|
|
23
|
+
|
|
24
|
+
Use [`Durar acp`](/cli/acp) when Durar should host a coding harness
|
|
25
|
+
session itself and route that runtime through ACP.
|
|
26
|
+
|
|
27
|
+
## Durar as an MCP server
|
|
28
|
+
|
|
29
|
+
This is the `Durar mcp serve` path.
|
|
30
|
+
|
|
31
|
+
## When to use `serve`
|
|
32
|
+
|
|
33
|
+
Use `Durar mcp serve` when:
|
|
34
|
+
|
|
35
|
+
- Codex, Claude Code, or another MCP client should talk directly to
|
|
36
|
+
Durar-backed channel conversations
|
|
37
|
+
- you already have a local or remote Durar Gateway with routed sessions
|
|
38
|
+
- you want one MCP server that works across Durar's channel backends instead
|
|
39
|
+
of running separate per-channel bridges
|
|
40
|
+
|
|
41
|
+
Use [`Durar acp`](/cli/acp) instead when Durar should host the coding
|
|
42
|
+
runtime itself and keep the agent session inside Durar.
|
|
43
|
+
|
|
44
|
+
## How it works
|
|
45
|
+
|
|
46
|
+
`Durar mcp serve` starts a stdio MCP server. The MCP client owns that
|
|
47
|
+
process. While the client keeps the stdio session open, the bridge connects to a
|
|
48
|
+
local or remote Durar Gateway over WebSocket and exposes routed channel
|
|
49
|
+
conversations over MCP.
|
|
50
|
+
|
|
51
|
+
Lifecycle:
|
|
52
|
+
|
|
53
|
+
1. the MCP client spawns `Durar mcp serve`
|
|
54
|
+
2. the bridge connects to Gateway
|
|
55
|
+
3. routed sessions become MCP conversations and transcript/history tools
|
|
56
|
+
4. live events are queued in memory while the bridge is connected
|
|
57
|
+
5. if Claude channel mode is enabled, the same session can also receive
|
|
58
|
+
Claude-specific push notifications
|
|
59
|
+
|
|
60
|
+
Important behavior:
|
|
61
|
+
|
|
62
|
+
- live queue state starts when the bridge connects
|
|
63
|
+
- older transcript history is read with `messages_read`
|
|
64
|
+
- Claude push notifications only exist while the MCP session is alive
|
|
65
|
+
- when the client disconnects, the bridge exits and the live queue is gone
|
|
66
|
+
|
|
67
|
+
## Choose a client mode
|
|
68
|
+
|
|
69
|
+
Use the same bridge in two different ways:
|
|
70
|
+
|
|
71
|
+
- Generic MCP clients: standard MCP tools only. Use `conversations_list`,
|
|
72
|
+
`messages_read`, `events_poll`, `events_wait`, `messages_send`, and the
|
|
73
|
+
approval tools.
|
|
74
|
+
- Claude Code: standard MCP tools plus the Claude-specific channel adapter.
|
|
75
|
+
Enable `--claude-channel-mode on` or leave the default `auto`.
|
|
76
|
+
|
|
77
|
+
Today, `auto` behaves the same as `on`. There is no client capability detection
|
|
78
|
+
yet.
|
|
79
|
+
|
|
80
|
+
## What `serve` exposes
|
|
81
|
+
|
|
82
|
+
The bridge uses existing Gateway session route metadata to expose channel-backed
|
|
83
|
+
conversations. A conversation appears when Durar already has session state
|
|
84
|
+
with a known route such as:
|
|
85
|
+
|
|
86
|
+
- `channel`
|
|
87
|
+
- recipient or destination metadata
|
|
88
|
+
- optional `accountId`
|
|
89
|
+
- optional `threadId`
|
|
90
|
+
|
|
91
|
+
This gives MCP clients one place to:
|
|
92
|
+
|
|
93
|
+
- list recent routed conversations
|
|
94
|
+
- read recent transcript history
|
|
95
|
+
- wait for new inbound events
|
|
96
|
+
- send a reply back through the same route
|
|
97
|
+
- see approval requests that arrive while the bridge is connected
|
|
98
|
+
|
|
99
|
+
## Usage
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Local Gateway
|
|
103
|
+
Durar mcp serve
|
|
104
|
+
|
|
105
|
+
# Remote Gateway
|
|
106
|
+
Durar mcp serve --url wss://gateway-host:18789 --token-file ~/.Durar/gateway.token
|
|
107
|
+
|
|
108
|
+
# Remote Gateway with password auth
|
|
109
|
+
Durar mcp serve --url wss://gateway-host:18789 --password-file ~/.Durar/gateway.password
|
|
110
|
+
|
|
111
|
+
# Enable verbose bridge logs
|
|
112
|
+
Durar mcp serve --verbose
|
|
113
|
+
|
|
114
|
+
# Disable Claude-specific push notifications
|
|
115
|
+
Durar mcp serve --claude-channel-mode off
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Bridge tools
|
|
119
|
+
|
|
120
|
+
The current bridge exposes these MCP tools:
|
|
121
|
+
|
|
122
|
+
- `conversations_list`
|
|
123
|
+
- `conversation_get`
|
|
124
|
+
- `messages_read`
|
|
125
|
+
- `attachments_fetch`
|
|
126
|
+
- `events_poll`
|
|
127
|
+
- `events_wait`
|
|
128
|
+
- `messages_send`
|
|
129
|
+
- `permissions_list_open`
|
|
130
|
+
- `permissions_respond`
|
|
131
|
+
|
|
132
|
+
### `conversations_list`
|
|
133
|
+
|
|
134
|
+
Lists recent session-backed conversations that already have route metadata in
|
|
135
|
+
Gateway session state.
|
|
136
|
+
|
|
137
|
+
Useful filters:
|
|
138
|
+
|
|
139
|
+
- `limit`
|
|
140
|
+
- `search`
|
|
141
|
+
- `channel`
|
|
142
|
+
- `includeDerivedTitles`
|
|
143
|
+
- `includeLastMessage`
|
|
144
|
+
|
|
145
|
+
### `conversation_get`
|
|
146
|
+
|
|
147
|
+
Returns one conversation by `session_key`.
|
|
148
|
+
|
|
149
|
+
### `messages_read`
|
|
150
|
+
|
|
151
|
+
Reads recent transcript messages for one session-backed conversation.
|
|
152
|
+
|
|
153
|
+
### `attachments_fetch`
|
|
154
|
+
|
|
155
|
+
Extracts non-text message content blocks from one transcript message. This is a
|
|
156
|
+
metadata view over transcript content, not a standalone durable attachment blob
|
|
157
|
+
store.
|
|
158
|
+
|
|
159
|
+
### `events_poll`
|
|
160
|
+
|
|
161
|
+
Reads queued live events since a numeric cursor.
|
|
162
|
+
|
|
163
|
+
### `events_wait`
|
|
164
|
+
|
|
165
|
+
Long-polls until the next matching queued event arrives or a timeout expires.
|
|
166
|
+
|
|
167
|
+
Use this when a generic MCP client needs near-real-time delivery without a
|
|
168
|
+
Claude-specific push protocol.
|
|
169
|
+
|
|
170
|
+
### `messages_send`
|
|
171
|
+
|
|
172
|
+
Sends text back through the same route already recorded on the session.
|
|
173
|
+
|
|
174
|
+
Current behavior:
|
|
175
|
+
|
|
176
|
+
- requires an existing conversation route
|
|
177
|
+
- uses the session's channel, recipient, account id, and thread id
|
|
178
|
+
- sends text only
|
|
179
|
+
|
|
180
|
+
### `permissions_list_open`
|
|
181
|
+
|
|
182
|
+
Lists pending exec/plugin approval requests the bridge has observed since it
|
|
183
|
+
connected to the Gateway.
|
|
184
|
+
|
|
185
|
+
### `permissions_respond`
|
|
186
|
+
|
|
187
|
+
Resolves one pending exec/plugin approval request with:
|
|
188
|
+
|
|
189
|
+
- `allow-once`
|
|
190
|
+
- `allow-always`
|
|
191
|
+
- `deny`
|
|
192
|
+
|
|
193
|
+
## Event model
|
|
194
|
+
|
|
195
|
+
The bridge keeps an in-memory event queue while it is connected.
|
|
196
|
+
|
|
197
|
+
Current event types:
|
|
198
|
+
|
|
199
|
+
- `message`
|
|
200
|
+
- `exec_approval_requested`
|
|
201
|
+
- `exec_approval_resolved`
|
|
202
|
+
- `plugin_approval_requested`
|
|
203
|
+
- `plugin_approval_resolved`
|
|
204
|
+
- `claude_permission_request`
|
|
205
|
+
|
|
206
|
+
Important limits:
|
|
207
|
+
|
|
208
|
+
- the queue is live-only; it starts when the MCP bridge starts
|
|
209
|
+
- `events_poll` and `events_wait` do not replay older Gateway history by
|
|
210
|
+
themselves
|
|
211
|
+
- durable backlog should be read with `messages_read`
|
|
212
|
+
|
|
213
|
+
## Claude channel notifications
|
|
214
|
+
|
|
215
|
+
The bridge can also expose Claude-specific channel notifications. This is the
|
|
216
|
+
Durar equivalent of a Claude Code channel adapter: standard MCP tools remain
|
|
217
|
+
available, but live inbound messages can also arrive as Claude-specific MCP
|
|
218
|
+
notifications.
|
|
219
|
+
|
|
220
|
+
Flags:
|
|
221
|
+
|
|
222
|
+
- `--claude-channel-mode off`: standard MCP tools only
|
|
223
|
+
- `--claude-channel-mode on`: enable Claude channel notifications
|
|
224
|
+
- `--claude-channel-mode auto`: current default; same bridge behavior as `on`
|
|
225
|
+
|
|
226
|
+
When Claude channel mode is enabled, the server advertises Claude experimental
|
|
227
|
+
capabilities and can emit:
|
|
228
|
+
|
|
229
|
+
- `notifications/claude/channel`
|
|
230
|
+
- `notifications/claude/channel/permission`
|
|
231
|
+
|
|
232
|
+
Current bridge behavior:
|
|
233
|
+
|
|
234
|
+
- inbound `user` transcript messages are forwarded as
|
|
235
|
+
`notifications/claude/channel`
|
|
236
|
+
- Claude permission requests received over MCP are tracked in-memory
|
|
237
|
+
- if the linked conversation later sends `yes abcde` or `no abcde`, the bridge
|
|
238
|
+
converts that to `notifications/claude/channel/permission`
|
|
239
|
+
- these notifications are live-session only; if the MCP client disconnects,
|
|
240
|
+
there is no push target
|
|
241
|
+
|
|
242
|
+
This is intentionally client-specific. Generic MCP clients should rely on the
|
|
243
|
+
standard polling tools.
|
|
244
|
+
|
|
245
|
+
## MCP client config
|
|
246
|
+
|
|
247
|
+
Example stdio client config:
|
|
248
|
+
|
|
249
|
+
```json
|
|
250
|
+
{
|
|
251
|
+
"mcpServers": {
|
|
252
|
+
"Durar": {
|
|
253
|
+
"command": "Durar",
|
|
254
|
+
"args": [
|
|
255
|
+
"mcp",
|
|
256
|
+
"serve",
|
|
257
|
+
"--url",
|
|
258
|
+
"wss://gateway-host:18789",
|
|
259
|
+
"--token-file",
|
|
260
|
+
"/path/to/gateway.token"
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
For most generic MCP clients, start with the standard tool surface and ignore
|
|
268
|
+
Claude mode. Turn Claude mode on only for clients that actually understand the
|
|
269
|
+
Claude-specific notification methods.
|
|
270
|
+
|
|
271
|
+
## Options
|
|
272
|
+
|
|
273
|
+
`Durar mcp serve` supports:
|
|
274
|
+
|
|
275
|
+
- `--url <url>`: Gateway WebSocket URL
|
|
276
|
+
- `--token <token>`: Gateway token
|
|
277
|
+
- `--token-file <path>`: read token from file
|
|
278
|
+
- `--password <password>`: Gateway password
|
|
279
|
+
- `--password-file <path>`: read password from file
|
|
280
|
+
- `--claude-channel-mode <auto|on|off>`: Claude notification mode
|
|
281
|
+
- `-v`, `--verbose`: verbose logs on stderr
|
|
282
|
+
|
|
283
|
+
Prefer `--token-file` or `--password-file` over inline secrets when possible.
|
|
284
|
+
|
|
285
|
+
## Security and trust boundary
|
|
286
|
+
|
|
287
|
+
The bridge does not invent routing. It only exposes conversations that Gateway
|
|
288
|
+
already knows how to route.
|
|
289
|
+
|
|
290
|
+
That means:
|
|
291
|
+
|
|
292
|
+
- sender allowlists, pairing, and channel-level trust still belong to the
|
|
293
|
+
underlying Durar channel configuration
|
|
294
|
+
- `messages_send` can only reply through an existing stored route
|
|
295
|
+
- approval state is live/in-memory only for the current bridge session
|
|
296
|
+
- bridge auth should use the same Gateway token or password controls you would
|
|
297
|
+
trust for any other remote Gateway client
|
|
298
|
+
|
|
299
|
+
If a conversation is missing from `conversations_list`, the usual cause is not
|
|
300
|
+
MCP configuration. It is missing or incomplete route metadata in the underlying
|
|
301
|
+
Gateway session.
|
|
302
|
+
|
|
303
|
+
## Testing
|
|
304
|
+
|
|
305
|
+
Durar ships a deterministic Docker smoke for this bridge:
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
pnpm test:docker:mcp-channels
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
That smoke:
|
|
312
|
+
|
|
313
|
+
- starts a seeded Gateway container
|
|
314
|
+
- starts a second container that spawns `Durar mcp serve`
|
|
315
|
+
- verifies conversation discovery, transcript reads, attachment metadata reads,
|
|
316
|
+
live event queue behavior, and outbound send routing
|
|
317
|
+
- validates Claude-style channel and permission notifications over the real
|
|
318
|
+
stdio MCP bridge
|
|
319
|
+
|
|
320
|
+
This is the fastest way to prove the bridge works without wiring a real
|
|
321
|
+
Telegram, Discord, or iMessage account into the test run.
|
|
322
|
+
|
|
323
|
+
For broader testing context, see [Testing](/help/testing).
|
|
324
|
+
|
|
325
|
+
## Troubleshooting
|
|
326
|
+
|
|
327
|
+
### No conversations returned
|
|
328
|
+
|
|
329
|
+
Usually means the Gateway session is not already routable. Confirm that the
|
|
330
|
+
underlying session has stored channel/provider, recipient, and optional
|
|
331
|
+
account/thread route metadata.
|
|
332
|
+
|
|
333
|
+
### `events_poll` or `events_wait` misses older messages
|
|
334
|
+
|
|
335
|
+
Expected. The live queue starts when the bridge connects. Read older transcript
|
|
336
|
+
history with `messages_read`.
|
|
337
|
+
|
|
338
|
+
### Claude notifications do not show up
|
|
339
|
+
|
|
340
|
+
Check all of these:
|
|
341
|
+
|
|
342
|
+
- the client kept the stdio MCP session open
|
|
343
|
+
- `--claude-channel-mode` is `on` or `auto`
|
|
344
|
+
- the client actually understands the Claude-specific notification methods
|
|
345
|
+
- the inbound message happened after the bridge connected
|
|
346
|
+
|
|
347
|
+
### Approvals are missing
|
|
348
|
+
|
|
349
|
+
`permissions_list_open` only shows approval requests observed while the bridge
|
|
350
|
+
was connected. It is not a durable approval history API.
|
|
351
|
+
|
|
352
|
+
## Durar as an MCP client registry
|
|
353
|
+
|
|
354
|
+
This is the `Durar mcp list`, `show`, `set`, and `unset` path.
|
|
355
|
+
|
|
356
|
+
These commands do not expose Durar over MCP. They manage Durar-owned MCP
|
|
357
|
+
server definitions under `mcp.servers` in Durar config.
|
|
358
|
+
|
|
359
|
+
Those saved definitions are for runtimes that Durar launches or configures
|
|
360
|
+
later, such as embedded Pi and other runtime adapters. Durar stores the
|
|
361
|
+
definitions centrally so those runtimes do not need to keep their own duplicate
|
|
362
|
+
MCP server lists.
|
|
363
|
+
|
|
364
|
+
Important behavior:
|
|
365
|
+
|
|
366
|
+
- these commands only read or write Durar config
|
|
367
|
+
- they do not connect to the target MCP server
|
|
368
|
+
- they do not validate whether the command, URL, or remote transport is
|
|
369
|
+
reachable right now
|
|
370
|
+
- runtime adapters decide which transport shapes they actually support at
|
|
371
|
+
execution time
|
|
372
|
+
|
|
373
|
+
## Saved MCP server definitions
|
|
374
|
+
|
|
375
|
+
Durar also stores a lightweight MCP server registry in config for surfaces
|
|
376
|
+
that want Durar-managed MCP definitions.
|
|
377
|
+
|
|
378
|
+
Commands:
|
|
379
|
+
|
|
380
|
+
- `Durar mcp list`
|
|
381
|
+
- `Durar mcp show [name]`
|
|
382
|
+
- `Durar mcp set <name> <json>`
|
|
383
|
+
- `Durar mcp unset <name>`
|
|
384
|
+
|
|
385
|
+
Notes:
|
|
386
|
+
|
|
387
|
+
- `list` sorts server names.
|
|
388
|
+
- `show` without a name prints the full configured MCP server object.
|
|
389
|
+
- `set` expects one JSON object value on the command line.
|
|
390
|
+
- `unset` fails if the named server does not exist.
|
|
391
|
+
|
|
392
|
+
Examples:
|
|
393
|
+
|
|
394
|
+
```bash
|
|
395
|
+
Durar mcp list
|
|
396
|
+
Durar mcp show context7 --json
|
|
397
|
+
Durar mcp set context7 '{"command":"uvx","args":["context7-mcp"]}'
|
|
398
|
+
Durar mcp set docs '{"url":"https://mcp.example.com"}'
|
|
399
|
+
Durar mcp unset context7
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
Example config shape:
|
|
403
|
+
|
|
404
|
+
```json
|
|
405
|
+
{
|
|
406
|
+
"mcp": {
|
|
407
|
+
"servers": {
|
|
408
|
+
"context7": {
|
|
409
|
+
"command": "uvx",
|
|
410
|
+
"args": ["context7-mcp"]
|
|
411
|
+
},
|
|
412
|
+
"docs": {
|
|
413
|
+
"url": "https://mcp.example.com"
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### Stdio transport
|
|
421
|
+
|
|
422
|
+
Launches a local child process and communicates over stdin/stdout.
|
|
423
|
+
|
|
424
|
+
| Field | Description |
|
|
425
|
+
| -------------------------- | --------------------------------- |
|
|
426
|
+
| `command` | Executable to spawn (required) |
|
|
427
|
+
| `args` | Array of command-line arguments |
|
|
428
|
+
| `env` | Extra environment variables |
|
|
429
|
+
| `cwd` / `workingDirectory` | Working directory for the process |
|
|
430
|
+
|
|
431
|
+
### SSE / HTTP transport
|
|
432
|
+
|
|
433
|
+
Connects to a remote MCP server over HTTP Server-Sent Events.
|
|
434
|
+
|
|
435
|
+
| Field | Description |
|
|
436
|
+
| --------------------- | ---------------------------------------------------------------- |
|
|
437
|
+
| `url` | HTTP or HTTPS URL of the remote server (required) |
|
|
438
|
+
| `headers` | Optional key-value map of HTTP headers (for example auth tokens) |
|
|
439
|
+
| `connectionTimeoutMs` | Per-server connection timeout in ms (optional) |
|
|
440
|
+
|
|
441
|
+
Example:
|
|
442
|
+
|
|
443
|
+
```json
|
|
444
|
+
{
|
|
445
|
+
"mcp": {
|
|
446
|
+
"servers": {
|
|
447
|
+
"remote-tools": {
|
|
448
|
+
"url": "https://mcp.example.com",
|
|
449
|
+
"headers": {
|
|
450
|
+
"Authorization": "Bearer <token>"
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
Sensitive values in `url` (userinfo) and `headers` are redacted in logs and
|
|
459
|
+
status output.
|
|
460
|
+
|
|
461
|
+
### Streamable HTTP transport
|
|
462
|
+
|
|
463
|
+
`streamable-http` is an additional transport option alongside `sse` and `stdio`. It uses HTTP streaming for bidirectional communication with remote MCP servers.
|
|
464
|
+
|
|
465
|
+
| Field | Description |
|
|
466
|
+
| --------------------- | -------------------------------------------------------------------------------------- |
|
|
467
|
+
| `url` | HTTP or HTTPS URL of the remote server (required) |
|
|
468
|
+
| `transport` | Set to `"streamable-http"` to select this transport; when omitted, Durar uses `sse` |
|
|
469
|
+
| `headers` | Optional key-value map of HTTP headers (for example auth tokens) |
|
|
470
|
+
| `connectionTimeoutMs` | Per-server connection timeout in ms (optional) |
|
|
471
|
+
|
|
472
|
+
Example:
|
|
473
|
+
|
|
474
|
+
```json
|
|
475
|
+
{
|
|
476
|
+
"mcp": {
|
|
477
|
+
"servers": {
|
|
478
|
+
"streaming-tools": {
|
|
479
|
+
"url": "https://mcp.example.com/stream",
|
|
480
|
+
"transport": "streamable-http",
|
|
481
|
+
"connectionTimeoutMs": 10000,
|
|
482
|
+
"headers": {
|
|
483
|
+
"Authorization": "Bearer <token>"
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
These commands manage saved config only. They do not start the channel bridge,
|
|
492
|
+
open a live MCP client session, or prove the target server is reachable.
|
|
493
|
+
|
|
494
|
+
## Current limits
|
|
495
|
+
|
|
496
|
+
This page documents the bridge as shipped today.
|
|
497
|
+
|
|
498
|
+
Current limits:
|
|
499
|
+
|
|
500
|
+
- conversation discovery depends on existing Gateway session route metadata
|
|
501
|
+
- no generic push protocol beyond the Claude-specific adapter
|
|
502
|
+
- no message edit or react tools yet
|
|
503
|
+
- HTTP/SSE/streamable-http transport connects to a single remote server; no multiplexed upstream yet
|
|
504
|
+
- `permissions_list_open` only includes approvals observed while the bridge is
|
|
505
|
+
connected
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "CLI reference for `Durar memory` (status/index/search/promote)"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want to index or search semantic memory
|
|
5
|
+
- You’re debugging memory availability or indexing
|
|
6
|
+
- You want to promote recalled short-term memory into `MEMORY.md`
|
|
7
|
+
title: "memory"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# `Durar memory`
|
|
11
|
+
|
|
12
|
+
Manage semantic memory indexing and search.
|
|
13
|
+
Provided by the active memory plugin (default: `memory-core`; set `plugins.slots.memory = "none"` to disable).
|
|
14
|
+
|
|
15
|
+
Related:
|
|
16
|
+
|
|
17
|
+
- Memory concept: [Memory](/concepts/memory)
|
|
18
|
+
- Plugins: [Plugins](/tools/plugin)
|
|
19
|
+
|
|
20
|
+
## Examples
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
Durar memory status
|
|
24
|
+
Durar memory status --deep
|
|
25
|
+
Durar memory status --fix
|
|
26
|
+
Durar memory index --force
|
|
27
|
+
Durar memory search "meeting notes"
|
|
28
|
+
Durar memory search --query "deployment" --max-results 20
|
|
29
|
+
Durar memory promote --limit 10 --min-score 0.75
|
|
30
|
+
Durar memory promote --apply
|
|
31
|
+
Durar memory promote --json --min-recall-count 0 --min-unique-queries 0
|
|
32
|
+
Durar memory status --json
|
|
33
|
+
Durar memory status --deep --index
|
|
34
|
+
Durar memory status --deep --index --verbose
|
|
35
|
+
Durar memory status --agent main
|
|
36
|
+
Durar memory index --agent main --verbose
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Options
|
|
40
|
+
|
|
41
|
+
`memory status` and `memory index`:
|
|
42
|
+
|
|
43
|
+
- `--agent <id>`: scope to a single agent. Without it, these commands run for each configured agent; if no agent list is configured, they fall back to the default agent.
|
|
44
|
+
- `--verbose`: emit detailed logs during probes and indexing.
|
|
45
|
+
|
|
46
|
+
`memory status`:
|
|
47
|
+
|
|
48
|
+
- `--deep`: probe vector + embedding availability.
|
|
49
|
+
- `--index`: run a reindex if the store is dirty (implies `--deep`).
|
|
50
|
+
- `--fix`: repair stale recall locks and normalize promotion metadata.
|
|
51
|
+
- `--json`: print JSON output.
|
|
52
|
+
|
|
53
|
+
`memory index`:
|
|
54
|
+
|
|
55
|
+
- `--force`: force a full reindex.
|
|
56
|
+
|
|
57
|
+
`memory search`:
|
|
58
|
+
|
|
59
|
+
- Query input: pass either positional `[query]` or `--query <text>`.
|
|
60
|
+
- If both are provided, `--query` wins.
|
|
61
|
+
- If neither is provided, the command exits with an error.
|
|
62
|
+
- `--agent <id>`: scope to a single agent (default: the default agent).
|
|
63
|
+
- `--max-results <n>`: limit the number of results returned.
|
|
64
|
+
- `--min-score <n>`: filter out low-score matches.
|
|
65
|
+
- `--json`: print JSON results.
|
|
66
|
+
|
|
67
|
+
`memory promote`:
|
|
68
|
+
|
|
69
|
+
Preview and apply short-term memory promotions.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
Durar memory promote [--apply] [--limit <n>] [--include-promoted]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
- `--apply` -- write promotions to `MEMORY.md` (default: preview only).
|
|
76
|
+
- `--limit <n>` -- cap the number of candidates shown.
|
|
77
|
+
- `--include-promoted` -- include entries already promoted in previous cycles.
|
|
78
|
+
|
|
79
|
+
Full options:
|
|
80
|
+
|
|
81
|
+
- Ranks short-term candidates from `memory/YYYY-MM-DD.md` using weighted recall signals (`frequency`, `relevance`, `query diversity`, `recency`).
|
|
82
|
+
- Uses recall events captured when `memory_search` returns daily-memory hits.
|
|
83
|
+
- Optional auto-dreaming mode: when `plugins.entries.memory-core.config.dreaming.mode` is `core`, `deep`, or `rem`, `memory-core` auto-manages a cron job that triggers promotion in the background (no manual `Durar cron add` required).
|
|
84
|
+
- `--agent <id>`: scope to a single agent (default: the default agent).
|
|
85
|
+
- `--limit <n>`: max candidates to return/apply.
|
|
86
|
+
- `--min-score <n>`: minimum weighted promotion score.
|
|
87
|
+
- `--min-recall-count <n>`: minimum recall count required for a candidate.
|
|
88
|
+
- `--min-unique-queries <n>`: minimum distinct query count required for a candidate.
|
|
89
|
+
- `--apply`: append selected candidates into `MEMORY.md` and mark them promoted.
|
|
90
|
+
- `--include-promoted`: include already promoted candidates in output.
|
|
91
|
+
- `--json`: print JSON output.
|
|
92
|
+
|
|
93
|
+
## Dreaming (experimental)
|
|
94
|
+
|
|
95
|
+
Dreaming is the overnight reflection pass for memory. It is called "dreaming" because the system revisits what was recalled during the day and decides what is worth keeping long-term.
|
|
96
|
+
|
|
97
|
+
- It is opt-in and disabled by default.
|
|
98
|
+
- Enable it with `plugins.entries.memory-core.config.dreaming.mode`.
|
|
99
|
+
- You can toggle modes from chat with `/dreaming off|core|rem|deep`. Run `/dreaming` (or `/dreaming options`) to see what each mode does.
|
|
100
|
+
- When enabled, `memory-core` automatically creates and maintains a managed cron job.
|
|
101
|
+
- Set `dreaming.limit` to `0` if you want dreaming enabled but automatic promotion effectively paused.
|
|
102
|
+
- Ranking uses weighted signals: recall frequency, retrieval relevance, query diversity, temporal recency, cross-day consolidation, and derived concept richness.
|
|
103
|
+
- Promotion into `MEMORY.md` only happens when quality thresholds are met, so long-term memory stays high signal instead of collecting one-off details.
|
|
104
|
+
- Automatic runs fan out across configured memory workspaces, so one agent's sessions consolidate into that agent's memory workspace instead of only the default session.
|
|
105
|
+
- Promotion re-reads the live daily note before writing to `MEMORY.md`, so edited or deleted short-term snippets do not get promoted from stale recall-store snapshots.
|
|
106
|
+
- Scheduled and manual `memory promote` runs share the same dreaming defaults unless you pass CLI threshold overrides.
|
|
107
|
+
|
|
108
|
+
Default mode presets:
|
|
109
|
+
|
|
110
|
+
- `core`: daily at `0 3 * * *`, `minScore=0.75`, `minRecallCount=3`, `minUniqueQueries=2`, `recencyHalfLifeDays=14`
|
|
111
|
+
- `deep`: every 12 hours (`0 */12 * * *`), `minScore=0.8`, `minRecallCount=3`, `minUniqueQueries=3`, `recencyHalfLifeDays=14`
|
|
112
|
+
- `rem`: every 6 hours (`0 */6 * * *`), `minScore=0.85`, `minRecallCount=4`, `minUniqueQueries=3`, `recencyHalfLifeDays=14`
|
|
113
|
+
|
|
114
|
+
Example:
|
|
115
|
+
|
|
116
|
+
```json
|
|
117
|
+
{
|
|
118
|
+
"plugins": {
|
|
119
|
+
"entries": {
|
|
120
|
+
"memory-core": {
|
|
121
|
+
"config": {
|
|
122
|
+
"dreaming": {
|
|
123
|
+
"mode": "core"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Notes:
|
|
133
|
+
|
|
134
|
+
- `memory index --verbose` prints per-phase details (provider, model, sources, batch activity).
|
|
135
|
+
- `memory status` includes any extra paths configured via `memorySearch.extraPaths`.
|
|
136
|
+
- If effectively active memory remote API key fields are configured as SecretRefs, the command resolves those values from the active gateway snapshot. If gateway is unavailable, the command fails fast.
|
|
137
|
+
- Gateway version skew note: this command path requires a gateway that supports `secrets.resolve`; older gateways return an unknown-method error.
|
|
138
|
+
- Dreaming cadence defaults to each mode's preset schedule. Override cadence with `plugins.entries.memory-core.config.dreaming.cron` as a cron expression (for example `0 3 * * *`) and fine-tune with `timezone`, `limit`, `minScore`, `minRecallCount`, `minUniqueQueries`, `recencyHalfLifeDays`, and `maxAgeDays`.
|
|
139
|
+
- Set `plugins.entries.memory-core.config.dreaming.verboseLogging` to `true` to emit per-run candidate and apply details into the normal gateway logs while tuning the feature.
|