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,303 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Hooks: event-driven automation for commands and lifecycle events"
|
|
3
|
+
read_when:
|
|
4
|
+
- You want event-driven automation for /new, /reset, /stop, and agent lifecycle events
|
|
5
|
+
- You want to build, install, or debug hooks
|
|
6
|
+
title: "Hooks"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Hooks
|
|
10
|
+
|
|
11
|
+
Hooks are small scripts that run when something happens inside the Gateway. They are automatically discovered from directories and can be inspected with `Durar hooks`.
|
|
12
|
+
|
|
13
|
+
There are two kinds of hooks in Durar:
|
|
14
|
+
|
|
15
|
+
- **Internal hooks** (this page): run inside the Gateway when agent events fire, like `/new`, `/reset`, `/stop`, or lifecycle events.
|
|
16
|
+
- **Webhooks**: external HTTP endpoints that let other systems trigger work in Durar. See [Webhooks](/automation/cron-jobs#webhooks).
|
|
17
|
+
|
|
18
|
+
Hooks can also be bundled inside plugins. `Durar hooks list` shows both standalone hooks and plugin-managed hooks.
|
|
19
|
+
|
|
20
|
+
## Quick start
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# List available hooks
|
|
24
|
+
Durar hooks list
|
|
25
|
+
|
|
26
|
+
# Enable a hook
|
|
27
|
+
Durar hooks enable session-memory
|
|
28
|
+
|
|
29
|
+
# Check hook status
|
|
30
|
+
Durar hooks check
|
|
31
|
+
|
|
32
|
+
# Get detailed information
|
|
33
|
+
Durar hooks info session-memory
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Event types
|
|
37
|
+
|
|
38
|
+
| Event | When it fires |
|
|
39
|
+
| ------------------------ | ------------------------------------------------ |
|
|
40
|
+
| `command:new` | `/new` command issued |
|
|
41
|
+
| `command:reset` | `/reset` command issued |
|
|
42
|
+
| `command:stop` | `/stop` command issued |
|
|
43
|
+
| `command` | Any command event (general listener) |
|
|
44
|
+
| `session:compact:before` | Before compaction summarizes history |
|
|
45
|
+
| `session:compact:after` | After compaction completes |
|
|
46
|
+
| `session:patch` | When session properties are modified |
|
|
47
|
+
| `agent:bootstrap` | Before workspace bootstrap files are injected |
|
|
48
|
+
| `gateway:startup` | After channels start and hooks are loaded |
|
|
49
|
+
| `message:received` | Inbound message from any channel |
|
|
50
|
+
| `message:transcribed` | After audio transcription completes |
|
|
51
|
+
| `message:preprocessed` | After all media and link understanding completes |
|
|
52
|
+
| `message:sent` | Outbound message delivered |
|
|
53
|
+
|
|
54
|
+
## Writing hooks
|
|
55
|
+
|
|
56
|
+
### Hook structure
|
|
57
|
+
|
|
58
|
+
Each hook is a directory containing two files:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
my-hook/
|
|
62
|
+
├── HOOK.md # Metadata + documentation
|
|
63
|
+
└── handler.ts # Handler implementation
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### HOOK.md format
|
|
67
|
+
|
|
68
|
+
```markdown
|
|
69
|
+
---
|
|
70
|
+
name: my-hook
|
|
71
|
+
description: "Short description of what this hook does"
|
|
72
|
+
metadata:
|
|
73
|
+
{ "Durar": { "emoji": "🔗", "events": ["command:new"], "requires": { "bins": ["node"] } } }
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
# My Hook
|
|
77
|
+
|
|
78
|
+
Detailed documentation goes here.
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Metadata fields** (`metadata.Durar`):
|
|
82
|
+
|
|
83
|
+
| Field | Description |
|
|
84
|
+
| ---------- | ---------------------------------------------------- |
|
|
85
|
+
| `emoji` | Display emoji for CLI |
|
|
86
|
+
| `events` | Array of events to listen for |
|
|
87
|
+
| `export` | Named export to use (defaults to `"default"`) |
|
|
88
|
+
| `os` | Required platforms (e.g., `["darwin", "linux"]`) |
|
|
89
|
+
| `requires` | Required `bins`, `anyBins`, `env`, or `config` paths |
|
|
90
|
+
| `always` | Bypass eligibility checks (boolean) |
|
|
91
|
+
| `install` | Installation methods |
|
|
92
|
+
|
|
93
|
+
### Handler implementation
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
const handler = async (event) => {
|
|
97
|
+
if (event.type !== "command" || event.action !== "new") {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
console.log(`[my-hook] New command triggered`);
|
|
102
|
+
// Your logic here
|
|
103
|
+
|
|
104
|
+
// Optionally send message to user
|
|
105
|
+
event.messages.push("Hook executed!");
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export default handler;
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Each event includes: `type`, `action`, `sessionKey`, `timestamp`, `messages` (push to send to user), and `context` (event-specific data).
|
|
112
|
+
|
|
113
|
+
### Event context highlights
|
|
114
|
+
|
|
115
|
+
**Command events** (`command:new`, `command:reset`): `context.sessionEntry`, `context.previousSessionEntry`, `context.commandSource`, `context.workspaceDir`, `context.cfg`.
|
|
116
|
+
|
|
117
|
+
**Message events** (`message:received`): `context.from`, `context.content`, `context.channelId`, `context.metadata` (provider-specific data including `senderId`, `senderName`, `guildId`).
|
|
118
|
+
|
|
119
|
+
**Message events** (`message:sent`): `context.to`, `context.content`, `context.success`, `context.channelId`.
|
|
120
|
+
|
|
121
|
+
**Message events** (`message:transcribed`): `context.transcript`, `context.from`, `context.channelId`, `context.mediaPath`.
|
|
122
|
+
|
|
123
|
+
**Message events** (`message:preprocessed`): `context.bodyForAgent` (final enriched body), `context.from`, `context.channelId`.
|
|
124
|
+
|
|
125
|
+
**Bootstrap events** (`agent:bootstrap`): `context.bootstrapFiles` (mutable array), `context.agentId`.
|
|
126
|
+
|
|
127
|
+
**Session patch events** (`session:patch`): `context.sessionEntry`, `context.patch` (only changed fields), `context.cfg`. Only privileged clients can trigger patch events.
|
|
128
|
+
|
|
129
|
+
**Compaction events**: `session:compact:before` includes `messageCount`, `tokenCount`. `session:compact:after` adds `compactedCount`, `summaryLength`, `tokensBefore`, `tokensAfter`.
|
|
130
|
+
|
|
131
|
+
## Hook discovery
|
|
132
|
+
|
|
133
|
+
Hooks are discovered from these directories, in order of increasing override precedence:
|
|
134
|
+
|
|
135
|
+
1. **Bundled hooks**: shipped with Durar
|
|
136
|
+
2. **Plugin hooks**: hooks bundled inside installed plugins
|
|
137
|
+
3. **Managed hooks**: `~/.Durar/hooks/` (user-installed, shared across workspaces). Extra directories from `hooks.internal.load.extraDirs` share this precedence.
|
|
138
|
+
4. **Workspace hooks**: `<workspace>/hooks/` (per-agent, disabled by default until explicitly enabled)
|
|
139
|
+
|
|
140
|
+
Workspace hooks can add new hook names but cannot override bundled, managed, or plugin-provided hooks with the same name.
|
|
141
|
+
|
|
142
|
+
### Hook packs
|
|
143
|
+
|
|
144
|
+
Hook packs are npm packages that export hooks via `Durar.hooks` in `package.json`. Install with:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
Durar plugins install <path-or-spec>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Npm specs are registry-only (package name + optional exact version or dist-tag). Git/URL/file specs and semver ranges are rejected.
|
|
151
|
+
|
|
152
|
+
## Bundled hooks
|
|
153
|
+
|
|
154
|
+
| Hook | Events | What it does |
|
|
155
|
+
| --------------------- | ------------------------------ | ----------------------------------------------------- |
|
|
156
|
+
| session-memory | `command:new`, `command:reset` | Saves session context to `<workspace>/memory/` |
|
|
157
|
+
| bootstrap-extra-files | `agent:bootstrap` | Injects additional bootstrap files from glob patterns |
|
|
158
|
+
| command-logger | `command` | Logs all commands to `~/.Durar/logs/commands.log` |
|
|
159
|
+
| boot-md | `gateway:startup` | Runs `BOOT.md` when the gateway starts |
|
|
160
|
+
|
|
161
|
+
Enable any bundled hook:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
Durar hooks enable <hook-name>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### session-memory details
|
|
168
|
+
|
|
169
|
+
Extracts the last 15 user/assistant messages, generates a descriptive filename slug via LLM, and saves to `<workspace>/memory/YYYY-MM-DD-slug.md`. Requires `workspace.dir` to be configured.
|
|
170
|
+
|
|
171
|
+
### bootstrap-extra-files config
|
|
172
|
+
|
|
173
|
+
```json
|
|
174
|
+
{
|
|
175
|
+
"hooks": {
|
|
176
|
+
"internal": {
|
|
177
|
+
"entries": {
|
|
178
|
+
"bootstrap-extra-files": {
|
|
179
|
+
"enabled": true,
|
|
180
|
+
"paths": ["packages/*/AGENTS.md", "packages/*/TOOLS.md"]
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Paths resolve relative to workspace. Only recognized bootstrap basenames are loaded (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`, `MEMORY.md`).
|
|
189
|
+
|
|
190
|
+
## Plugin hooks
|
|
191
|
+
|
|
192
|
+
Plugins can register hooks through the Plugin SDK for deeper integration: intercepting tool calls, modifying prompts, controlling message flow, and more. The Plugin SDK exposes 28 hooks covering model resolution, agent lifecycle, message flow, tool execution, subagent coordination, and gateway lifecycle.
|
|
193
|
+
|
|
194
|
+
For the complete plugin hook reference including `before_tool_call`, `before_agent_reply`, `before_install`, and all other plugin hooks, see [Plugin Architecture](/plugins/architecture#provider-runtime-hooks).
|
|
195
|
+
|
|
196
|
+
## Configuration
|
|
197
|
+
|
|
198
|
+
```json
|
|
199
|
+
{
|
|
200
|
+
"hooks": {
|
|
201
|
+
"internal": {
|
|
202
|
+
"enabled": true,
|
|
203
|
+
"entries": {
|
|
204
|
+
"session-memory": { "enabled": true },
|
|
205
|
+
"command-logger": { "enabled": false }
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Per-hook environment variables:
|
|
213
|
+
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"hooks": {
|
|
217
|
+
"internal": {
|
|
218
|
+
"entries": {
|
|
219
|
+
"my-hook": {
|
|
220
|
+
"enabled": true,
|
|
221
|
+
"env": { "MY_CUSTOM_VAR": "value" }
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Extra hook directories:
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"hooks": {
|
|
234
|
+
"internal": {
|
|
235
|
+
"load": {
|
|
236
|
+
"extraDirs": ["/path/to/more/hooks"]
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
<Note>
|
|
244
|
+
The legacy `hooks.internal.handlers` array config format is still supported for backwards compatibility, but new hooks should use the discovery-based system.
|
|
245
|
+
</Note>
|
|
246
|
+
|
|
247
|
+
## CLI reference
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# List all hooks (add --eligible, --verbose, or --json)
|
|
251
|
+
Durar hooks list
|
|
252
|
+
|
|
253
|
+
# Show detailed info about a hook
|
|
254
|
+
Durar hooks info <hook-name>
|
|
255
|
+
|
|
256
|
+
# Show eligibility summary
|
|
257
|
+
Durar hooks check
|
|
258
|
+
|
|
259
|
+
# Enable/disable
|
|
260
|
+
Durar hooks enable <hook-name>
|
|
261
|
+
Durar hooks disable <hook-name>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Best practices
|
|
265
|
+
|
|
266
|
+
- **Keep handlers fast.** Hooks run during command processing. Fire-and-forget heavy work with `void processInBackground(event)`.
|
|
267
|
+
- **Handle errors gracefully.** Wrap risky operations in try/catch; do not throw so other handlers can run.
|
|
268
|
+
- **Filter events early.** Return immediately if the event type/action is not relevant.
|
|
269
|
+
- **Use specific event keys.** Prefer `"events": ["command:new"]` over `"events": ["command"]` to reduce overhead.
|
|
270
|
+
|
|
271
|
+
## Troubleshooting
|
|
272
|
+
|
|
273
|
+
### Hook not discovered
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
# Verify directory structure
|
|
277
|
+
ls -la ~/.Durar/hooks/my-hook/
|
|
278
|
+
# Should show: HOOK.md, handler.ts
|
|
279
|
+
|
|
280
|
+
# List all discovered hooks
|
|
281
|
+
Durar hooks list
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Hook not eligible
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
Durar hooks info my-hook
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Check for missing binaries (PATH), environment variables, config values, or OS compatibility.
|
|
291
|
+
|
|
292
|
+
### Hook not executing
|
|
293
|
+
|
|
294
|
+
1. Verify the hook is enabled: `Durar hooks list`
|
|
295
|
+
2. Restart your gateway process so hooks reload.
|
|
296
|
+
3. Check gateway logs: `./scripts/clawlog.sh | grep hook`
|
|
297
|
+
|
|
298
|
+
## Related
|
|
299
|
+
|
|
300
|
+
- [CLI Reference: hooks](/cli/hooks)
|
|
301
|
+
- [Webhooks](/automation/cron-jobs#webhooks)
|
|
302
|
+
- [Plugin Architecture](/plugins/architecture#provider-runtime-hooks) — full plugin hook reference
|
|
303
|
+
- [Configuration](/gateway/configuration-reference#hooks)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Overview of automation mechanisms: tasks, cron, hooks, standing orders, and Task Flow"
|
|
3
|
+
read_when:
|
|
4
|
+
- Deciding how to automate work with Durar
|
|
5
|
+
- Choosing between heartbeat, cron, hooks, and standing orders
|
|
6
|
+
- Looking for the right automation entry point
|
|
7
|
+
title: "Automation & Tasks"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Automation & Tasks
|
|
11
|
+
|
|
12
|
+
Durar runs work in the background through tasks, scheduled jobs, event hooks, and standing instructions. This page helps you choose the right mechanism and understand how they fit together.
|
|
13
|
+
|
|
14
|
+
## Quick decision guide
|
|
15
|
+
|
|
16
|
+
```mermaid
|
|
17
|
+
flowchart TD
|
|
18
|
+
START([What do you need?]) --> Q1{Schedule work?}
|
|
19
|
+
START --> Q2{Track detached work?}
|
|
20
|
+
START --> Q3{Orchestrate multi-step flows?}
|
|
21
|
+
START --> Q4{React to lifecycle events?}
|
|
22
|
+
START --> Q5{Give the agent persistent instructions?}
|
|
23
|
+
|
|
24
|
+
Q1 -->|Yes| Q1a{Exact timing or flexible?}
|
|
25
|
+
Q1a -->|Exact| CRON["Scheduled Tasks (Cron)"]
|
|
26
|
+
Q1a -->|Flexible| HEARTBEAT[Heartbeat]
|
|
27
|
+
|
|
28
|
+
Q2 -->|Yes| TASKS[Background Tasks]
|
|
29
|
+
Q3 -->|Yes| FLOW[Task Flow]
|
|
30
|
+
Q4 -->|Yes| HOOKS[Hooks]
|
|
31
|
+
Q5 -->|Yes| SO[Standing Orders]
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
| Use case | Recommended | Why |
|
|
35
|
+
| --------------------------------------- | ---------------------- | ------------------------------------------------ |
|
|
36
|
+
| Send daily report at 9 AM sharp | Scheduled Tasks (Cron) | Exact timing, isolated execution |
|
|
37
|
+
| Remind me in 20 minutes | Scheduled Tasks (Cron) | One-shot with precise timing (`--at`) |
|
|
38
|
+
| Run weekly deep analysis | Scheduled Tasks (Cron) | Standalone task, can use different model |
|
|
39
|
+
| Check inbox every 30 min | Heartbeat | Batches with other checks, context-aware |
|
|
40
|
+
| Monitor calendar for upcoming events | Heartbeat | Natural fit for periodic awareness |
|
|
41
|
+
| Inspect status of a subagent or ACP run | Background Tasks | Tasks ledger tracks all detached work |
|
|
42
|
+
| Audit what ran and when | Background Tasks | `Durar tasks list` and `Durar tasks audit` |
|
|
43
|
+
| Multi-step research then summarize | Task Flow | Durable orchestration with revision tracking |
|
|
44
|
+
| Run a script on session reset | Hooks | Event-driven, fires on lifecycle events |
|
|
45
|
+
| Execute code on every tool call | Hooks | Hooks can filter by event type |
|
|
46
|
+
| Always check compliance before replying | Standing Orders | Injected into every session automatically |
|
|
47
|
+
|
|
48
|
+
### Scheduled Tasks (Cron) vs Heartbeat
|
|
49
|
+
|
|
50
|
+
| Dimension | Scheduled Tasks (Cron) | Heartbeat |
|
|
51
|
+
| --------------- | ----------------------------------- | ------------------------------------- |
|
|
52
|
+
| Timing | Exact (cron expressions, one-shot) | Approximate (default every 30 min) |
|
|
53
|
+
| Session context | Fresh (isolated) or shared | Full main-session context |
|
|
54
|
+
| Task records | Always created | Never created |
|
|
55
|
+
| Delivery | Channel, webhook, or silent | Inline in main session |
|
|
56
|
+
| Best for | Reports, reminders, background jobs | Inbox checks, calendar, notifications |
|
|
57
|
+
|
|
58
|
+
Use Scheduled Tasks (Cron) when you need precise timing or isolated execution. Use Heartbeat when the work benefits from full session context and approximate timing is fine.
|
|
59
|
+
|
|
60
|
+
## Core concepts
|
|
61
|
+
|
|
62
|
+
### Scheduled tasks (cron)
|
|
63
|
+
|
|
64
|
+
Cron is the Gateway's built-in scheduler for precise timing. It persists jobs, wakes the agent at the right time, and can deliver output to a chat channel or webhook endpoint. Supports one-shot reminders, recurring expressions, and inbound webhook triggers.
|
|
65
|
+
|
|
66
|
+
See [Scheduled Tasks](/automation/cron-jobs).
|
|
67
|
+
|
|
68
|
+
### Tasks
|
|
69
|
+
|
|
70
|
+
The background task ledger tracks all detached work: ACP runs, subagent spawns, isolated cron executions, and CLI operations. Tasks are records, not schedulers. Use `Durar tasks list` and `Durar tasks audit` to inspect them.
|
|
71
|
+
|
|
72
|
+
See [Background Tasks](/automation/tasks).
|
|
73
|
+
|
|
74
|
+
### Task Flow
|
|
75
|
+
|
|
76
|
+
Task Flow is the flow orchestration substrate above background tasks. It manages durable multi-step flows with managed and mirrored sync modes, revision tracking, and `Durar tasks flow list|show|cancel` for inspection.
|
|
77
|
+
|
|
78
|
+
See [Task Flow](/automation/taskflow).
|
|
79
|
+
|
|
80
|
+
### Standing orders
|
|
81
|
+
|
|
82
|
+
Standing orders grant the agent permanent operating authority for defined programs. They live in workspace files (typically `AGENTS.md`) and are injected into every session. Combine with cron for time-based enforcement.
|
|
83
|
+
|
|
84
|
+
See [Standing Orders](/automation/standing-orders).
|
|
85
|
+
|
|
86
|
+
### Hooks
|
|
87
|
+
|
|
88
|
+
Hooks are event-driven scripts triggered by agent lifecycle events (`/new`, `/reset`, `/stop`), session compaction, gateway startup, message flow, and tool calls. Hooks are automatically discovered from directories and can be managed with `Durar hooks`.
|
|
89
|
+
|
|
90
|
+
See [Hooks](/automation/hooks).
|
|
91
|
+
|
|
92
|
+
### Heartbeat
|
|
93
|
+
|
|
94
|
+
Heartbeat is a periodic main-session turn (default every 30 minutes). It batches multiple checks (inbox, calendar, notifications) in one agent turn with full session context. Heartbeat turns do not create task records. Use `HEARTBEAT.md` for a small checklist, or a `tasks:` block when you want due-only periodic checks inside heartbeat itself. Empty heartbeat files skip as `empty-heartbeat-file`; due-only task mode skips as `no-tasks-due`.
|
|
95
|
+
|
|
96
|
+
See [Heartbeat](/gateway/heartbeat).
|
|
97
|
+
|
|
98
|
+
## How they work together
|
|
99
|
+
|
|
100
|
+
- **Cron** handles precise schedules (daily reports, weekly reviews) and one-shot reminders. All cron executions create task records.
|
|
101
|
+
- **Heartbeat** handles routine monitoring (inbox, calendar, notifications) in one batched turn every 30 minutes.
|
|
102
|
+
- **Hooks** react to specific events (tool calls, session resets, compaction) with custom scripts.
|
|
103
|
+
- **Standing orders** give the agent persistent context and authority boundaries.
|
|
104
|
+
- **Task Flow** coordinates multi-step flows above individual tasks.
|
|
105
|
+
- **Tasks** automatically track all detached work so you can inspect and audit it.
|
|
106
|
+
|
|
107
|
+
## Related
|
|
108
|
+
|
|
109
|
+
- [Scheduled Tasks](/automation/cron-jobs) — precise scheduling and one-shot reminders
|
|
110
|
+
- [Background Tasks](/automation/tasks) — task ledger for all detached work
|
|
111
|
+
- [Task Flow](/automation/taskflow) — durable multi-step flow orchestration
|
|
112
|
+
- [Hooks](/automation/hooks) — event-driven lifecycle scripts
|
|
113
|
+
- [Standing Orders](/automation/standing-orders) — persistent agent instructions
|
|
114
|
+
- [Heartbeat](/gateway/heartbeat) — periodic main-session turns
|
|
115
|
+
- [Configuration Reference](/gateway/configuration-reference) — all config keys
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Define permanent operating authority for autonomous agent programs"
|
|
3
|
+
read_when:
|
|
4
|
+
- Setting up autonomous agent workflows that run without per-task prompting
|
|
5
|
+
- Defining what the agent can do independently vs. what needs human approval
|
|
6
|
+
- Structuring multi-program agents with clear boundaries and escalation rules
|
|
7
|
+
title: "Standing Orders"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Standing Orders
|
|
11
|
+
|
|
12
|
+
Standing orders grant your agent **permanent operating authority** for defined programs. Instead of giving individual task instructions each time, you define programs with clear scope, triggers, and escalation rules — and the agent executes autonomously within those boundaries.
|
|
13
|
+
|
|
14
|
+
This is the difference between telling your assistant "send the weekly report" every Friday vs. granting standing authority: "You own the weekly report. Compile it every Friday, send it, and only escalate if something looks wrong."
|
|
15
|
+
|
|
16
|
+
## Why Standing Orders?
|
|
17
|
+
|
|
18
|
+
**Without standing orders:**
|
|
19
|
+
|
|
20
|
+
- You must prompt the agent for every task
|
|
21
|
+
- The agent sits idle between requests
|
|
22
|
+
- Routine work gets forgotten or delayed
|
|
23
|
+
- You become the bottleneck
|
|
24
|
+
|
|
25
|
+
**With standing orders:**
|
|
26
|
+
|
|
27
|
+
- The agent executes autonomously within defined boundaries
|
|
28
|
+
- Routine work happens on schedule without prompting
|
|
29
|
+
- You only get involved for exceptions and approvals
|
|
30
|
+
- The agent fills idle time productively
|
|
31
|
+
|
|
32
|
+
## How They Work
|
|
33
|
+
|
|
34
|
+
Standing orders are defined in your [agent workspace](/concepts/agent-workspace) files. The recommended approach is to include them directly in `AGENTS.md` (which is auto-injected every session) so the agent always has them in context. For larger configurations, you can also place them in a dedicated file like `standing-orders.md` and reference it from `AGENTS.md`.
|
|
35
|
+
|
|
36
|
+
Each program specifies:
|
|
37
|
+
|
|
38
|
+
1. **Scope** — what the agent is authorized to do
|
|
39
|
+
2. **Triggers** — when to execute (schedule, event, or condition)
|
|
40
|
+
3. **Approval gates** — what requires human sign-off before acting
|
|
41
|
+
4. **Escalation rules** — when to stop and ask for help
|
|
42
|
+
|
|
43
|
+
The agent loads these instructions every session via the workspace bootstrap files (see [Agent Workspace](/concepts/agent-workspace) for the full list of auto-injected files) and executes against them, combined with [cron jobs](/automation/cron-jobs) for time-based enforcement.
|
|
44
|
+
|
|
45
|
+
<Tip>
|
|
46
|
+
Put standing orders in `AGENTS.md` to guarantee they're loaded every session. The workspace bootstrap automatically injects `AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`, and `MEMORY.md` — but not arbitrary files in subdirectories.
|
|
47
|
+
</Tip>
|
|
48
|
+
|
|
49
|
+
## Anatomy of a Standing Order
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
## Program: Weekly Status Report
|
|
53
|
+
|
|
54
|
+
**Authority:** Compile data, generate report, deliver to stakeholders
|
|
55
|
+
**Trigger:** Every Friday at 4 PM (enforced via cron job)
|
|
56
|
+
**Approval gate:** None for standard reports. Flag anomalies for human review.
|
|
57
|
+
**Escalation:** If data source is unavailable or metrics look unusual (>2σ from norm)
|
|
58
|
+
|
|
59
|
+
### Execution Steps
|
|
60
|
+
|
|
61
|
+
1. Pull metrics from configured sources
|
|
62
|
+
2. Compare to prior week and targets
|
|
63
|
+
3. Generate report in Reports/weekly/YYYY-MM-DD.md
|
|
64
|
+
4. Deliver summary via configured channel
|
|
65
|
+
5. Log completion to Agent/Logs/
|
|
66
|
+
|
|
67
|
+
### What NOT to Do
|
|
68
|
+
|
|
69
|
+
- Do not send reports to external parties
|
|
70
|
+
- Do not modify source data
|
|
71
|
+
- Do not skip delivery if metrics look bad — report accurately
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Standing Orders + Cron Jobs
|
|
75
|
+
|
|
76
|
+
Standing orders define **what** the agent is authorized to do. [Cron jobs](/automation/cron-jobs) define **when** it happens. They work together:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
Standing Order: "You own the daily inbox triage"
|
|
80
|
+
↓
|
|
81
|
+
Cron Job (8 AM daily): "Execute inbox triage per standing orders"
|
|
82
|
+
↓
|
|
83
|
+
Agent: Reads standing orders → executes steps → reports results
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The cron job prompt should reference the standing order rather than duplicating it:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
Durar cron add \
|
|
90
|
+
--name daily-inbox-triage \
|
|
91
|
+
--cron "0 8 * * 1-5" \
|
|
92
|
+
--tz America/New_York \
|
|
93
|
+
--timeout-seconds 300 \
|
|
94
|
+
--announce \
|
|
95
|
+
--channel bluebubbles \
|
|
96
|
+
--to "+1XXXXXXXXXX" \
|
|
97
|
+
--message "Execute daily inbox triage per standing orders. Check mail for new alerts. Parse, categorize, and persist each item. Report summary to owner. Escalate unknowns."
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Examples
|
|
101
|
+
|
|
102
|
+
### Example 1: Content & Social Media (Weekly Cycle)
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
## Program: Content & Social Media
|
|
106
|
+
|
|
107
|
+
**Authority:** Draft content, schedule posts, compile engagement reports
|
|
108
|
+
**Approval gate:** All posts require owner review for first 30 days, then standing approval
|
|
109
|
+
**Trigger:** Weekly cycle (Monday review → mid-week drafts → Friday brief)
|
|
110
|
+
|
|
111
|
+
### Weekly Cycle
|
|
112
|
+
|
|
113
|
+
- **Monday:** Review platform metrics and audience engagement
|
|
114
|
+
- **Tuesday–Thursday:** Draft social posts, create blog content
|
|
115
|
+
- **Friday:** Compile weekly marketing brief → deliver to owner
|
|
116
|
+
|
|
117
|
+
### Content Rules
|
|
118
|
+
|
|
119
|
+
- Voice must match the brand (see SOUL.md or brand voice guide)
|
|
120
|
+
- Never identify as AI in public-facing content
|
|
121
|
+
- Include metrics when available
|
|
122
|
+
- Focus on value to audience, not self-promotion
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Example 2: Finance Operations (Event-Triggered)
|
|
126
|
+
|
|
127
|
+
```markdown
|
|
128
|
+
## Program: Financial Processing
|
|
129
|
+
|
|
130
|
+
**Authority:** Process transaction data, generate reports, send summaries
|
|
131
|
+
**Approval gate:** None for analysis. Recommendations require owner approval.
|
|
132
|
+
**Trigger:** New data file detected OR scheduled monthly cycle
|
|
133
|
+
|
|
134
|
+
### When New Data Arrives
|
|
135
|
+
|
|
136
|
+
1. Detect new file in designated input directory
|
|
137
|
+
2. Parse and categorize all transactions
|
|
138
|
+
3. Compare against budget targets
|
|
139
|
+
4. Flag: unusual items, threshold breaches, new recurring charges
|
|
140
|
+
5. Generate report in designated output directory
|
|
141
|
+
6. Deliver summary to owner via configured channel
|
|
142
|
+
|
|
143
|
+
### Escalation Rules
|
|
144
|
+
|
|
145
|
+
- Single item > $500: immediate alert
|
|
146
|
+
- Category > budget by 20%: flag in report
|
|
147
|
+
- Unrecognizable transaction: ask owner for categorization
|
|
148
|
+
- Failed processing after 2 retries: report failure, do not guess
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Example 3: Monitoring & Alerts (Continuous)
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
## Program: System Monitoring
|
|
155
|
+
|
|
156
|
+
**Authority:** Check system health, restart services, send alerts
|
|
157
|
+
**Approval gate:** Restart services automatically. Escalate if restart fails twice.
|
|
158
|
+
**Trigger:** Every heartbeat cycle
|
|
159
|
+
|
|
160
|
+
### Checks
|
|
161
|
+
|
|
162
|
+
- Service health endpoints responding
|
|
163
|
+
- Disk space above threshold
|
|
164
|
+
- Pending tasks not stale (>24 hours)
|
|
165
|
+
- Delivery channels operational
|
|
166
|
+
|
|
167
|
+
### Response Matrix
|
|
168
|
+
|
|
169
|
+
| Condition | Action | Escalate? |
|
|
170
|
+
| ---------------- | ------------------------ | ------------------------ |
|
|
171
|
+
| Service down | Restart automatically | Only if restart fails 2x |
|
|
172
|
+
| Disk space < 10% | Alert owner | Yes |
|
|
173
|
+
| Stale task > 24h | Remind owner | No |
|
|
174
|
+
| Channel offline | Log and retry next cycle | If offline > 2 hours |
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## The Execute-Verify-Report Pattern
|
|
178
|
+
|
|
179
|
+
Standing orders work best when combined with strict execution discipline. Every task in a standing order should follow this loop:
|
|
180
|
+
|
|
181
|
+
1. **Execute** — Do the actual work (don't just acknowledge the instruction)
|
|
182
|
+
2. **Verify** — Confirm the result is correct (file exists, message delivered, data parsed)
|
|
183
|
+
3. **Report** — Tell the owner what was done and what was verified
|
|
184
|
+
|
|
185
|
+
```markdown
|
|
186
|
+
### Execution Rules
|
|
187
|
+
|
|
188
|
+
- Every task follows Execute-Verify-Report. No exceptions.
|
|
189
|
+
- "I'll do that" is not execution. Do it, then report.
|
|
190
|
+
- "Done" without verification is not acceptable. Prove it.
|
|
191
|
+
- If execution fails: retry once with adjusted approach.
|
|
192
|
+
- If still fails: report failure with diagnosis. Never silently fail.
|
|
193
|
+
- Never retry indefinitely — 3 attempts max, then escalate.
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
This pattern prevents the most common agent failure mode: acknowledging a task without completing it.
|
|
197
|
+
|
|
198
|
+
## Multi-Program Architecture
|
|
199
|
+
|
|
200
|
+
For agents managing multiple concerns, organize standing orders as separate programs with clear boundaries:
|
|
201
|
+
|
|
202
|
+
```markdown
|
|
203
|
+
# Standing Orders
|
|
204
|
+
|
|
205
|
+
## Program 1: [Domain A] (Weekly)
|
|
206
|
+
|
|
207
|
+
...
|
|
208
|
+
|
|
209
|
+
## Program 2: [Domain B] (Monthly + On-Demand)
|
|
210
|
+
|
|
211
|
+
...
|
|
212
|
+
|
|
213
|
+
## Program 3: [Domain C] (As-Needed)
|
|
214
|
+
|
|
215
|
+
...
|
|
216
|
+
|
|
217
|
+
## Escalation Rules (All Programs)
|
|
218
|
+
|
|
219
|
+
- [Common escalation criteria]
|
|
220
|
+
- [Approval gates that apply across programs]
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Each program should have:
|
|
224
|
+
|
|
225
|
+
- Its own **trigger cadence** (weekly, monthly, event-driven, continuous)
|
|
226
|
+
- Its own **approval gates** (some programs need more oversight than others)
|
|
227
|
+
- Clear **boundaries** (the agent should know where one program ends and another begins)
|
|
228
|
+
|
|
229
|
+
## Best Practices
|
|
230
|
+
|
|
231
|
+
### Do
|
|
232
|
+
|
|
233
|
+
- Start with narrow authority and expand as trust builds
|
|
234
|
+
- Define explicit approval gates for high-risk actions
|
|
235
|
+
- Include "What NOT to do" sections — boundaries matter as much as permissions
|
|
236
|
+
- Combine with cron jobs for reliable time-based execution
|
|
237
|
+
- Review agent logs weekly to verify standing orders are being followed
|
|
238
|
+
- Update standing orders as your needs evolve — they're living documents
|
|
239
|
+
|
|
240
|
+
### Avoid
|
|
241
|
+
|
|
242
|
+
- Grant broad authority on day one ("do whatever you think is best")
|
|
243
|
+
- Skip escalation rules — every program needs a "when to stop and ask" clause
|
|
244
|
+
- Assume the agent will remember verbal instructions — put everything in the file
|
|
245
|
+
- Mix concerns in a single program — separate programs for separate domains
|
|
246
|
+
- Forget to enforce with cron jobs — standing orders without triggers become suggestions
|
|
247
|
+
|
|
248
|
+
## Related
|
|
249
|
+
|
|
250
|
+
- [Automation & Tasks](/automation) — all automation mechanisms at a glance
|
|
251
|
+
- [Cron Jobs](/automation/cron-jobs) — schedule enforcement for standing orders
|
|
252
|
+
- [Hooks](/automation/hooks) — event-driven scripts for agent lifecycle events
|
|
253
|
+
- [Webhooks](/automation/cron-jobs#webhooks) — inbound HTTP event triggers
|
|
254
|
+
- [Agent Workspace](/concepts/agent-workspace) — where standing orders live, including the full list of auto-injected bootstrap files (AGENTS.md, SOUL.md, etc.)
|