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,197 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How Durar builds prompt context and reports token usage + costs"
|
|
3
|
+
read_when:
|
|
4
|
+
- Explaining token usage, costs, or context windows
|
|
5
|
+
- Debugging context growth or compaction behavior
|
|
6
|
+
title: "Token Use and Costs"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Token use & costs
|
|
10
|
+
|
|
11
|
+
Durar tracks **tokens**, not characters. Tokens are model-specific, but most
|
|
12
|
+
OpenAI-style models average ~4 characters per token for English text.
|
|
13
|
+
|
|
14
|
+
## How the system prompt is built
|
|
15
|
+
|
|
16
|
+
Durar assembles its own system prompt on every run. It includes:
|
|
17
|
+
|
|
18
|
+
- Tool list + short descriptions
|
|
19
|
+
- Skills list (only metadata; instructions are loaded on demand with `read`)
|
|
20
|
+
- Self-update instructions
|
|
21
|
+
- Workspace + bootstrap files (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md` when new, plus `MEMORY.md` when present or `memory.md` as a lowercase fallback). Large files are truncated by `agents.defaults.bootstrapMaxChars` (default: 20000), and total bootstrap injection is capped by `agents.defaults.bootstrapTotalMaxChars` (default: 150000). `memory/*.md` files are on-demand via memory tools and are not auto-injected.
|
|
22
|
+
- Time (UTC + user timezone)
|
|
23
|
+
- Reply tags + heartbeat behavior
|
|
24
|
+
- Runtime metadata (host/OS/model/thinking)
|
|
25
|
+
|
|
26
|
+
See the full breakdown in [System Prompt](/concepts/system-prompt).
|
|
27
|
+
|
|
28
|
+
## What counts in the context window
|
|
29
|
+
|
|
30
|
+
Everything the model receives counts toward the context limit:
|
|
31
|
+
|
|
32
|
+
- System prompt (all sections listed above)
|
|
33
|
+
- Conversation history (user + assistant messages)
|
|
34
|
+
- Tool calls and tool results
|
|
35
|
+
- Attachments/transcripts (images, audio, files)
|
|
36
|
+
- Compaction summaries and pruning artifacts
|
|
37
|
+
- Provider wrappers or safety headers (not visible, but still counted)
|
|
38
|
+
|
|
39
|
+
For images, Durar downscales transcript/tool image payloads before provider calls.
|
|
40
|
+
Use `agents.defaults.imageMaxDimensionPx` (default: `1200`) to tune this:
|
|
41
|
+
|
|
42
|
+
- Lower values usually reduce vision-token usage and payload size.
|
|
43
|
+
- Higher values preserve more visual detail for OCR/UI-heavy screenshots.
|
|
44
|
+
|
|
45
|
+
For a practical breakdown (per injected file, tools, skills, and system prompt size), use `/context list` or `/context detail`. See [Context](/concepts/context).
|
|
46
|
+
|
|
47
|
+
## How to see current token usage
|
|
48
|
+
|
|
49
|
+
Use these in chat:
|
|
50
|
+
|
|
51
|
+
- `/status` → **emoji‑rich status card** with the session model, context usage,
|
|
52
|
+
last response input/output tokens, and **estimated cost** (API key only).
|
|
53
|
+
- `/usage off|tokens|full` → appends a **per-response usage footer** to every reply.
|
|
54
|
+
- Persists per session (stored as `responseUsage`).
|
|
55
|
+
- OAuth auth **hides cost** (tokens only).
|
|
56
|
+
- `/usage cost` → shows a local cost summary from Durar session logs.
|
|
57
|
+
|
|
58
|
+
Other surfaces:
|
|
59
|
+
|
|
60
|
+
- **TUI/Web TUI:** `/status` + `/usage` are supported.
|
|
61
|
+
- **CLI:** `Durar status --usage` and `Durar channels list` show
|
|
62
|
+
normalized provider quota windows (`X% left`, not per-response costs).
|
|
63
|
+
Current usage-window providers: Anthropic, GitHub Copilot, Gemini CLI,
|
|
64
|
+
OpenAI Codex, MiniMax, Xiaomi, and z.ai.
|
|
65
|
+
|
|
66
|
+
Usage surfaces normalize common provider-native field aliases before display.
|
|
67
|
+
For OpenAI-family Responses traffic, that includes both `input_tokens` /
|
|
68
|
+
`output_tokens` and `prompt_tokens` / `completion_tokens`, so transport-specific
|
|
69
|
+
field names do not change `/status`, `/usage`, or session summaries.
|
|
70
|
+
Gemini CLI JSON usage is normalized too: reply text comes from `response`, and
|
|
71
|
+
`stats.cached` maps to `cacheRead` with `stats.input_tokens - stats.cached`
|
|
72
|
+
used when the CLI omits an explicit `stats.input` field.
|
|
73
|
+
For native OpenAI-family Responses traffic, WebSocket/SSE usage aliases are
|
|
74
|
+
normalized the same way, and totals fall back to normalized input + output when
|
|
75
|
+
`total_tokens` is missing or `0`.
|
|
76
|
+
When the current session snapshot is sparse, `/status` and `session_status` can
|
|
77
|
+
also recover token/cache counters and the active runtime model label from the
|
|
78
|
+
most recent transcript usage log. Existing nonzero live values still take
|
|
79
|
+
precedence over transcript fallback values, and larger prompt-oriented
|
|
80
|
+
transcript totals can win when stored totals are missing or smaller.
|
|
81
|
+
Usage auth for provider quota windows comes from provider-specific hooks when
|
|
82
|
+
available; otherwise Durar falls back to matching OAuth/API-key credentials
|
|
83
|
+
from auth profiles, env, or config.
|
|
84
|
+
|
|
85
|
+
## Cost estimation (when shown)
|
|
86
|
+
|
|
87
|
+
Costs are estimated from your model pricing config:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
models.providers.<provider>.models[].cost
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
These are **USD per 1M tokens** for `input`, `output`, `cacheRead`, and
|
|
94
|
+
`cacheWrite`. If pricing is missing, Durar shows tokens only. OAuth tokens
|
|
95
|
+
never show dollar cost.
|
|
96
|
+
|
|
97
|
+
## Cache TTL and pruning impact
|
|
98
|
+
|
|
99
|
+
Provider prompt caching only applies within the cache TTL window. Durar can
|
|
100
|
+
optionally run **cache-ttl pruning**: it prunes the session once the cache TTL
|
|
101
|
+
has expired, then resets the cache window so subsequent requests can re-use the
|
|
102
|
+
freshly cached context instead of re-caching the full history. This keeps cache
|
|
103
|
+
write costs lower when a session goes idle past the TTL.
|
|
104
|
+
|
|
105
|
+
Configure it in [Gateway configuration](/gateway/configuration) and see the
|
|
106
|
+
behavior details in [Session pruning](/concepts/session-pruning).
|
|
107
|
+
|
|
108
|
+
Heartbeat can keep the cache **warm** across idle gaps. If your model cache TTL
|
|
109
|
+
is `1h`, setting the heartbeat interval just under that (e.g., `55m`) can avoid
|
|
110
|
+
re-caching the full prompt, reducing cache write costs.
|
|
111
|
+
|
|
112
|
+
In multi-agent setups, you can keep one shared model config and tune cache behavior
|
|
113
|
+
per agent with `agents.list[].params.cacheRetention`.
|
|
114
|
+
|
|
115
|
+
For a full knob-by-knob guide, see [Prompt Caching](/reference/prompt-caching).
|
|
116
|
+
|
|
117
|
+
For Anthropic API pricing, cache reads are significantly cheaper than input
|
|
118
|
+
tokens, while cache writes are billed at a higher multiplier. See Anthropic’s
|
|
119
|
+
prompt caching pricing for the latest rates and TTL multipliers:
|
|
120
|
+
[https://docs.anthropic.com/docs/build-with-claude/prompt-caching](https://docs.anthropic.com/docs/build-with-claude/prompt-caching)
|
|
121
|
+
|
|
122
|
+
### Example: keep 1h cache warm with heartbeat
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
agents:
|
|
126
|
+
defaults:
|
|
127
|
+
model:
|
|
128
|
+
primary: "anthropic/claude-opus-4-6"
|
|
129
|
+
models:
|
|
130
|
+
"anthropic/claude-opus-4-6":
|
|
131
|
+
params:
|
|
132
|
+
cacheRetention: "long"
|
|
133
|
+
heartbeat:
|
|
134
|
+
every: "55m"
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Example: mixed traffic with per-agent cache strategy
|
|
138
|
+
|
|
139
|
+
```yaml
|
|
140
|
+
agents:
|
|
141
|
+
defaults:
|
|
142
|
+
model:
|
|
143
|
+
primary: "anthropic/claude-opus-4-6"
|
|
144
|
+
models:
|
|
145
|
+
"anthropic/claude-opus-4-6":
|
|
146
|
+
params:
|
|
147
|
+
cacheRetention: "long" # default baseline for most agents
|
|
148
|
+
list:
|
|
149
|
+
- id: "research"
|
|
150
|
+
default: true
|
|
151
|
+
heartbeat:
|
|
152
|
+
every: "55m" # keep long cache warm for deep sessions
|
|
153
|
+
- id: "alerts"
|
|
154
|
+
params:
|
|
155
|
+
cacheRetention: "none" # avoid cache writes for bursty notifications
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`agents.list[].params` merges on top of the selected model's `params`, so you can
|
|
159
|
+
override only `cacheRetention` and inherit other model defaults unchanged.
|
|
160
|
+
|
|
161
|
+
### Example: enable Anthropic 1M context beta header
|
|
162
|
+
|
|
163
|
+
Anthropic's 1M context window is currently beta-gated. Durar can inject the
|
|
164
|
+
required `anthropic-beta` value when you enable `context1m` on supported Opus
|
|
165
|
+
or Sonnet models.
|
|
166
|
+
|
|
167
|
+
```yaml
|
|
168
|
+
agents:
|
|
169
|
+
defaults:
|
|
170
|
+
models:
|
|
171
|
+
"anthropic/claude-opus-4-6":
|
|
172
|
+
params:
|
|
173
|
+
context1m: true
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
This maps to Anthropic's `context-1m-2025-08-07` beta header.
|
|
177
|
+
|
|
178
|
+
This only applies when `context1m: true` is set on that model entry.
|
|
179
|
+
|
|
180
|
+
Requirement: the credential must be eligible for long-context usage (API key
|
|
181
|
+
billing, or Durar's Claude-login path with Extra Usage enabled). If not,
|
|
182
|
+
Anthropic responds
|
|
183
|
+
with `HTTP 429: rate_limit_error: Extra usage is required for long context requests`.
|
|
184
|
+
|
|
185
|
+
If you authenticate Anthropic with OAuth/subscription tokens (`sk-ant-oat-*`),
|
|
186
|
+
Durar skips the `context-1m-*` beta header because Anthropic currently
|
|
187
|
+
rejects that combination with HTTP 401.
|
|
188
|
+
|
|
189
|
+
## Tips for reducing token pressure
|
|
190
|
+
|
|
191
|
+
- Use `/compact` to summarize long sessions.
|
|
192
|
+
- Trim large tool outputs in your workflows.
|
|
193
|
+
- Lower `agents.defaults.imageMaxDimensionPx` for screenshot-heavy sessions.
|
|
194
|
+
- Keep skill descriptions short (skill list is injected into the prompt).
|
|
195
|
+
- Prefer smaller models for verbose, exploratory work.
|
|
196
|
+
|
|
197
|
+
See [Skills](/tools/skills) for the exact skill list overhead formula.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Reference: provider-specific transcript sanitization and repair rules"
|
|
3
|
+
read_when:
|
|
4
|
+
- You are debugging provider request rejections tied to transcript shape
|
|
5
|
+
- You are changing transcript sanitization or tool-call repair logic
|
|
6
|
+
- You are investigating tool-call id mismatches across providers
|
|
7
|
+
title: "Transcript Hygiene"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Transcript Hygiene (Provider Fixups)
|
|
11
|
+
|
|
12
|
+
This document describes **provider-specific fixes** applied to transcripts before a run
|
|
13
|
+
(building model context). These are **in-memory** adjustments used to satisfy strict
|
|
14
|
+
provider requirements. These hygiene steps do **not** rewrite the stored JSONL transcript
|
|
15
|
+
on disk; however, a separate session-file repair pass may rewrite malformed JSONL files
|
|
16
|
+
by dropping invalid lines before the session is loaded. When a repair occurs, the original
|
|
17
|
+
file is backed up alongside the session file.
|
|
18
|
+
|
|
19
|
+
Scope includes:
|
|
20
|
+
|
|
21
|
+
- Tool call id sanitization
|
|
22
|
+
- Tool call input validation
|
|
23
|
+
- Tool result pairing repair
|
|
24
|
+
- Turn validation / ordering
|
|
25
|
+
- Thought signature cleanup
|
|
26
|
+
- Image payload sanitization
|
|
27
|
+
- User-input provenance tagging (for inter-session routed prompts)
|
|
28
|
+
|
|
29
|
+
If you need transcript storage details, see:
|
|
30
|
+
|
|
31
|
+
- [/reference/session-management-compaction](/reference/session-management-compaction)
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Where this runs
|
|
36
|
+
|
|
37
|
+
All transcript hygiene is centralized in the embedded runner:
|
|
38
|
+
|
|
39
|
+
- Policy selection: `src/agents/transcript-policy.ts`
|
|
40
|
+
- Sanitization/repair application: `sanitizeSessionHistory` in `src/agents/pi-embedded-runner/google.ts`
|
|
41
|
+
|
|
42
|
+
The policy uses `provider`, `modelApi`, and `modelId` to decide what to apply.
|
|
43
|
+
|
|
44
|
+
Separate from transcript hygiene, session files are repaired (if needed) before load:
|
|
45
|
+
|
|
46
|
+
- `repairSessionFileIfNeeded` in `src/agents/session-file-repair.ts`
|
|
47
|
+
- Called from `run/attempt.ts` and `compact.ts` (embedded runner)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Global rule: image sanitization
|
|
52
|
+
|
|
53
|
+
Image payloads are always sanitized to prevent provider-side rejection due to size
|
|
54
|
+
limits (downscale/recompress oversized base64 images).
|
|
55
|
+
|
|
56
|
+
This also helps control image-driven token pressure for vision-capable models.
|
|
57
|
+
Lower max dimensions generally reduce token usage; higher dimensions preserve detail.
|
|
58
|
+
|
|
59
|
+
Implementation:
|
|
60
|
+
|
|
61
|
+
- `sanitizeSessionMessagesImages` in `src/agents/pi-embedded-helpers/images.ts`
|
|
62
|
+
- `sanitizeContentBlocksImages` in `src/agents/tool-images.ts`
|
|
63
|
+
- Max image side is configurable via `agents.defaults.imageMaxDimensionPx` (default: `1200`).
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Global rule: malformed tool calls
|
|
68
|
+
|
|
69
|
+
Assistant tool-call blocks that are missing both `input` and `arguments` are dropped
|
|
70
|
+
before model context is built. This prevents provider rejections from partially
|
|
71
|
+
persisted tool calls (for example, after a rate limit failure).
|
|
72
|
+
|
|
73
|
+
Implementation:
|
|
74
|
+
|
|
75
|
+
- `sanitizeToolCallInputs` in `src/agents/session-transcript-repair.ts`
|
|
76
|
+
- Applied in `sanitizeSessionHistory` in `src/agents/pi-embedded-runner/google.ts`
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Global rule: inter-session input provenance
|
|
81
|
+
|
|
82
|
+
When an agent sends a prompt into another session via `sessions_send` (including
|
|
83
|
+
agent-to-agent reply/announce steps), Durar persists the created user turn with:
|
|
84
|
+
|
|
85
|
+
- `message.provenance.kind = "inter_session"`
|
|
86
|
+
|
|
87
|
+
This metadata is written at transcript append time and does not change role
|
|
88
|
+
(`role: "user"` remains for provider compatibility). Transcript readers can use
|
|
89
|
+
this to avoid treating routed internal prompts as end-user-authored instructions.
|
|
90
|
+
|
|
91
|
+
During context rebuild, Durar also prepends a short `[Inter-session message]`
|
|
92
|
+
marker to those user turns in-memory so the model can distinguish them from
|
|
93
|
+
external end-user instructions.
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Provider matrix (current behavior)
|
|
98
|
+
|
|
99
|
+
**OpenAI / OpenAI Codex**
|
|
100
|
+
|
|
101
|
+
- Image sanitization only.
|
|
102
|
+
- Drop orphaned reasoning signatures (standalone reasoning items without a following content block) for OpenAI Responses/Codex transcripts.
|
|
103
|
+
- No tool call id sanitization.
|
|
104
|
+
- No tool result pairing repair.
|
|
105
|
+
- No turn validation or reordering.
|
|
106
|
+
- No synthetic tool results.
|
|
107
|
+
- No thought signature stripping.
|
|
108
|
+
|
|
109
|
+
**Google (Generative AI / Gemini CLI / Antigravity)**
|
|
110
|
+
|
|
111
|
+
- Tool call id sanitization: strict alphanumeric.
|
|
112
|
+
- Tool result pairing repair and synthetic tool results.
|
|
113
|
+
- Turn validation (Gemini-style turn alternation).
|
|
114
|
+
- Google turn ordering fixup (prepend a tiny user bootstrap if history starts with assistant).
|
|
115
|
+
- Antigravity Claude: normalize thinking signatures; drop unsigned thinking blocks.
|
|
116
|
+
|
|
117
|
+
**Anthropic / Minimax (Anthropic-compatible)**
|
|
118
|
+
|
|
119
|
+
- Tool result pairing repair and synthetic tool results.
|
|
120
|
+
- Turn validation (merge consecutive user turns to satisfy strict alternation).
|
|
121
|
+
|
|
122
|
+
**Mistral (including model-id based detection)**
|
|
123
|
+
|
|
124
|
+
- Tool call id sanitization: strict9 (alphanumeric length 9).
|
|
125
|
+
|
|
126
|
+
**OpenRouter Gemini**
|
|
127
|
+
|
|
128
|
+
- Thought signature cleanup: strip non-base64 `thought_signature` values (keep base64).
|
|
129
|
+
|
|
130
|
+
**Everything else**
|
|
131
|
+
|
|
132
|
+
- Image sanitization only.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Historical behavior (pre-2026.1.22)
|
|
137
|
+
|
|
138
|
+
Before the 2026.1.22 release, Durar applied multiple layers of transcript hygiene:
|
|
139
|
+
|
|
140
|
+
- A **transcript-sanitize extension** ran on every context build and could:
|
|
141
|
+
- Repair tool use/result pairing.
|
|
142
|
+
- Sanitize tool call ids (including a non-strict mode that preserved `_`/`-`).
|
|
143
|
+
- The runner also performed provider-specific sanitization, which duplicated work.
|
|
144
|
+
- Additional mutations occurred outside the provider policy, including:
|
|
145
|
+
- Stripping `<final>` tags from assistant text before persistence.
|
|
146
|
+
- Dropping empty assistant error turns.
|
|
147
|
+
- Trimming assistant content after tool calls.
|
|
148
|
+
|
|
149
|
+
This complexity caused cross-provider regressions (notably `openai-responses`
|
|
150
|
+
`call_id|fc_id` pairing). The 2026.1.22 cleanup removed the extension, centralized
|
|
151
|
+
logic in the runner, and made OpenAI **no-touch** beyond image sanitization.
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Full reference for CLI onboarding: every step, flag, and config field"
|
|
3
|
+
read_when:
|
|
4
|
+
- Looking up a specific onboarding step or flag
|
|
5
|
+
- Automating onboarding with non-interactive mode
|
|
6
|
+
- Debugging onboarding behavior
|
|
7
|
+
title: "Onboarding Reference"
|
|
8
|
+
sidebarTitle: "Onboarding Reference"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Onboarding Reference
|
|
12
|
+
|
|
13
|
+
This is the full reference for `Durar onboard`.
|
|
14
|
+
For a high-level overview, see [Onboarding (CLI)](/start/wizard).
|
|
15
|
+
|
|
16
|
+
## Flow details (local mode)
|
|
17
|
+
|
|
18
|
+
<Steps>
|
|
19
|
+
<Step title="Existing config detection">
|
|
20
|
+
- If `~/.Durar/Durar.json` exists, choose **Keep / Modify / Reset**.
|
|
21
|
+
- Re-running onboarding does **not** wipe anything unless you explicitly choose **Reset**
|
|
22
|
+
(or pass `--reset`).
|
|
23
|
+
- CLI `--reset` defaults to `config+creds+sessions`; use `--reset-scope full`
|
|
24
|
+
to also remove workspace.
|
|
25
|
+
- If the config is invalid or contains legacy keys, the wizard stops and asks
|
|
26
|
+
you to run `Durar doctor` before continuing.
|
|
27
|
+
- Reset uses `trash` (never `rm`) and offers scopes:
|
|
28
|
+
- Config only
|
|
29
|
+
- Config + credentials + sessions
|
|
30
|
+
- Full reset (also removes workspace)
|
|
31
|
+
</Step>
|
|
32
|
+
<Step title="Model/Auth">
|
|
33
|
+
- **Anthropic API key**: uses `ANTHROPIC_API_KEY` if present or prompts for a key, then saves it for daemon use.
|
|
34
|
+
- **Anthropic Claude CLI**: preferred Anthropic assistant choice in onboarding/configure. On macOS onboarding checks Keychain item "Claude Code-credentials" (choose "Always Allow" so launchd starts don't block); on Linux/Windows it reuses `~/.claude/.credentials.json` if present and switches model selection to a canonical `claude-cli/claude-*` ref.
|
|
35
|
+
- **Anthropic setup-token (legacy/manual)**: available again in onboarding/configure, but Anthropic told Durar users that the Durar Claude-login path counts as third-party harness usage and requires **Extra Usage** on the Claude account.
|
|
36
|
+
- **OpenAI Code (Codex) subscription (Codex CLI)**: if `~/.codex/auth.json` exists, onboarding can reuse it. Reused Codex CLI credentials stay managed by Codex CLI; on expiry Durar re-reads that source first and, when the provider can refresh it, writes the refreshed credential back to Codex storage instead of taking ownership itself.
|
|
37
|
+
- **OpenAI Code (Codex) subscription (OAuth)**: browser flow; paste the `code#state`.
|
|
38
|
+
- Sets `agents.defaults.model` to `openai-codex/gpt-5.4` when model is unset or `openai/*`.
|
|
39
|
+
- **OpenAI API key**: uses `OPENAI_API_KEY` if present or prompts for a key, then stores it in auth profiles.
|
|
40
|
+
- Sets `agents.defaults.model` to `openai/gpt-5.4` when model is unset, `openai/*`, or `openai-codex/*`.
|
|
41
|
+
- **xAI (Grok) API key**: prompts for `XAI_API_KEY` and configures xAI as a model provider.
|
|
42
|
+
- **OpenCode**: prompts for `OPENCODE_API_KEY` (or `OPENCODE_ZEN_API_KEY`, get it at https://opencode.ai/auth) and lets you pick the Zen or Go catalog.
|
|
43
|
+
- **Ollama**: prompts for the Ollama base URL, offers **Cloud + Local** or **Local** mode, discovers available models, and auto-pulls the selected local model when needed.
|
|
44
|
+
- More detail: [Ollama](/providers/ollama)
|
|
45
|
+
- **API key**: stores the key for you.
|
|
46
|
+
- **Vercel AI Gateway (multi-model proxy)**: prompts for `AI_GATEWAY_API_KEY`.
|
|
47
|
+
- More detail: [Vercel AI Gateway](/providers/vercel-ai-gateway)
|
|
48
|
+
- **Cloudflare AI Gateway**: prompts for Account ID, Gateway ID, and `CLOUDFLARE_AI_GATEWAY_API_KEY`.
|
|
49
|
+
- More detail: [Cloudflare AI Gateway](/providers/cloudflare-ai-gateway)
|
|
50
|
+
- **MiniMax**: config is auto-written; hosted default is `MiniMax-M2.7`.
|
|
51
|
+
API-key setup uses `minimax/...`, and OAuth setup uses
|
|
52
|
+
`minimax-portal/...`.
|
|
53
|
+
- More detail: [MiniMax](/providers/minimax)
|
|
54
|
+
- **StepFun**: config is auto-written for StepFun standard or Step Plan on China or global endpoints.
|
|
55
|
+
- Standard currently includes `step-3.5-flash`, and Step Plan also includes `step-3.5-flash-2603`.
|
|
56
|
+
- More detail: [StepFun](/providers/stepfun)
|
|
57
|
+
- **Synthetic (Anthropic-compatible)**: prompts for `SYNTHETIC_API_KEY`.
|
|
58
|
+
- More detail: [Synthetic](/providers/synthetic)
|
|
59
|
+
- **Moonshot (Kimi K2)**: config is auto-written.
|
|
60
|
+
- **Kimi Coding**: config is auto-written.
|
|
61
|
+
- More detail: [Moonshot AI (Kimi + Kimi Coding)](/providers/moonshot)
|
|
62
|
+
- **Skip**: no auth configured yet.
|
|
63
|
+
- Pick a default model from detected options (or enter provider/model manually). For best quality and lower prompt-injection risk, choose the strongest latest-generation model available in your provider stack.
|
|
64
|
+
- Onboarding runs a model check and warns if the configured model is unknown or missing auth.
|
|
65
|
+
- API key storage mode defaults to plaintext auth-profile values. Use `--secret-input-mode ref` to store env-backed refs instead (for example `keyRef: { source: "env", provider: "default", id: "OPENAI_API_KEY" }`).
|
|
66
|
+
- Auth profiles live in `~/.Durar/agents/<agentId>/agent/auth-profiles.json` (API keys + OAuth). `~/.Durar/credentials/oauth.json` is legacy import-only.
|
|
67
|
+
- More detail: [/concepts/oauth](/concepts/oauth)
|
|
68
|
+
<Note>
|
|
69
|
+
Headless/server tip: complete OAuth on a machine with a browser, then copy
|
|
70
|
+
that agent's `auth-profiles.json` (for example
|
|
71
|
+
`~/.Durar/agents/<agentId>/agent/auth-profiles.json`, or the matching
|
|
72
|
+
`$Durar_STATE_DIR/...` path) to the gateway host. `credentials/oauth.json`
|
|
73
|
+
is only a legacy import source.
|
|
74
|
+
</Note>
|
|
75
|
+
</Step>
|
|
76
|
+
<Step title="Workspace">
|
|
77
|
+
- Default `~/.Durar/workspace` (configurable).
|
|
78
|
+
- Seeds the workspace files needed for the agent bootstrap ritual.
|
|
79
|
+
- Full workspace layout + backup guide: [Agent workspace](/concepts/agent-workspace)
|
|
80
|
+
</Step>
|
|
81
|
+
<Step title="Gateway">
|
|
82
|
+
- Port, bind, auth mode, tailscale exposure.
|
|
83
|
+
- Auth recommendation: keep **Token** even for loopback so local WS clients must authenticate.
|
|
84
|
+
- In token mode, interactive setup offers:
|
|
85
|
+
- **Generate/store plaintext token** (default)
|
|
86
|
+
- **Use SecretRef** (opt-in)
|
|
87
|
+
- Quickstart reuses existing `gateway.auth.token` SecretRefs across `env`, `file`, and `exec` providers for onboarding probe/dashboard bootstrap.
|
|
88
|
+
- If that SecretRef is configured but cannot be resolved, onboarding fails early with a clear fix message instead of silently degrading runtime auth.
|
|
89
|
+
- In password mode, interactive setup also supports plaintext or SecretRef storage.
|
|
90
|
+
- Non-interactive token SecretRef path: `--gateway-token-ref-env <ENV_VAR>`.
|
|
91
|
+
- Requires a non-empty env var in the onboarding process environment.
|
|
92
|
+
- Cannot be combined with `--gateway-token`.
|
|
93
|
+
- Disable auth only if you fully trust every local process.
|
|
94
|
+
- Non‑loopback binds still require auth.
|
|
95
|
+
</Step>
|
|
96
|
+
<Step title="Channels">
|
|
97
|
+
- [WhatsApp](/channels/whatsapp): optional QR login.
|
|
98
|
+
- [Telegram](/channels/telegram): bot token.
|
|
99
|
+
- [Discord](/channels/discord): bot token.
|
|
100
|
+
- [Google Chat](/channels/googlechat): service account JSON + webhook audience.
|
|
101
|
+
- [Mattermost](/channels/mattermost) (plugin): bot token + base URL.
|
|
102
|
+
- [Signal](/channels/signal): optional `signal-cli` install + account config.
|
|
103
|
+
- [BlueBubbles](/channels/bluebubbles): **recommended for iMessage**; server URL + password + webhook.
|
|
104
|
+
- [iMessage](/channels/imessage): legacy `imsg` CLI path + DB access.
|
|
105
|
+
- DM security: default is pairing. First DM sends a code; approve via `Durar pairing approve <channel> <code>` or use allowlists.
|
|
106
|
+
</Step>
|
|
107
|
+
<Step title="Web search">
|
|
108
|
+
- Pick a supported provider such as Brave, DuckDuckGo, Exa, Firecrawl, Gemini, Grok, Kimi, MiniMax Search, Ollama Web Search, Perplexity, SearXNG, or Tavily (or skip).
|
|
109
|
+
- API-backed providers can use env vars or existing config for quick setup; key-free providers use their provider-specific prerequisites instead.
|
|
110
|
+
- Skip with `--skip-search`.
|
|
111
|
+
- Configure later: `Durar configure --section web`.
|
|
112
|
+
</Step>
|
|
113
|
+
<Step title="Daemon install">
|
|
114
|
+
- macOS: LaunchAgent
|
|
115
|
+
- Requires a logged-in user session; for headless, use a custom LaunchDaemon (not shipped).
|
|
116
|
+
- Linux (and Windows via WSL2): systemd user unit
|
|
117
|
+
- Onboarding attempts to enable lingering via `loginctl enable-linger <user>` so the Gateway stays up after logout.
|
|
118
|
+
- May prompt for sudo (writes `/var/lib/systemd/linger`); it tries without sudo first.
|
|
119
|
+
- **Runtime selection:** Node (recommended; required for WhatsApp/Telegram). Bun is **not recommended**.
|
|
120
|
+
- If token auth requires a token and `gateway.auth.token` is SecretRef-managed, daemon install validates it but does not persist resolved plaintext token values into supervisor service environment metadata.
|
|
121
|
+
- If token auth requires a token and the configured token SecretRef is unresolved, daemon install is blocked with actionable guidance.
|
|
122
|
+
- If both `gateway.auth.token` and `gateway.auth.password` are configured and `gateway.auth.mode` is unset, daemon install is blocked until mode is set explicitly.
|
|
123
|
+
</Step>
|
|
124
|
+
<Step title="Health check">
|
|
125
|
+
- Starts the Gateway (if needed) and runs `Durar health`.
|
|
126
|
+
- Tip: `Durar status --deep` adds the live gateway health probe to status output, including channel probes when supported (requires a reachable gateway).
|
|
127
|
+
</Step>
|
|
128
|
+
<Step title="Skills (recommended)">
|
|
129
|
+
- Reads the available skills and checks requirements.
|
|
130
|
+
- Lets you choose a node manager: **npm / pnpm** (bun not recommended).
|
|
131
|
+
- Installs optional dependencies (some use Homebrew on macOS).
|
|
132
|
+
</Step>
|
|
133
|
+
<Step title="Finish">
|
|
134
|
+
- Summary + next steps, including iOS/Android/macOS apps for extra features.
|
|
135
|
+
</Step>
|
|
136
|
+
</Steps>
|
|
137
|
+
|
|
138
|
+
<Note>
|
|
139
|
+
If no GUI is detected, onboarding prints SSH port-forward instructions for the Control UI instead of opening a browser.
|
|
140
|
+
If the Control UI assets are missing, onboarding attempts to build them; fallback is `pnpm ui:build` (auto-installs UI deps).
|
|
141
|
+
</Note>
|
|
142
|
+
|
|
143
|
+
## Non-interactive mode
|
|
144
|
+
|
|
145
|
+
Use `--non-interactive` to automate or script onboarding:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
Durar onboard --non-interactive \
|
|
149
|
+
--mode local \
|
|
150
|
+
--auth-choice apiKey \
|
|
151
|
+
--anthropic-api-key "$ANTHROPIC_API_KEY" \
|
|
152
|
+
--gateway-port 18789 \
|
|
153
|
+
--gateway-bind loopback \
|
|
154
|
+
--install-daemon \
|
|
155
|
+
--daemon-runtime node \
|
|
156
|
+
--skip-skills
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Add `--json` for a machine‑readable summary.
|
|
160
|
+
|
|
161
|
+
Gateway token SecretRef in non-interactive mode:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
export Durar_GATEWAY_TOKEN="your-token"
|
|
165
|
+
Durar onboard --non-interactive \
|
|
166
|
+
--mode local \
|
|
167
|
+
--auth-choice skip \
|
|
168
|
+
--gateway-auth token \
|
|
169
|
+
--gateway-token-ref-env Durar_GATEWAY_TOKEN
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
`--gateway-token` and `--gateway-token-ref-env` are mutually exclusive.
|
|
173
|
+
|
|
174
|
+
<Note>
|
|
175
|
+
`--json` does **not** imply non-interactive mode. Use `--non-interactive` (and `--workspace`) for scripts.
|
|
176
|
+
</Note>
|
|
177
|
+
|
|
178
|
+
Provider-specific command examples live in [CLI Automation](/start/wizard-cli-automation#provider-specific-examples).
|
|
179
|
+
Use this reference page for flag semantics and step ordering.
|
|
180
|
+
|
|
181
|
+
### Add agent (non-interactive)
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
Durar agents add work \
|
|
185
|
+
--workspace ~/.Durar/workspace-work \
|
|
186
|
+
--model openai/gpt-5.4 \
|
|
187
|
+
--bind whatsapp:biz \
|
|
188
|
+
--non-interactive \
|
|
189
|
+
--json
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Gateway wizard RPC
|
|
193
|
+
|
|
194
|
+
The Gateway exposes the onboarding flow over RPC (`wizard.start`, `wizard.next`, `wizard.cancel`, `wizard.status`).
|
|
195
|
+
Clients (macOS app, Control UI) can render steps without re‑implementing onboarding logic.
|
|
196
|
+
|
|
197
|
+
## Signal setup (signal-cli)
|
|
198
|
+
|
|
199
|
+
Onboarding can install `signal-cli` from GitHub releases:
|
|
200
|
+
|
|
201
|
+
- Downloads the appropriate release asset.
|
|
202
|
+
- Stores it under `~/.Durar/tools/signal-cli/<version>/`.
|
|
203
|
+
- Writes `channels.signal.cliPath` to your config.
|
|
204
|
+
|
|
205
|
+
Notes:
|
|
206
|
+
|
|
207
|
+
- JVM builds require **Java 21**.
|
|
208
|
+
- Native builds are used when available.
|
|
209
|
+
- Windows uses WSL2; signal-cli install follows the Linux flow inside WSL.
|
|
210
|
+
|
|
211
|
+
## What the wizard writes
|
|
212
|
+
|
|
213
|
+
Typical fields in `~/.Durar/Durar.json`:
|
|
214
|
+
|
|
215
|
+
- `agents.defaults.workspace`
|
|
216
|
+
- `agents.defaults.model` / `models.providers` (if Minimax chosen)
|
|
217
|
+
- `tools.profile` (local onboarding defaults to `"coding"` when unset; existing explicit values are preserved)
|
|
218
|
+
- `gateway.*` (mode, bind, auth, tailscale)
|
|
219
|
+
- `session.dmScope` (behavior details: [CLI Setup Reference](/start/wizard-cli-reference#outputs-and-internals))
|
|
220
|
+
- `channels.telegram.botToken`, `channels.discord.token`, `channels.matrix.*`, `channels.signal.*`, `channels.imessage.*`
|
|
221
|
+
- Channel allowlists (Slack/Discord/Matrix/Microsoft Teams) when you opt in during the prompts (names resolve to IDs when possible).
|
|
222
|
+
- `skills.install.nodeManager`
|
|
223
|
+
- `setup --node-manager` accepts `npm`, `pnpm`, or `bun`.
|
|
224
|
+
- Manual config can still use `yarn` by setting `skills.install.nodeManager` directly.
|
|
225
|
+
- `wizard.lastRunAt`
|
|
226
|
+
- `wizard.lastRunVersion`
|
|
227
|
+
- `wizard.lastRunCommit`
|
|
228
|
+
- `wizard.lastRunCommand`
|
|
229
|
+
- `wizard.lastRunMode`
|
|
230
|
+
|
|
231
|
+
`Durar agents add` writes `agents.list[]` and optional `bindings`.
|
|
232
|
+
|
|
233
|
+
WhatsApp credentials go under `~/.Durar/credentials/whatsapp/<accountId>/`.
|
|
234
|
+
Sessions are stored under `~/.Durar/agents/<agentId>/sessions/`.
|
|
235
|
+
|
|
236
|
+
Some channels are delivered as plugins. When you pick one during setup, onboarding
|
|
237
|
+
will prompt to install it (npm or a local path) before it can be configured.
|
|
238
|
+
|
|
239
|
+
## Related docs
|
|
240
|
+
|
|
241
|
+
- Onboarding overview: [Onboarding (CLI)](/start/wizard)
|
|
242
|
+
- macOS app onboarding: [Onboarding](/start/onboarding)
|
|
243
|
+
- Config reference: [Gateway configuration](/gateway/configuration)
|
|
244
|
+
- Providers: [WhatsApp](/channels/whatsapp), [Telegram](/channels/telegram), [Discord](/channels/discord), [Google Chat](/channels/googlechat), [Signal](/channels/signal), [BlueBubbles](/channels/bluebubbles) (iMessage), [iMessage](/channels/imessage) (legacy)
|
|
245
|
+
- Skills: [Skills](/tools/skills), [Skills config](/tools/skills-config)
|