vilvona 1.0.0
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 +12331 -0
- package/LICENSE +24 -0
- package/README.md +314 -0
- package/THIRD_PARTY_NOTICES.md +37 -0
- package/docs/.i18n/README.md +81 -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 +82 -0
- package/docs/.i18n/glossary.de.json +82 -0
- package/docs/.i18n/glossary.es.json +82 -0
- package/docs/.i18n/glossary.fa.json +82 -0
- package/docs/.i18n/glossary.fr.json +82 -0
- package/docs/.i18n/glossary.id.json +82 -0
- package/docs/.i18n/glossary.it.json +82 -0
- package/docs/.i18n/glossary.ja-JP.json +102 -0
- package/docs/.i18n/glossary.ko.json +82 -0
- package/docs/.i18n/glossary.nl.json +82 -0
- package/docs/.i18n/glossary.pl.json +82 -0
- package/docs/.i18n/glossary.pt-BR.json +82 -0
- package/docs/.i18n/glossary.th.json +82 -0
- package/docs/.i18n/glossary.tr.json +82 -0
- package/docs/.i18n/glossary.uk.json +82 -0
- package/docs/.i18n/glossary.vi.json +82 -0
- package/docs/.i18n/glossary.zh-CN.json +1182 -0
- package/docs/.i18n/glossary.zh-TW.json +162 -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/translation-workflow.md +111 -0
- package/docs/.i18n/zh-Hans-navigation.json +552 -0
- package/docs/AGENTS.md +36 -0
- package/docs/agent-runtime-architecture.md +48 -0
- package/docs/announcements/bluebubbles-imessage.md +79 -0
- package/docs/auth-credential-semantics.md +124 -0
- package/docs/automation/auth-monitoring.md +11 -0
- package/docs/automation/clawflow.md +12 -0
- package/docs/automation/cron-jobs.md +569 -0
- package/docs/automation/cron-vs-heartbeat.md +11 -0
- package/docs/automation/gmail-pubsub.md +11 -0
- package/docs/automation/hooks.md +387 -0
- package/docs/automation/index.md +135 -0
- package/docs/automation/poll.md +12 -0
- package/docs/automation/standing-orders.md +250 -0
- package/docs/automation/taskflow.md +155 -0
- package/docs/automation/tasks.md +374 -0
- package/docs/automation/troubleshooting.md +12 -0
- package/docs/automation/webhook.md +12 -0
- package/docs/brave-search.md +11 -0
- package/docs/channels/access-groups.md +201 -0
- package/docs/channels/ambient-room-events.md +214 -0
- package/docs/channels/bot-loop-protection.md +131 -0
- package/docs/channels/broadcast-groups.md +472 -0
- package/docs/channels/channel-routing.md +162 -0
- package/docs/channels/clickclack.md +146 -0
- package/docs/channels/discord.md +1758 -0
- package/docs/channels/feishu.md +654 -0
- package/docs/channels/googlechat.md +286 -0
- package/docs/channels/group-messages.md +95 -0
- package/docs/channels/groups.md +610 -0
- package/docs/channels/imessage-from-bluebubbles.md +259 -0
- package/docs/channels/imessage.md +864 -0
- package/docs/channels/index.md +65 -0
- package/docs/channels/irc.md +253 -0
- package/docs/channels/line.md +243 -0
- package/docs/channels/location.md +71 -0
- package/docs/channels/matrix-migration.md +375 -0
- package/docs/channels/matrix-presentation.md +77 -0
- package/docs/channels/matrix-push-rules.md +150 -0
- package/docs/channels/matrix.md +935 -0
- package/docs/channels/mattermost.md +542 -0
- package/docs/channels/msteams.md +1097 -0
- package/docs/channels/nextcloud-talk.md +176 -0
- package/docs/channels/nostr.md +253 -0
- package/docs/channels/pairing.md +214 -0
- package/docs/channels/qqbot.md +317 -0
- package/docs/channels/signal.md +417 -0
- package/docs/channels/slack.md +1623 -0
- package/docs/channels/sms.md +380 -0
- package/docs/channels/synology-chat.md +187 -0
- package/docs/channels/telegram.md +1121 -0
- package/docs/channels/tlon.md +296 -0
- package/docs/channels/troubleshooting.md +162 -0
- package/docs/channels/twitch.md +431 -0
- package/docs/channels/wechat.md +171 -0
- package/docs/channels/whatsapp.md +796 -0
- package/docs/channels/yuanbao.md +416 -0
- package/docs/channels/zalo.md +253 -0
- package/docs/channels/zalouser.md +217 -0
- package/docs/ci.md +665 -0
- package/docs/clawhub/cli.md +82 -0
- package/docs/clawhub/publishing.md +96 -0
- package/docs/cli/acp.md +370 -0
- package/docs/cli/agent.md +109 -0
- package/docs/cli/agents.md +253 -0
- package/docs/cli/approvals.md +193 -0
- package/docs/cli/backup.md +98 -0
- package/docs/cli/browser.md +322 -0
- package/docs/cli/channels.md +154 -0
- package/docs/cli/clawbot.md +25 -0
- package/docs/cli/commitments.md +90 -0
- package/docs/cli/completion.md +39 -0
- package/docs/cli/config.md +504 -0
- package/docs/cli/configure.md +77 -0
- package/docs/cli/crestodian.md +337 -0
- package/docs/cli/cron.md +344 -0
- package/docs/cli/daemon.md +67 -0
- package/docs/cli/dashboard.md +33 -0
- package/docs/cli/devices.md +240 -0
- package/docs/cli/directory.md +68 -0
- package/docs/cli/dns.md +53 -0
- package/docs/cli/docs.md +63 -0
- package/docs/cli/doctor.md +254 -0
- package/docs/cli/flows.md +52 -0
- package/docs/cli/gateway.md +572 -0
- package/docs/cli/health.md +43 -0
- package/docs/cli/hooks.md +345 -0
- package/docs/cli/index.md +406 -0
- package/docs/cli/infer.md +364 -0
- package/docs/cli/logs.md +68 -0
- package/docs/cli/mcp.md +851 -0
- package/docs/cli/memory.md +183 -0
- package/docs/cli/message.md +317 -0
- package/docs/cli/migrate.md +334 -0
- package/docs/cli/models.md +239 -0
- package/docs/cli/node.md +178 -0
- package/docs/cli/nodes.md +76 -0
- package/docs/cli/onboard.md +251 -0
- package/docs/cli/pairing.md +77 -0
- package/docs/cli/path.md +511 -0
- package/docs/cli/plugins.md +480 -0
- package/docs/cli/policy.md +929 -0
- package/docs/cli/proxy.md +89 -0
- package/docs/cli/qr.md +56 -0
- package/docs/cli/reset.md +39 -0
- package/docs/cli/sandbox.md +208 -0
- package/docs/cli/secrets.md +202 -0
- package/docs/cli/security.md +135 -0
- package/docs/cli/sessions.md +178 -0
- package/docs/cli/setup.md +60 -0
- package/docs/cli/skills.md +156 -0
- package/docs/cli/status.md +45 -0
- package/docs/cli/system.md +89 -0
- package/docs/cli/tasks.md +111 -0
- package/docs/cli/transcripts.md +151 -0
- package/docs/cli/tui.md +92 -0
- package/docs/cli/uninstall.md +45 -0
- package/docs/cli/update.md +283 -0
- package/docs/cli/voicecall.md +204 -0
- package/docs/cli/webhooks.md +117 -0
- package/docs/cli/wiki.md +256 -0
- package/docs/cli/workboard.md +228 -0
- package/docs/concepts/active-memory.md +856 -0
- package/docs/concepts/agent-loop.md +185 -0
- package/docs/concepts/agent-runtimes.md +276 -0
- package/docs/concepts/agent-workspace.md +230 -0
- package/docs/concepts/agent.md +142 -0
- package/docs/concepts/architecture.md +154 -0
- package/docs/concepts/channel-docking.md +145 -0
- package/docs/concepts/commitments.md +150 -0
- package/docs/concepts/compaction.md +203 -0
- package/docs/concepts/context-engine.md +347 -0
- package/docs/concepts/context.md +199 -0
- package/docs/concepts/delegate-architecture.md +319 -0
- package/docs/concepts/dreaming.md +279 -0
- package/docs/concepts/experimental-features.md +111 -0
- package/docs/concepts/features.md +91 -0
- package/docs/concepts/mantis-slack-desktop-runbook.md +231 -0
- package/docs/concepts/mantis.md +744 -0
- package/docs/concepts/markdown-formatting.md +139 -0
- package/docs/concepts/memory-builtin.md +151 -0
- package/docs/concepts/memory-honcho.md +144 -0
- package/docs/concepts/memory-qmd.md +277 -0
- package/docs/concepts/memory-search.md +175 -0
- package/docs/concepts/memory.md +299 -0
- package/docs/concepts/message-lifecycle-refactor.md +1126 -0
- package/docs/concepts/messages.md +216 -0
- package/docs/concepts/model-failover.md +405 -0
- package/docs/concepts/model-providers.md +719 -0
- package/docs/concepts/models.md +371 -0
- package/docs/concepts/multi-agent.md +625 -0
- package/docs/concepts/oauth.md +218 -0
- package/docs/concepts/parallel-specialist-lanes.md +127 -0
- package/docs/concepts/personal-agent-benchmark-pack.md +74 -0
- package/docs/concepts/presence.md +117 -0
- package/docs/concepts/progress-drafts.md +406 -0
- package/docs/concepts/qa-e2e-automation.md +979 -0
- package/docs/concepts/qa-matrix.md +139 -0
- package/docs/concepts/queue-steering.md +90 -0
- package/docs/concepts/queue.md +136 -0
- package/docs/concepts/retry.md +86 -0
- package/docs/concepts/session-pruning.md +104 -0
- package/docs/concepts/session-tool.md +201 -0
- package/docs/concepts/session.md +164 -0
- package/docs/concepts/soul.md +116 -0
- package/docs/concepts/streaming.md +258 -0
- package/docs/concepts/system-prompt.md +330 -0
- package/docs/concepts/timezone.md +47 -0
- package/docs/concepts/typebox.md +309 -0
- package/docs/concepts/typing-indicators.md +88 -0
- package/docs/concepts/usage-tracking.md +72 -0
- package/docs/date-time.md +126 -0
- package/docs/debug/node-issue.md +90 -0
- package/docs/diagnostics/flags.md +182 -0
- package/docs/docs.json +1885 -0
- package/docs/gateway/authentication.md +286 -0
- package/docs/gateway/background-process.md +147 -0
- package/docs/gateway/bonjour.md +303 -0
- package/docs/gateway/bridge-protocol.md +97 -0
- package/docs/gateway/cli-backends.md +463 -0
- package/docs/gateway/config-agents.md +1525 -0
- package/docs/gateway/config-channels.md +942 -0
- package/docs/gateway/config-tools.md +806 -0
- package/docs/gateway/configuration-examples.md +706 -0
- package/docs/gateway/configuration-reference.md +1449 -0
- package/docs/gateway/configuration.md +748 -0
- package/docs/gateway/diagnostics.md +213 -0
- package/docs/gateway/discovery.md +154 -0
- package/docs/gateway/doctor.md +576 -0
- package/docs/gateway/external-apps.md +86 -0
- package/docs/gateway/gateway-lock.md +37 -0
- package/docs/gateway/health.md +73 -0
- package/docs/gateway/heartbeat.md +498 -0
- package/docs/gateway/index.md +385 -0
- package/docs/gateway/local-model-services.md +205 -0
- package/docs/gateway/local-models.md +355 -0
- package/docs/gateway/logging.md +149 -0
- package/docs/gateway/multiple-gateways.md +178 -0
- package/docs/gateway/network-model.md +15 -0
- package/docs/gateway/openai-http-api.md +379 -0
- package/docs/gateway/openresponses-http-api.md +349 -0
- package/docs/gateway/openshell.md +316 -0
- package/docs/gateway/opentelemetry.md +440 -0
- package/docs/gateway/operator-scopes.md +119 -0
- package/docs/gateway/pairing.md +207 -0
- package/docs/gateway/prometheus.md +249 -0
- package/docs/gateway/protocol.md +839 -0
- package/docs/gateway/remote-gateway-readme.md +169 -0
- package/docs/gateway/remote.md +280 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +148 -0
- package/docs/gateway/sandboxing.md +546 -0
- package/docs/gateway/secrets-plan-contract.md +159 -0
- package/docs/gateway/secrets.md +805 -0
- package/docs/gateway/security/audit-checks.md +127 -0
- package/docs/gateway/security/exposure-runbook.md +212 -0
- package/docs/gateway/security/index.md +1344 -0
- package/docs/gateway/security/secure-file-operations.md +76 -0
- package/docs/gateway/security/shrinkwrap.md +111 -0
- package/docs/gateway/tailscale.md +180 -0
- package/docs/gateway/tools-invoke-http-api.md +175 -0
- package/docs/gateway/troubleshooting.md +881 -0
- package/docs/gateway/trusted-proxy-auth.md +483 -0
- package/docs/help/debugging.md +341 -0
- package/docs/help/environment.md +240 -0
- package/docs/help/faq-first-run.md +872 -0
- package/docs/help/faq-models.md +557 -0
- package/docs/help/faq.md +2115 -0
- package/docs/help/index.md +39 -0
- package/docs/help/scripts.md +56 -0
- package/docs/help/testing-live.md +592 -0
- package/docs/help/testing-updates-plugins.md +299 -0
- package/docs/help/testing.md +977 -0
- package/docs/help/troubleshooting.md +500 -0
- package/docs/index.md +196 -0
- package/docs/install/ansible.md +233 -0
- package/docs/install/azure.md +315 -0
- package/docs/install/bun.md +59 -0
- package/docs/install/clawdock.md +112 -0
- package/docs/install/development-channels.md +148 -0
- package/docs/install/digitalocean.md +174 -0
- package/docs/install/docker-vm-runtime.md +154 -0
- package/docs/install/docker.md +564 -0
- package/docs/install/exe-dev.md +201 -0
- package/docs/install/fly.md +524 -0
- package/docs/install/gcp.md +418 -0
- package/docs/install/hetzner.md +285 -0
- package/docs/install/hostinger.md +98 -0
- package/docs/install/index.md +236 -0
- package/docs/install/installer.md +447 -0
- package/docs/install/kubernetes.md +196 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-claude.md +165 -0
- package/docs/install/migrating-hermes.md +178 -0
- package/docs/install/migrating.md +137 -0
- package/docs/install/nix.md +112 -0
- package/docs/install/node.md +142 -0
- package/docs/install/northflank.mdx +44 -0
- package/docs/install/oracle.md +218 -0
- package/docs/install/podman.md +216 -0
- package/docs/install/railway.mdx +92 -0
- package/docs/install/raspberry-pi.md +234 -0
- package/docs/install/render.mdx +167 -0
- package/docs/install/uninstall.md +140 -0
- package/docs/install/updating.md +284 -0
- package/docs/install/upstash.md +96 -0
- package/docs/logging.md +322 -0
- package/docs/maturity-scores.yaml +5361 -0
- package/docs/nav-tabs-underline.js +104 -0
- package/docs/network.md +72 -0
- package/docs/nodes/audio.md +216 -0
- package/docs/nodes/camera.md +166 -0
- package/docs/nodes/images.md +77 -0
- package/docs/nodes/index.md +444 -0
- package/docs/nodes/location-command.md +102 -0
- package/docs/nodes/media-understanding.md +495 -0
- package/docs/nodes/talk.md +160 -0
- package/docs/nodes/troubleshooting.md +123 -0
- package/docs/nodes/voicewake.md +93 -0
- package/docs/openclaw-agent-runtime.md +82 -0
- package/docs/perplexity.md +11 -0
- package/docs/plan/codex-context-engine-harness.md +624 -0
- package/docs/plan/ui-channels.md +284 -0
- package/docs/platforms/android.md +286 -0
- package/docs/platforms/digitalocean.md +12 -0
- package/docs/platforms/easyrunner.md +109 -0
- package/docs/platforms/index.md +65 -0
- package/docs/platforms/ios.md +287 -0
- package/docs/platforms/linux.md +141 -0
- package/docs/platforms/mac/bundled-gateway.md +79 -0
- package/docs/platforms/mac/canvas.md +128 -0
- package/docs/platforms/mac/child-process.md +72 -0
- package/docs/platforms/mac/dev-setup.md +112 -0
- package/docs/platforms/mac/health.md +39 -0
- package/docs/platforms/mac/icon.md +36 -0
- package/docs/platforms/mac/logging.md +62 -0
- package/docs/platforms/mac/menu-bar.md +93 -0
- package/docs/platforms/mac/peekaboo.md +96 -0
- package/docs/platforms/mac/permissions.md +73 -0
- package/docs/platforms/mac/remote.md +123 -0
- package/docs/platforms/mac/signing.md +52 -0
- package/docs/platforms/mac/skills.md +45 -0
- package/docs/platforms/mac/voice-overlay.md +66 -0
- package/docs/platforms/mac/voicewake.md +79 -0
- package/docs/platforms/mac/webchat.md +54 -0
- package/docs/platforms/mac/xpc.md +66 -0
- package/docs/platforms/macos.md +228 -0
- package/docs/platforms/oracle.md +12 -0
- package/docs/platforms/raspberry-pi.md +13 -0
- package/docs/platforms/windows.md +304 -0
- package/docs/plugins/adding-capabilities.md +146 -0
- package/docs/plugins/admin-http-rpc.md +216 -0
- package/docs/plugins/agent-tools.md +13 -0
- package/docs/plugins/architecture-internals.md +1203 -0
- package/docs/plugins/architecture.md +483 -0
- package/docs/plugins/building-extensions.md +13 -0
- package/docs/plugins/building-plugins.md +343 -0
- package/docs/plugins/bundles.md +310 -0
- package/docs/plugins/cli-backend-plugins.md +328 -0
- package/docs/plugins/codex-computer-use.md +297 -0
- package/docs/plugins/codex-harness-reference.md +480 -0
- package/docs/plugins/codex-harness-runtime.md +268 -0
- package/docs/plugins/codex-harness.md +800 -0
- package/docs/plugins/codex-native-plugins.md +280 -0
- package/docs/plugins/community.md +77 -0
- package/docs/plugins/compatibility.md +198 -0
- package/docs/plugins/copilot.md +355 -0
- package/docs/plugins/dependency-resolution.md +176 -0
- package/docs/plugins/google-meet.md +1737 -0
- package/docs/plugins/hooks.md +525 -0
- package/docs/plugins/install-overrides.md +80 -0
- package/docs/plugins/llama-cpp.md +58 -0
- package/docs/plugins/manage-plugins.md +214 -0
- package/docs/plugins/manifest.md +1468 -0
- package/docs/plugins/memory-lancedb.md +385 -0
- package/docs/plugins/memory-wiki.md +529 -0
- package/docs/plugins/message-presentation.md +487 -0
- package/docs/plugins/oc-path.md +166 -0
- package/docs/plugins/plugin-inventory.md +318 -0
- package/docs/plugins/plugin-permission-requests.md +193 -0
- package/docs/plugins/reference/acpx.md +23 -0
- package/docs/plugins/reference/admin-http-rpc.md +23 -0
- package/docs/plugins/reference/alibaba.md +23 -0
- package/docs/plugins/reference/amazon-bedrock-mantle.md +23 -0
- package/docs/plugins/reference/amazon-bedrock.md +23 -0
- package/docs/plugins/reference/anthropic-vertex.md +29 -0
- package/docs/plugins/reference/anthropic.md +23 -0
- package/docs/plugins/reference/arcee.md +23 -0
- package/docs/plugins/reference/azure-speech.md +23 -0
- package/docs/plugins/reference/bonjour.md +19 -0
- package/docs/plugins/reference/brave.md +23 -0
- package/docs/plugins/reference/browser.md +23 -0
- package/docs/plugins/reference/byteplus.md +19 -0
- package/docs/plugins/reference/canvas.md +19 -0
- package/docs/plugins/reference/cerebras.md +23 -0
- package/docs/plugins/reference/chutes.md +23 -0
- package/docs/plugins/reference/clickclack.md +23 -0
- package/docs/plugins/reference/cloudflare-ai-gateway.md +23 -0
- package/docs/plugins/reference/codex-supervisor.md +27 -0
- package/docs/plugins/reference/codex.md +23 -0
- package/docs/plugins/reference/comfy.md +23 -0
- package/docs/plugins/reference/copilot-proxy.md +19 -0
- package/docs/plugins/reference/copilot.md +23 -0
- package/docs/plugins/reference/deepgram.md +23 -0
- package/docs/plugins/reference/deepinfra.md +23 -0
- package/docs/plugins/reference/deepseek.md +23 -0
- package/docs/plugins/reference/diagnostics-otel.md +19 -0
- package/docs/plugins/reference/diagnostics-prometheus.md +19 -0
- package/docs/plugins/reference/diffs-language-pack.md +31 -0
- package/docs/plugins/reference/diffs.md +19 -0
- package/docs/plugins/reference/discord.md +23 -0
- package/docs/plugins/reference/document-extract.md +23 -0
- package/docs/plugins/reference/duckduckgo.md +23 -0
- package/docs/plugins/reference/elevenlabs.md +23 -0
- package/docs/plugins/reference/exa.md +23 -0
- package/docs/plugins/reference/fal.md +23 -0
- package/docs/plugins/reference/feishu.md +23 -0
- package/docs/plugins/reference/file-transfer.md +19 -0
- package/docs/plugins/reference/firecrawl.md +23 -0
- package/docs/plugins/reference/fireworks.md +23 -0
- package/docs/plugins/reference/github-copilot.md +23 -0
- package/docs/plugins/reference/gmi.md +23 -0
- package/docs/plugins/reference/google-meet.md +23 -0
- package/docs/plugins/reference/google.md +23 -0
- package/docs/plugins/reference/googlechat.md +23 -0
- package/docs/plugins/reference/gradium.md +23 -0
- package/docs/plugins/reference/groq.md +23 -0
- package/docs/plugins/reference/huggingface.md +23 -0
- package/docs/plugins/reference/imessage.md +23 -0
- package/docs/plugins/reference/inworld.md +23 -0
- package/docs/plugins/reference/irc.md +23 -0
- package/docs/plugins/reference/kilocode.md +23 -0
- package/docs/plugins/reference/kimi.md +23 -0
- package/docs/plugins/reference/line.md +23 -0
- package/docs/plugins/reference/litellm.md +23 -0
- package/docs/plugins/reference/llama-cpp.md +23 -0
- package/docs/plugins/reference/llm-task.md +19 -0
- package/docs/plugins/reference/lmstudio.md +23 -0
- package/docs/plugins/reference/lobster.md +19 -0
- package/docs/plugins/reference/matrix.md +23 -0
- package/docs/plugins/reference/mattermost.md +23 -0
- package/docs/plugins/reference/memory-core.md +19 -0
- package/docs/plugins/reference/memory-lancedb.md +23 -0
- package/docs/plugins/reference/memory-wiki.md +23 -0
- package/docs/plugins/reference/microsoft-foundry.md +113 -0
- package/docs/plugins/reference/microsoft.md +19 -0
- package/docs/plugins/reference/migrate-claude.md +19 -0
- package/docs/plugins/reference/migrate-hermes.md +19 -0
- package/docs/plugins/reference/minimax.md +23 -0
- package/docs/plugins/reference/mistral.md +23 -0
- package/docs/plugins/reference/moonshot.md +23 -0
- package/docs/plugins/reference/msteams.md +23 -0
- package/docs/plugins/reference/nextcloud-talk.md +23 -0
- package/docs/plugins/reference/nostr.md +23 -0
- package/docs/plugins/reference/novita.md +23 -0
- package/docs/plugins/reference/nvidia.md +23 -0
- package/docs/plugins/reference/oc-path.md +23 -0
- package/docs/plugins/reference/ollama.md +24 -0
- package/docs/plugins/reference/open-prose.md +19 -0
- package/docs/plugins/reference/openai.md +23 -0
- package/docs/plugins/reference/opencode-go.md +23 -0
- package/docs/plugins/reference/opencode.md +23 -0
- package/docs/plugins/reference/openrouter.md +23 -0
- package/docs/plugins/reference/openshell.md +19 -0
- package/docs/plugins/reference/perplexity.md +23 -0
- package/docs/plugins/reference/pixverse.md +23 -0
- package/docs/plugins/reference/policy.md +79 -0
- package/docs/plugins/reference/qa-channel.md +23 -0
- package/docs/plugins/reference/qa-lab.md +19 -0
- package/docs/plugins/reference/qa-matrix.md +19 -0
- package/docs/plugins/reference/qianfan.md +23 -0
- package/docs/plugins/reference/qqbot.md +23 -0
- package/docs/plugins/reference/qwen.md +24 -0
- package/docs/plugins/reference/runway.md +23 -0
- package/docs/plugins/reference/searxng.md +19 -0
- package/docs/plugins/reference/senseaudio.md +23 -0
- package/docs/plugins/reference/sglang.md +23 -0
- package/docs/plugins/reference/signal.md +23 -0
- package/docs/plugins/reference/slack.md +23 -0
- package/docs/plugins/reference/sms.md +23 -0
- package/docs/plugins/reference/stepfun.md +23 -0
- package/docs/plugins/reference/synology-chat.md +23 -0
- package/docs/plugins/reference/synthetic.md +23 -0
- package/docs/plugins/reference/tavily.md +23 -0
- package/docs/plugins/reference/telegram.md +23 -0
- package/docs/plugins/reference/tencent.md +23 -0
- package/docs/plugins/reference/tlon.md +23 -0
- package/docs/plugins/reference/together.md +23 -0
- package/docs/plugins/reference/tokenjuice.md +23 -0
- package/docs/plugins/reference/tts-local-cli.md +19 -0
- package/docs/plugins/reference/twitch.md +23 -0
- package/docs/plugins/reference/venice.md +23 -0
- package/docs/plugins/reference/vercel-ai-gateway.md +23 -0
- package/docs/plugins/reference/vllm.md +23 -0
- package/docs/plugins/reference/voice-call.md +23 -0
- package/docs/plugins/reference/volcengine.md +23 -0
- package/docs/plugins/reference/voyage.md +19 -0
- package/docs/plugins/reference/vydra.md +23 -0
- package/docs/plugins/reference/web-readability.md +19 -0
- package/docs/plugins/reference/webhooks.md +23 -0
- package/docs/plugins/reference/whatsapp.md +23 -0
- package/docs/plugins/reference/workboard.md +23 -0
- package/docs/plugins/reference/xai.md +23 -0
- package/docs/plugins/reference/xiaomi.md +23 -0
- package/docs/plugins/reference/zai.md +23 -0
- package/docs/plugins/reference/zalo.md +23 -0
- package/docs/plugins/reference/zalouser.md +24 -0
- package/docs/plugins/reference.md +19 -0
- package/docs/plugins/sdk-agent-harness.md +339 -0
- package/docs/plugins/sdk-channel-inbound.md +70 -0
- package/docs/plugins/sdk-channel-ingress.md +137 -0
- package/docs/plugins/sdk-channel-message.md +18 -0
- package/docs/plugins/sdk-channel-outbound.md +113 -0
- package/docs/plugins/sdk-channel-plugins.md +770 -0
- package/docs/plugins/sdk-channel-turn.md +9 -0
- package/docs/plugins/sdk-entrypoints.md +344 -0
- package/docs/plugins/sdk-migration.md +1011 -0
- package/docs/plugins/sdk-overview.md +525 -0
- package/docs/plugins/sdk-provider-plugins.md +1019 -0
- package/docs/plugins/sdk-runtime.md +683 -0
- package/docs/plugins/sdk-setup.md +550 -0
- package/docs/plugins/sdk-subpaths.md +401 -0
- package/docs/plugins/sdk-testing.md +403 -0
- package/docs/plugins/tool-plugins.md +411 -0
- package/docs/plugins/voice-call.md +942 -0
- package/docs/plugins/webhooks.md +192 -0
- package/docs/plugins/workboard.md +402 -0
- package/docs/plugins/zalouser.md +86 -0
- package/docs/prose.md +191 -0
- package/docs/providers/alibaba.md +158 -0
- package/docs/providers/anthropic.md +386 -0
- package/docs/providers/arcee.md +144 -0
- package/docs/providers/azure-speech.md +119 -0
- package/docs/providers/bedrock-mantle.md +224 -0
- package/docs/providers/bedrock.md +433 -0
- package/docs/providers/cerebras.md +130 -0
- package/docs/providers/chutes.md +153 -0
- package/docs/providers/claude-max-api-proxy.md +191 -0
- package/docs/providers/cloudflare-ai-gateway.md +119 -0
- package/docs/providers/comfy.md +362 -0
- package/docs/providers/deepgram.md +184 -0
- package/docs/providers/deepinfra.md +92 -0
- package/docs/providers/deepseek.md +146 -0
- package/docs/providers/ds4.md +309 -0
- package/docs/providers/elevenlabs.md +130 -0
- package/docs/providers/fal.md +240 -0
- package/docs/providers/fireworks.md +144 -0
- package/docs/providers/github-copilot.md +257 -0
- package/docs/providers/gmi.md +92 -0
- package/docs/providers/google.md +472 -0
- package/docs/providers/gradium.md +123 -0
- package/docs/providers/groq.md +171 -0
- package/docs/providers/huggingface.md +235 -0
- package/docs/providers/index.md +105 -0
- package/docs/providers/inferrs.md +272 -0
- package/docs/providers/inworld.md +120 -0
- package/docs/providers/kilocode.md +135 -0
- package/docs/providers/litellm.md +234 -0
- package/docs/providers/lmstudio.md +224 -0
- package/docs/providers/minimax.md +518 -0
- package/docs/providers/mistral.md +235 -0
- package/docs/providers/models.md +64 -0
- package/docs/providers/moonshot.md +413 -0
- package/docs/providers/novita.md +92 -0
- package/docs/providers/nvidia.md +208 -0
- package/docs/providers/ollama-cloud.md +115 -0
- package/docs/providers/ollama.md +1225 -0
- package/docs/providers/openai.md +1091 -0
- package/docs/providers/opencode-go.md +123 -0
- package/docs/providers/opencode.md +149 -0
- package/docs/providers/openrouter.md +390 -0
- package/docs/providers/perplexity-provider.md +123 -0
- package/docs/providers/pixverse.md +165 -0
- package/docs/providers/qianfan.md +132 -0
- package/docs/providers/qwen-oauth.md +115 -0
- package/docs/providers/qwen.md +364 -0
- package/docs/providers/runway.md +103 -0
- package/docs/providers/senseaudio.md +68 -0
- package/docs/providers/sglang.md +161 -0
- package/docs/providers/stepfun.md +229 -0
- package/docs/providers/synthetic.md +154 -0
- package/docs/providers/tencent.md +130 -0
- package/docs/providers/together.md +140 -0
- package/docs/providers/venice.md +312 -0
- package/docs/providers/vercel-ai-gateway.md +128 -0
- package/docs/providers/vllm.md +407 -0
- package/docs/providers/volcengine.md +199 -0
- package/docs/providers/vydra.md +180 -0
- package/docs/providers/xai.md +571 -0
- package/docs/providers/xiaomi.md +286 -0
- package/docs/providers/zai.md +224 -0
- package/docs/refactor/access.md +9 -0
- package/docs/refactor/acp.md +298 -0
- package/docs/refactor/canvas.md +131 -0
- package/docs/refactor/database-first.md +2263 -0
- package/docs/refactor/ingress-core.md +341 -0
- package/docs/reference/AGENTS.default.md +131 -0
- package/docs/reference/RELEASING.md +844 -0
- package/docs/reference/api-usage-costs.md +208 -0
- package/docs/reference/application-modernization-plan.md +208 -0
- package/docs/reference/code-mode.md +1058 -0
- package/docs/reference/credits.md +33 -0
- package/docs/reference/device-models.md +50 -0
- package/docs/reference/full-release-validation.md +206 -0
- package/docs/reference/memory-config.md +630 -0
- package/docs/reference/prompt-caching.md +358 -0
- package/docs/reference/release-performance-sweep.md +347 -0
- package/docs/reference/rich-output-protocol.md +93 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secret-placeholder-conventions.md +33 -0
- package/docs/reference/secretref-credential-surface.md +163 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +691 -0
- package/docs/reference/session-management-compaction.md +474 -0
- package/docs/reference/templates/AGENTS.dev.md +90 -0
- package/docs/reference/templates/AGENTS.md +227 -0
- package/docs/reference/templates/BOOT.md +16 -0
- package/docs/reference/templates/BOOTSTRAP.md +66 -0
- package/docs/reference/templates/HEARTBEAT.md +24 -0
- package/docs/reference/templates/IDENTITY.dev.md +52 -0
- package/docs/reference/templates/IDENTITY.md +34 -0
- package/docs/reference/templates/SOUL.dev.md +82 -0
- package/docs/reference/templates/SOUL.md +49 -0
- package/docs/reference/templates/TOOLS.dev.md +29 -0
- package/docs/reference/templates/TOOLS.md +51 -0
- package/docs/reference/templates/USER.dev.md +23 -0
- package/docs/reference/templates/USER.md +28 -0
- package/docs/reference/test.md +248 -0
- package/docs/reference/token-use.md +246 -0
- package/docs/reference/transcript-hygiene.md +226 -0
- package/docs/reference/wizard.md +252 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +101 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +170 -0
- package/docs/security/incident-response.md +59 -0
- package/docs/security/network-proxy.md +268 -0
- package/docs/snippets/plugin-publish/minimal-openclaw.plugin.json +12 -0
- package/docs/snippets/plugin-publish/minimal-package.json +16 -0
- package/docs/specs/claw-supervisor.md +247 -0
- package/docs/start/bootstrapping.md +49 -0
- package/docs/start/docs-directory.md +69 -0
- package/docs/start/getting-started.md +152 -0
- package/docs/start/hubs.md +201 -0
- package/docs/start/lore.md +223 -0
- package/docs/start/onboarding-overview.md +72 -0
- package/docs/start/onboarding.md +98 -0
- package/docs/start/openclaw.md +246 -0
- package/docs/start/quickstart.md +25 -0
- package/docs/start/setup.md +178 -0
- package/docs/start/showcase.md +371 -0
- package/docs/start/wizard-cli-automation.md +232 -0
- package/docs/start/wizard-cli-reference.md +331 -0
- package/docs/start/wizard.md +142 -0
- package/docs/style.css +137 -0
- package/docs/tools/acp-agents-setup.md +356 -0
- package/docs/tools/acp-agents.md +865 -0
- package/docs/tools/agent-send.md +130 -0
- package/docs/tools/apply-patch.md +64 -0
- package/docs/tools/brave-search.md +139 -0
- package/docs/tools/browser-control.md +405 -0
- package/docs/tools/browser-linux-troubleshooting.md +173 -0
- package/docs/tools/browser-login.md +77 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +219 -0
- package/docs/tools/browser.md +866 -0
- package/docs/tools/btw.md +159 -0
- package/docs/tools/capability-cookbook.md +12 -0
- package/docs/tools/clawhub.md +5 -0
- package/docs/tools/code-execution.md +173 -0
- package/docs/tools/creating-skills.md +271 -0
- package/docs/tools/diffs.md +527 -0
- package/docs/tools/duckduckgo-search.md +109 -0
- package/docs/tools/elevated.md +128 -0
- package/docs/tools/exa-search.md +152 -0
- package/docs/tools/exec-approvals-advanced.md +457 -0
- package/docs/tools/exec-approvals.md +520 -0
- package/docs/tools/exec.md +294 -0
- package/docs/tools/firecrawl.md +155 -0
- package/docs/tools/gemini-search.md +114 -0
- package/docs/tools/goal.md +217 -0
- package/docs/tools/grok-search.md +129 -0
- package/docs/tools/image-generation.md +538 -0
- package/docs/tools/index.md +176 -0
- package/docs/tools/kimi-search.md +105 -0
- package/docs/tools/llm-task.md +137 -0
- package/docs/tools/lobster.md +365 -0
- package/docs/tools/loop-detection.md +154 -0
- package/docs/tools/media-overview.md +161 -0
- package/docs/tools/minimax-search.md +102 -0
- package/docs/tools/multi-agent-sandbox-tools.md +409 -0
- package/docs/tools/music-generation.md +372 -0
- package/docs/tools/ollama-search.md +153 -0
- package/docs/tools/parallel-search.md +154 -0
- package/docs/tools/pdf.md +213 -0
- package/docs/tools/permission-modes.md +111 -0
- package/docs/tools/perplexity-search.md +220 -0
- package/docs/tools/plugin.md +378 -0
- package/docs/tools/reactions.md +100 -0
- package/docs/tools/searxng-search.md +141 -0
- package/docs/tools/skill-workshop.md +283 -0
- package/docs/tools/skills-config.md +457 -0
- package/docs/tools/skills.md +591 -0
- package/docs/tools/slash-commands.md +518 -0
- package/docs/tools/steer.md +77 -0
- package/docs/tools/subagents.md +652 -0
- package/docs/tools/tavily.md +162 -0
- package/docs/tools/thinking.md +142 -0
- package/docs/tools/tokenjuice.md +84 -0
- package/docs/tools/tool-search.md +269 -0
- package/docs/tools/trajectory.md +229 -0
- package/docs/tools/tts.md +1013 -0
- package/docs/tools/video-generation.md +555 -0
- package/docs/tools/web-fetch.md +210 -0
- package/docs/tools/web.md +476 -0
- package/docs/tts.md +11 -0
- package/docs/vps.md +139 -0
- package/docs/web/control-ui.md +530 -0
- package/docs/web/dashboard.md +107 -0
- package/docs/web/index.md +133 -0
- package/docs/web/tui.md +258 -0
- package/docs/web/webchat.md +102 -0
- package/npm-shrinkwrap.json +3485 -0
- package/openclaw.mjs +661 -0
- package/package.json +1971 -0
- package/patches/.gitkeep +0 -0
- package/patches/@agentclientprotocol__claude-agent-acp@0.39.0.patch +40 -0
- package/pnpm-workspace.yaml +124 -0
- package/scripts/crabbox-wrapper.mjs +2470 -0
- package/scripts/lib/official-external-channel-catalog.json +570 -0
- package/scripts/lib/official-external-plugin-catalog.json +284 -0
- package/scripts/lib/official-external-provider-catalog.json +158 -0
- package/scripts/lib/package-dist-imports.mjs +174 -0
- package/scripts/npm-runner.mjs +95 -0
- package/scripts/postinstall-bundled-plugins.mjs +978 -0
- package/scripts/preinstall-package-manager-warning.mjs +74 -0
- package/scripts/prepare-git-hooks.mjs +73 -0
- package/scripts/windows-cmd-helpers.mjs +29 -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/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +78 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +143 -0
- package/skills/diagram-maker/SKILL.md +53 -0
- package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
- package/skills/diagram-maker/references/svg-template.md +112 -0
- package/skills/discord/SKILL.md +136 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +47 -0
- package/skills/gh-issues/SKILL.md +213 -0
- package/skills/gifgrep/SKILL.md +85 -0
- package/skills/github/SKILL.md +84 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +105 -0
- package/skills/himalaya/SKILL.md +80 -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/meme-maker/SKILL.md +42 -0
- package/skills/meme-maker/references/templates.json +358 -0
- package/skills/meme-maker/scripts/meme.mjs +398 -0
- package/skills/model-usage/SKILL.md +71 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +319 -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 +143 -0
- package/skills/node-inspect-debugger/SKILL.md +85 -0
- package/skills/notion/SKILL.md +150 -0
- package/skills/obsidian/SKILL.md +119 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +71 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +126 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +198 -0
- package/skills/pyproject.toml +10 -0
- package/skills/python-debugpy/SKILL.md +73 -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 +78 -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 +144 -0
- package/skills/skill-creator/scripts/quick_validate.py +169 -0
- package/skills/skill-creator/scripts/test_package_skill.py +199 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
- package/skills/slack/SKILL.md +78 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spike/SKILL.md +51 -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 +91 -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 +87 -0
- package/skills/xurl/SKILL.md +120 -0
- package/src/agents/templates/HEARTBEAT.md +5 -0
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Typed workflow runtime for OpenClaw with resumable approval gates."
|
|
3
|
+
title: Lobster
|
|
4
|
+
read_when:
|
|
5
|
+
- You want deterministic multi-step workflows with explicit approvals
|
|
6
|
+
- You need to resume a workflow without re-running earlier steps
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
Lobster is a workflow shell that lets OpenClaw run multi-step tool sequences as a single, deterministic operation with explicit approval checkpoints.
|
|
10
|
+
|
|
11
|
+
Lobster is one authoring layer above detached background work. For flow orchestration above individual tasks, see [Task Flow](/automation/taskflow) (`openclaw tasks flow`). For the task activity ledger, see [`openclaw tasks`](/automation/tasks).
|
|
12
|
+
|
|
13
|
+
## Hook
|
|
14
|
+
|
|
15
|
+
Your assistant can build the tools that manage itself. Ask for a workflow, and 30 minutes later you have a CLI plus pipelines that run as one call. Lobster is the missing piece: deterministic pipelines, explicit approvals, and resumable state.
|
|
16
|
+
|
|
17
|
+
## Why
|
|
18
|
+
|
|
19
|
+
Today, complex workflows require many back-and-forth tool calls. Each call costs tokens, and the LLM has to orchestrate every step. Lobster moves that orchestration into a typed runtime:
|
|
20
|
+
|
|
21
|
+
- **One call instead of many**: OpenClaw runs one Lobster tool call and gets a structured result.
|
|
22
|
+
- **Approvals built in**: Side effects (send email, post comment) halt the workflow until explicitly approved.
|
|
23
|
+
- **Resumable**: Halted workflows return a token; approve and resume without re-running everything.
|
|
24
|
+
|
|
25
|
+
## Why a DSL instead of plain programs?
|
|
26
|
+
|
|
27
|
+
Lobster is intentionally small. The goal is not "a new language," it's a predictable, AI-friendly pipeline spec with first-class approvals and resume tokens.
|
|
28
|
+
|
|
29
|
+
- **Approve/resume is built in**: A normal program can prompt a human, but it can't _pause and resume_ with a durable token without you inventing that runtime yourself.
|
|
30
|
+
- **Determinism + auditability**: Pipelines are data, so they're easy to log, diff, replay, and review.
|
|
31
|
+
- **Constrained surface for AI**: A tiny grammar + JSON piping reduces "creative" code paths and makes validation realistic.
|
|
32
|
+
- **Safety policy baked in**: Timeouts, output caps, sandbox checks, and allowlists are enforced by the runtime, not each script.
|
|
33
|
+
- **Still programmable**: Each step can call any CLI or script. If you want JS/TS, generate `.lobster` files from code.
|
|
34
|
+
|
|
35
|
+
## How it works
|
|
36
|
+
|
|
37
|
+
OpenClaw runs Lobster workflows **in-process** using an embedded runner. No external CLI subprocess is spawned; the workflow engine executes inside the gateway process and returns a JSON envelope directly.
|
|
38
|
+
If the pipeline pauses for approval, the tool returns a `resumeToken` so you can continue later.
|
|
39
|
+
|
|
40
|
+
## Pattern: small CLI + JSON pipes + approvals
|
|
41
|
+
|
|
42
|
+
Build tiny commands that speak JSON, then chain them into a single Lobster call. (Example command names below - swap in your own.)
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
inbox list --json
|
|
46
|
+
inbox categorize --json
|
|
47
|
+
inbox apply --json
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"action": "run",
|
|
53
|
+
"pipeline": "exec --json --shell 'inbox list --json' | exec --stdin json --shell 'inbox categorize --json' | exec --stdin json --shell 'inbox apply --json' | approve --preview-from-stdin --limit 5 --prompt 'Apply changes?'",
|
|
54
|
+
"timeoutMs": 30000
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
If the pipeline requests approval, resume with the token:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"action": "resume",
|
|
63
|
+
"token": "<resumeToken>",
|
|
64
|
+
"approve": true
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
AI triggers the workflow; Lobster executes the steps. Approval gates keep side effects explicit and auditable.
|
|
69
|
+
|
|
70
|
+
Example: map input items into tool calls:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
gog.gmail.search --query 'newer_than:1d' \
|
|
74
|
+
| openclaw.invoke --tool message --action send --each --item-key message --args-json '{"provider":"telegram","to":"..."}'
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## JSON-only LLM steps (llm-task)
|
|
78
|
+
|
|
79
|
+
For workflows that need a **structured LLM step**, enable the optional
|
|
80
|
+
`llm-task` plugin tool and call it from Lobster. This keeps the workflow
|
|
81
|
+
deterministic while still letting you classify/summarize/draft with a model.
|
|
82
|
+
|
|
83
|
+
Enable the tool:
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"plugins": {
|
|
88
|
+
"entries": {
|
|
89
|
+
"llm-task": { "enabled": true }
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"agents": {
|
|
93
|
+
"list": [
|
|
94
|
+
{
|
|
95
|
+
"id": "main",
|
|
96
|
+
"tools": { "alsoAllow": ["llm-task"] }
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Important limitation: embedded Lobster vs `openclaw.invoke`
|
|
104
|
+
|
|
105
|
+
The bundled Lobster plugin runs workflows **in-process** inside the gateway. In that embedded mode, `openclaw.invoke` does **not** automatically inherit a gateway URL/auth context for nested OpenClaw CLI tool calls.
|
|
106
|
+
|
|
107
|
+
That means this pattern is **not currently reliable in the embedded runner**:
|
|
108
|
+
|
|
109
|
+
```lobster
|
|
110
|
+
openclaw.invoke --tool llm-task --action json --args-json '{ ... }'
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Use the example below only when running the **standalone Lobster CLI** in an environment where `openclaw.invoke` is already configured with the correct gateway/auth context.
|
|
114
|
+
|
|
115
|
+
Use it in a standalone Lobster CLI pipeline:
|
|
116
|
+
|
|
117
|
+
```lobster
|
|
118
|
+
openclaw.invoke --tool llm-task --action json --args-json '{
|
|
119
|
+
"prompt": "Given the input email, return intent and draft.",
|
|
120
|
+
"thinking": "low",
|
|
121
|
+
"input": { "subject": "Hello", "body": "Can you help?" },
|
|
122
|
+
"schema": {
|
|
123
|
+
"type": "object",
|
|
124
|
+
"properties": {
|
|
125
|
+
"intent": { "type": "string" },
|
|
126
|
+
"draft": { "type": "string" }
|
|
127
|
+
},
|
|
128
|
+
"required": ["intent", "draft"],
|
|
129
|
+
"additionalProperties": false
|
|
130
|
+
}
|
|
131
|
+
}'
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
If you are using the embedded Lobster plugin today, prefer either:
|
|
135
|
+
|
|
136
|
+
- a direct `llm-task` tool call outside Lobster, or
|
|
137
|
+
- non-`openclaw.invoke` steps inside the Lobster pipeline until a supported embedded bridge is added.
|
|
138
|
+
|
|
139
|
+
See [LLM Task](/tools/llm-task) for details and configuration options.
|
|
140
|
+
|
|
141
|
+
## Workflow files (.lobster)
|
|
142
|
+
|
|
143
|
+
Lobster can run YAML/JSON workflow files with `name`, `args`, `steps`, `env`, `condition`, and `approval` fields. In OpenClaw tool calls, set `pipeline` to the file path.
|
|
144
|
+
|
|
145
|
+
```yaml
|
|
146
|
+
name: inbox-triage
|
|
147
|
+
args:
|
|
148
|
+
tag:
|
|
149
|
+
default: "family"
|
|
150
|
+
steps:
|
|
151
|
+
- id: collect
|
|
152
|
+
command: inbox list --json
|
|
153
|
+
- id: categorize
|
|
154
|
+
command: inbox categorize --json
|
|
155
|
+
stdin: $collect.stdout
|
|
156
|
+
- id: approve
|
|
157
|
+
command: inbox apply --approve
|
|
158
|
+
stdin: $categorize.stdout
|
|
159
|
+
approval: required
|
|
160
|
+
- id: execute
|
|
161
|
+
command: inbox apply --execute
|
|
162
|
+
stdin: $categorize.stdout
|
|
163
|
+
condition: $approve.approved
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Notes:
|
|
167
|
+
|
|
168
|
+
- `stdin: $step.stdout` and `stdin: $step.json` pass a prior step's output.
|
|
169
|
+
- `condition` (or `when`) can gate steps on `$step.approved`.
|
|
170
|
+
|
|
171
|
+
## Install Lobster
|
|
172
|
+
|
|
173
|
+
Bundled Lobster workflows run in-process; no separate `lobster` binary is required. The embedded runner ships with the Lobster plugin.
|
|
174
|
+
|
|
175
|
+
If you need the standalone Lobster CLI for development or external pipelines, install it from the [Lobster repo](https://github.com/openclaw/lobster) and ensure `lobster` is on `PATH`.
|
|
176
|
+
|
|
177
|
+
## Enable the tool
|
|
178
|
+
|
|
179
|
+
Lobster is an **optional** plugin tool (not enabled by default).
|
|
180
|
+
|
|
181
|
+
Recommended (additive, safe):
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"tools": {
|
|
186
|
+
"alsoAllow": ["lobster"]
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Or per-agent:
|
|
192
|
+
|
|
193
|
+
```json
|
|
194
|
+
{
|
|
195
|
+
"agents": {
|
|
196
|
+
"list": [
|
|
197
|
+
{
|
|
198
|
+
"id": "main",
|
|
199
|
+
"tools": {
|
|
200
|
+
"alsoAllow": ["lobster"]
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Avoid using `tools.allow: ["lobster"]` unless you intend to run in restrictive allowlist mode.
|
|
209
|
+
|
|
210
|
+
<Note>
|
|
211
|
+
Allowlists are opt-in for optional plugins. `alsoAllow` enables only the named optional plugin tools while preserving the normal core tool set. To restrict core tools, use `tools.allow` with the core tools or groups you want.
|
|
212
|
+
</Note>
|
|
213
|
+
|
|
214
|
+
## Example: Email triage
|
|
215
|
+
|
|
216
|
+
Without Lobster:
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
User: "Check my email and draft replies"
|
|
220
|
+
→ openclaw calls gmail.list
|
|
221
|
+
→ LLM summarizes
|
|
222
|
+
→ User: "draft replies to #2 and #5"
|
|
223
|
+
→ LLM drafts
|
|
224
|
+
→ User: "send #2"
|
|
225
|
+
→ openclaw calls gmail.send
|
|
226
|
+
(repeat daily, no memory of what was triaged)
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
With Lobster:
|
|
230
|
+
|
|
231
|
+
```json
|
|
232
|
+
{
|
|
233
|
+
"action": "run",
|
|
234
|
+
"pipeline": "email.triage --limit 20",
|
|
235
|
+
"timeoutMs": 30000
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Returns a JSON envelope (truncated):
|
|
240
|
+
|
|
241
|
+
```json
|
|
242
|
+
{
|
|
243
|
+
"ok": true,
|
|
244
|
+
"status": "needs_approval",
|
|
245
|
+
"output": [{ "summary": "5 need replies, 2 need action" }],
|
|
246
|
+
"requiresApproval": {
|
|
247
|
+
"type": "approval_request",
|
|
248
|
+
"prompt": "Send 2 draft replies?",
|
|
249
|
+
"items": [],
|
|
250
|
+
"resumeToken": "..."
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
User approves → resume:
|
|
256
|
+
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"action": "resume",
|
|
260
|
+
"token": "<resumeToken>",
|
|
261
|
+
"approve": true
|
|
262
|
+
}
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
One workflow. Deterministic. Safe.
|
|
266
|
+
|
|
267
|
+
## Tool parameters
|
|
268
|
+
|
|
269
|
+
### `run`
|
|
270
|
+
|
|
271
|
+
Run a pipeline in tool mode.
|
|
272
|
+
|
|
273
|
+
```json
|
|
274
|
+
{
|
|
275
|
+
"action": "run",
|
|
276
|
+
"pipeline": "gog.gmail.search --query 'newer_than:1d' | email.triage",
|
|
277
|
+
"cwd": "workspace",
|
|
278
|
+
"timeoutMs": 30000,
|
|
279
|
+
"maxStdoutBytes": 512000
|
|
280
|
+
}
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
Run a workflow file with args:
|
|
284
|
+
|
|
285
|
+
```json
|
|
286
|
+
{
|
|
287
|
+
"action": "run",
|
|
288
|
+
"pipeline": "/path/to/inbox-triage.lobster",
|
|
289
|
+
"argsJson": "{\"tag\":\"family\"}"
|
|
290
|
+
}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### `resume`
|
|
294
|
+
|
|
295
|
+
Continue a halted workflow after approval.
|
|
296
|
+
|
|
297
|
+
```json
|
|
298
|
+
{
|
|
299
|
+
"action": "resume",
|
|
300
|
+
"token": "<resumeToken>",
|
|
301
|
+
"approve": true
|
|
302
|
+
}
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### Optional inputs
|
|
306
|
+
|
|
307
|
+
- `cwd`: Relative working directory for the pipeline (must stay within the gateway working directory).
|
|
308
|
+
- `timeoutMs`: Abort the workflow if it exceeds this duration (default: 20000).
|
|
309
|
+
- `maxStdoutBytes`: Abort the workflow if output exceeds this size (default: 512000).
|
|
310
|
+
- `argsJson`: JSON string passed to `lobster run --args-json` (workflow files only).
|
|
311
|
+
|
|
312
|
+
## Output envelope
|
|
313
|
+
|
|
314
|
+
Lobster returns a JSON envelope with one of three statuses:
|
|
315
|
+
|
|
316
|
+
- `ok` → finished successfully
|
|
317
|
+
- `needs_approval` → paused; `requiresApproval.resumeToken` is required to resume
|
|
318
|
+
- `cancelled` → explicitly denied or cancelled
|
|
319
|
+
|
|
320
|
+
The tool surfaces the envelope in both `content` (pretty JSON) and `details` (raw object).
|
|
321
|
+
|
|
322
|
+
## Approvals
|
|
323
|
+
|
|
324
|
+
If `requiresApproval` is present, inspect the prompt and decide:
|
|
325
|
+
|
|
326
|
+
- `approve: true` → resume and continue side effects
|
|
327
|
+
- `approve: false` → cancel and finalize the workflow
|
|
328
|
+
|
|
329
|
+
Use `approve --preview-from-stdin --limit N` to attach a JSON preview to approval requests without custom jq/heredoc glue. Resume tokens are now compact: Lobster stores workflow resume state under its state dir and hands back a small token key.
|
|
330
|
+
|
|
331
|
+
## OpenProse
|
|
332
|
+
|
|
333
|
+
OpenProse pairs well with Lobster: use `/prose` to orchestrate multi-agent prep, then run a Lobster pipeline for deterministic approvals. If a Prose program needs Lobster, allow the `lobster` tool for sub-agents via `tools.subagents.tools`. See [OpenProse](/prose).
|
|
334
|
+
|
|
335
|
+
## Safety
|
|
336
|
+
|
|
337
|
+
- **Local in-process only** - workflows execute inside the gateway process; no network calls from the plugin itself.
|
|
338
|
+
- **No secrets** - Lobster doesn't manage OAuth; it calls OpenClaw tools that do.
|
|
339
|
+
- **Sandbox-aware** - disabled when the tool context is sandboxed.
|
|
340
|
+
- **Hardened** - timeouts and output caps enforced by the embedded runner.
|
|
341
|
+
|
|
342
|
+
## Troubleshooting
|
|
343
|
+
|
|
344
|
+
- **`lobster timed out`** → increase `timeoutMs`, or split a long pipeline.
|
|
345
|
+
- **`lobster output exceeded maxStdoutBytes`** → raise `maxStdoutBytes` or reduce output size.
|
|
346
|
+
- **`lobster returned invalid JSON`** → ensure the pipeline runs in tool mode and prints only JSON.
|
|
347
|
+
- **`lobster failed`** → check gateway logs for the embedded runner error details.
|
|
348
|
+
|
|
349
|
+
## Learn more
|
|
350
|
+
|
|
351
|
+
- [Plugins](/tools/plugin)
|
|
352
|
+
- [Plugin tool authoring](/plugins/building-plugins#registering-agent-tools)
|
|
353
|
+
|
|
354
|
+
## Case study: community workflows
|
|
355
|
+
|
|
356
|
+
One public example: a "second brain" CLI + Lobster pipelines that manage three Markdown vaults (personal, partner, shared). The CLI emits JSON for stats, inbox listings, and stale scans; Lobster chains those commands into workflows like `weekly-review`, `inbox-triage`, `memory-consolidation`, and `shared-task-sync`, each with approval gates. AI handles judgment (categorization) when available and falls back to deterministic rules when not.
|
|
357
|
+
|
|
358
|
+
- Thread: [https://x.com/plattenschieber/status/2014508656335770033](https://x.com/plattenschieber/status/2014508656335770033)
|
|
359
|
+
- Repo: [https://github.com/bloomedai/brain-cli](https://github.com/bloomedai/brain-cli)
|
|
360
|
+
|
|
361
|
+
## Related
|
|
362
|
+
|
|
363
|
+
- [Automation](/automation) - scheduling Lobster workflows
|
|
364
|
+
- [Automation Overview](/automation) - all automation mechanisms
|
|
365
|
+
- [Tools Overview](/tools) - all available agent tools
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "How to enable and tune guardrails that detect repetitive tool-call loops"
|
|
3
|
+
title: "Tool-loop detection"
|
|
4
|
+
read_when:
|
|
5
|
+
- A user reports agents getting stuck repeating tool calls
|
|
6
|
+
- You need to tune repetitive-call protection
|
|
7
|
+
- You are editing agent tool/runtime policies
|
|
8
|
+
- You hit `compaction_loop_persisted` aborts after a context-overflow retry
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
OpenClaw has two cooperating guardrails for repetitive tool-call patterns:
|
|
12
|
+
|
|
13
|
+
1. **Loop detection** (`tools.loopDetection.enabled`) — disabled by default. Watches the rolling tool-call history for repeated patterns and unknown-tool retries.
|
|
14
|
+
2. **Post-compaction guard** (`tools.loopDetection.postCompactionGuard`) — enabled by default unless `tools.loopDetection.enabled` is explicitly `false`. Arms after every compaction-retry and aborts the run when the agent emits the same `(tool, args, result)` triple within the window.
|
|
15
|
+
|
|
16
|
+
Both are configured under the same `tools.loopDetection` block, but the post-compaction guard runs whenever the master switch is not explicitly off. Set `tools.loopDetection.enabled: false` to silence both surfaces.
|
|
17
|
+
|
|
18
|
+
## Why this exists
|
|
19
|
+
|
|
20
|
+
- Detect repetitive sequences that do not make progress.
|
|
21
|
+
- Detect high-frequency no-result loops (same tool, same inputs, repeated errors).
|
|
22
|
+
- Detect specific repeated-call patterns for known polling tools.
|
|
23
|
+
- Prevent context-overflow then compaction then same-loop cycles from running indefinitely.
|
|
24
|
+
|
|
25
|
+
## Configuration block
|
|
26
|
+
|
|
27
|
+
Global defaults, with every documented field shown:
|
|
28
|
+
|
|
29
|
+
```json5
|
|
30
|
+
{
|
|
31
|
+
tools: {
|
|
32
|
+
loopDetection: {
|
|
33
|
+
enabled: false, // master switch for the rolling-history detectors
|
|
34
|
+
historySize: 30,
|
|
35
|
+
warningThreshold: 10,
|
|
36
|
+
criticalThreshold: 20,
|
|
37
|
+
unknownToolThreshold: 10,
|
|
38
|
+
globalCircuitBreakerThreshold: 30,
|
|
39
|
+
detectors: {
|
|
40
|
+
genericRepeat: true,
|
|
41
|
+
knownPollNoProgress: true,
|
|
42
|
+
pingPong: true,
|
|
43
|
+
},
|
|
44
|
+
postCompactionGuard: {
|
|
45
|
+
windowSize: 3, // armed after compaction-retry; runs unless enabled is explicitly false
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Per-agent override (optional):
|
|
53
|
+
|
|
54
|
+
```json5
|
|
55
|
+
{
|
|
56
|
+
agents: {
|
|
57
|
+
list: [
|
|
58
|
+
{
|
|
59
|
+
id: "safe-runner",
|
|
60
|
+
tools: {
|
|
61
|
+
loopDetection: {
|
|
62
|
+
enabled: true,
|
|
63
|
+
warningThreshold: 8,
|
|
64
|
+
criticalThreshold: 16,
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Field behavior
|
|
74
|
+
|
|
75
|
+
| Field | Default | Effect |
|
|
76
|
+
| -------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
77
|
+
| `enabled` | `false` | Master switch for the rolling-history detectors. Setting `false` also disables the post-compaction guard. |
|
|
78
|
+
| `historySize` | `30` | Number of recent tool calls kept for analysis. |
|
|
79
|
+
| `warningThreshold` | `10` | Threshold before a pattern is classified as warning-only. |
|
|
80
|
+
| `criticalThreshold` | `20` | Threshold for blocking repetitive no-progress loop patterns. |
|
|
81
|
+
| `unknownToolThreshold` | `10` | Block repeated calls to the same unavailable tool after this many misses. |
|
|
82
|
+
| `globalCircuitBreakerThreshold` | `30` | Global no-progress breaker threshold across all detectors. |
|
|
83
|
+
| `detectors.genericRepeat` | `true` | Warns on repeated same-tool + same-params patterns and blocks when the same calls also return identical outcomes. |
|
|
84
|
+
| `detectors.knownPollNoProgress` | `true` | Detects known polling-like patterns with no state change. |
|
|
85
|
+
| `detectors.pingPong` | `true` | Detects alternating ping-pong patterns. |
|
|
86
|
+
| `postCompactionGuard.windowSize` | `3` | Number of post-compaction tool calls during which the guard stays armed and the count of identical triples that aborts the run. |
|
|
87
|
+
|
|
88
|
+
For `exec`, no-progress checks compare stable command outcomes and ignore volatile runtime metadata such as duration, PID, session ID, and working directory. When a run id is available, recent tool-call history is evaluated only within that run so scheduled heartbeat cycles and fresh runs do not inherit stale loop counts from earlier runs.
|
|
89
|
+
|
|
90
|
+
## Recommended setup
|
|
91
|
+
|
|
92
|
+
- For smaller models, set `enabled: true` and leave the thresholds at their defaults. Flagship models rarely need rolling-history detection and can leave the master switch at `false` while still benefiting from the post-compaction guard.
|
|
93
|
+
- Keep thresholds ordered as `warningThreshold < criticalThreshold < globalCircuitBreakerThreshold`.
|
|
94
|
+
- If false positives occur:
|
|
95
|
+
- Raise `warningThreshold` and/or `criticalThreshold`.
|
|
96
|
+
- Optionally raise `globalCircuitBreakerThreshold`.
|
|
97
|
+
- Disable only the specific detector causing issues (`detectors.<name>: false`).
|
|
98
|
+
- Reduce `historySize` for less strict historical context.
|
|
99
|
+
- To disable everything (including the post-compaction guard), set `tools.loopDetection.enabled: false` explicitly.
|
|
100
|
+
|
|
101
|
+
## Post-compaction guard
|
|
102
|
+
|
|
103
|
+
When the runner completes a compaction-retry after a context-overflow, it arms a short-window guard that watches the next few tool calls. If the agent emits the same `(toolName, argsHash, resultHash)` triple multiple times within the window, the guard concludes that compaction did not break the loop and aborts the run with a `compaction_loop_persisted` error.
|
|
104
|
+
|
|
105
|
+
The guard is gated by the master `tools.loopDetection.enabled` flag with one twist: it stays **enabled when the flag is unset or `true`** and only deactivates when the flag is explicitly `false`. This is intentional. The guard exists to escape compaction loops that would otherwise burn unbounded tokens, so a no-config user still gets the protection.
|
|
106
|
+
|
|
107
|
+
```json5
|
|
108
|
+
{
|
|
109
|
+
tools: {
|
|
110
|
+
loopDetection: {
|
|
111
|
+
// master switch; set false to disable the guard along with the rolling detectors
|
|
112
|
+
enabled: true,
|
|
113
|
+
postCompactionGuard: {
|
|
114
|
+
windowSize: 3, // default
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
- Lower `windowSize` is stricter (fewer attempts before abort).
|
|
122
|
+
- Higher `windowSize` gives the agent more recovery attempts.
|
|
123
|
+
- The guard never aborts when results are changing, only when results are byte-identical across the window.
|
|
124
|
+
- It is intentionally narrow: it fires only in the immediate aftermath of a compaction-retry.
|
|
125
|
+
|
|
126
|
+
<Note>
|
|
127
|
+
The post-compaction guard runs whenever the master flag is not explicitly `false`, even if you never wrote a `tools.loopDetection` block. To verify, look for `post-compaction guard armed for N attempts` in the gateway log immediately after a compaction event.
|
|
128
|
+
</Note>
|
|
129
|
+
|
|
130
|
+
## Logs and expected behavior
|
|
131
|
+
|
|
132
|
+
When a loop is detected, OpenClaw reports a loop event and either dampens or blocks the next tool-cycle depending on severity. This protects users from runaway token spend and lockups while preserving normal tool access.
|
|
133
|
+
|
|
134
|
+
- Warnings come first.
|
|
135
|
+
- Suppression follows when patterns persist past the warning threshold.
|
|
136
|
+
- Critical thresholds block the next tool-cycle and surface a clear loop-detection reason in the run record.
|
|
137
|
+
- The post-compaction guard emits `compaction_loop_persisted` errors with the offending tool name and identical-call count.
|
|
138
|
+
|
|
139
|
+
## Related
|
|
140
|
+
|
|
141
|
+
<CardGroup cols={2}>
|
|
142
|
+
<Card title="Exec approvals" href="/tools/exec-approvals" icon="shield">
|
|
143
|
+
Allow/deny policy for shell execution.
|
|
144
|
+
</Card>
|
|
145
|
+
<Card title="Thinking levels" href="/tools/thinking" icon="brain">
|
|
146
|
+
Reasoning effort levels and provider-policy interaction.
|
|
147
|
+
</Card>
|
|
148
|
+
<Card title="Sub-agents" href="/tools/subagents" icon="users">
|
|
149
|
+
Spawning isolated agents to bound runaway behavior.
|
|
150
|
+
</Card>
|
|
151
|
+
<Card title="Configuration reference" href="/gateway/configuration-reference" icon="gear">
|
|
152
|
+
Full `tools.loopDetection` schema and merging semantics.
|
|
153
|
+
</Card>
|
|
154
|
+
</CardGroup>
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Image, video, music, speech, and media-understanding capabilities at a glance"
|
|
3
|
+
read_when:
|
|
4
|
+
- Looking for an overview of OpenClaw's media capabilities
|
|
5
|
+
- Deciding which media provider to configure
|
|
6
|
+
- Understanding how async media generation works
|
|
7
|
+
title: "Media overview"
|
|
8
|
+
sidebarTitle: "Media overview"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
OpenClaw generates images, videos, and music, understands inbound media
|
|
12
|
+
(images, audio, video), and speaks replies aloud with text-to-speech. All
|
|
13
|
+
media capabilities are tool-driven: the agent decides when to use them based
|
|
14
|
+
on the conversation, and each tool only appears when at least one backing
|
|
15
|
+
provider is configured.
|
|
16
|
+
|
|
17
|
+
Live speech uses the Talk session contract instead of the one-shot media tool
|
|
18
|
+
path. Talk has three modes: provider-native `realtime`, local or streaming
|
|
19
|
+
`stt-tts`, and `transcription` for observe-only speech capture. Those modes
|
|
20
|
+
share provider catalogs, event envelopes, and cancellation semantics with
|
|
21
|
+
telephony, meetings, browser realtime, and native push-to-talk clients.
|
|
22
|
+
|
|
23
|
+
## Capabilities
|
|
24
|
+
|
|
25
|
+
<CardGroup cols={2}>
|
|
26
|
+
<Card title="Image generation" href="/tools/image-generation" icon="image">
|
|
27
|
+
Create and edit images from text prompts or reference images via
|
|
28
|
+
`image_generate`. Async in chat sessions — runs in the background and
|
|
29
|
+
posts the result when ready.
|
|
30
|
+
</Card>
|
|
31
|
+
<Card title="Video generation" href="/tools/video-generation" icon="video">
|
|
32
|
+
Text-to-video, image-to-video, and video-to-video via `video_generate`.
|
|
33
|
+
Async — runs in the background and posts the result when ready.
|
|
34
|
+
</Card>
|
|
35
|
+
<Card title="Music generation" href="/tools/music-generation" icon="music">
|
|
36
|
+
Generate music or audio tracks via `music_generate`. Async in chat
|
|
37
|
+
sessions on the shared media-generation task lifecycle.
|
|
38
|
+
</Card>
|
|
39
|
+
<Card title="Text-to-speech" href="/tools/tts" icon="microphone">
|
|
40
|
+
Convert outbound replies to spoken audio via the `tts` tool plus
|
|
41
|
+
`messages.tts` config. Synchronous.
|
|
42
|
+
</Card>
|
|
43
|
+
<Card title="Media understanding" href="/nodes/media-understanding" icon="eye">
|
|
44
|
+
Summarize inbound images, audio, and video using vision-capable model
|
|
45
|
+
providers and dedicated media-understanding plugins.
|
|
46
|
+
</Card>
|
|
47
|
+
<Card title="Speech-to-text" href="/nodes/audio" icon="ear-listen">
|
|
48
|
+
Transcribe inbound voice messages through batch STT or Voice Call
|
|
49
|
+
streaming STT providers.
|
|
50
|
+
</Card>
|
|
51
|
+
</CardGroup>
|
|
52
|
+
|
|
53
|
+
## Provider capability matrix
|
|
54
|
+
|
|
55
|
+
| Provider | Image | Video | Music | TTS | STT | Realtime voice | Media understanding |
|
|
56
|
+
| ----------------- | :---: | :---: | :---: | :-: | :-: | :------------: | :-----------------: |
|
|
57
|
+
| Alibaba | | ✓ | | | | | |
|
|
58
|
+
| BytePlus | | ✓ | | | | | |
|
|
59
|
+
| ComfyUI | ✓ | ✓ | ✓ | | | | |
|
|
60
|
+
| DeepInfra | ✓ | ✓ | | ✓ | ✓ | | ✓ |
|
|
61
|
+
| Deepgram | | | | | ✓ | ✓ | |
|
|
62
|
+
| ElevenLabs | | | | ✓ | ✓ | | |
|
|
63
|
+
| fal | ✓ | ✓ | ✓ | | | | |
|
|
64
|
+
| Google | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ |
|
|
65
|
+
| Gradium | | | | ✓ | | | |
|
|
66
|
+
| Local CLI | | | | ✓ | | | |
|
|
67
|
+
| Microsoft | | | | ✓ | | | |
|
|
68
|
+
| Microsoft Foundry | ✓ | | | | | | |
|
|
69
|
+
| MiniMax | ✓ | ✓ | ✓ | ✓ | | | |
|
|
70
|
+
| Mistral | | | | | ✓ | | |
|
|
71
|
+
| OpenAI | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ |
|
|
72
|
+
| OpenRouter | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ |
|
|
73
|
+
| Qwen | | ✓ | | | | | |
|
|
74
|
+
| Runway | | ✓ | | | | | |
|
|
75
|
+
| SenseAudio | | | | | ✓ | | |
|
|
76
|
+
| Together | | ✓ | | | | | |
|
|
77
|
+
| Vydra | ✓ | ✓ | | ✓ | | | |
|
|
78
|
+
| xAI | ✓ | ✓ | | ✓ | ✓ | | ✓ |
|
|
79
|
+
| Xiaomi MiMo | ✓ | | | ✓ | | | ✓ |
|
|
80
|
+
|
|
81
|
+
<Note>
|
|
82
|
+
Media understanding uses any vision-capable or audio-capable model registered
|
|
83
|
+
in your provider config. The matrix above lists providers with dedicated
|
|
84
|
+
media-understanding support; most multimodal LLM providers (Anthropic, Google,
|
|
85
|
+
OpenAI, etc.) can also understand inbound media when configured as the active
|
|
86
|
+
reply model.
|
|
87
|
+
</Note>
|
|
88
|
+
|
|
89
|
+
## Async vs synchronous
|
|
90
|
+
|
|
91
|
+
| Capability | Mode | Why |
|
|
92
|
+
| -------------- | ------------ | ---------------------------------------------------------------------------------------------------- |
|
|
93
|
+
| Image | Asynchronous | Provider processing can outlive a chat turn; generated attachments use the shared completion path. |
|
|
94
|
+
| Text-to-speech | Synchronous | Provider responses return in seconds; attached to the reply audio. |
|
|
95
|
+
| Video | Asynchronous | Provider processing takes 30 s to several minutes; slow queues can run up to the configured timeout. |
|
|
96
|
+
| Music | Asynchronous | Same provider-processing characteristic as video. |
|
|
97
|
+
|
|
98
|
+
For async tools, OpenClaw submits the request to the provider, returns a task
|
|
99
|
+
id immediately, and tracks the job in the task ledger. The agent continues
|
|
100
|
+
responding to other messages while the job runs. When the provider finishes,
|
|
101
|
+
OpenClaw wakes the agent with the generated media paths so it can tell the
|
|
102
|
+
user through the session's normal visible-reply mode: automatic final reply
|
|
103
|
+
delivery when configured, or `message(action="send")` when the session requires
|
|
104
|
+
the message tool. If the requester session is inactive or its active wake
|
|
105
|
+
fails, and some generated media is still missing from the completion reply,
|
|
106
|
+
OpenClaw sends an idempotent direct fallback with only the missing media. Media
|
|
107
|
+
already delivered by the completion reply is not posted again.
|
|
108
|
+
|
|
109
|
+
## Speech-to-text and Voice Call
|
|
110
|
+
|
|
111
|
+
Deepgram, DeepInfra, ElevenLabs, Mistral, OpenAI, OpenRouter, SenseAudio, and xAI can all transcribe
|
|
112
|
+
inbound audio through the batch `tools.media.audio` path when configured.
|
|
113
|
+
Channel plugins that preflight a voice note for mention gating or command
|
|
114
|
+
parsing mark the transcribed attachment on the inbound context, so the shared
|
|
115
|
+
media-understanding pass reuses that transcript instead of making a second
|
|
116
|
+
STT call for the same audio.
|
|
117
|
+
|
|
118
|
+
Deepgram, ElevenLabs, Mistral, OpenAI, and xAI also register Voice Call
|
|
119
|
+
streaming STT providers, so live phone audio can be forwarded to the selected
|
|
120
|
+
vendor without waiting for a completed recording.
|
|
121
|
+
|
|
122
|
+
For live user conversations, prefer [Talk mode](/nodes/talk). Batch audio
|
|
123
|
+
attachments stay on the media path; browser realtime, native push-to-talk,
|
|
124
|
+
telephony, and meeting audio should use Talk events and the session-scoped
|
|
125
|
+
catalogs returned by the Gateway.
|
|
126
|
+
|
|
127
|
+
## Provider mappings (how vendors split across surfaces)
|
|
128
|
+
|
|
129
|
+
<AccordionGroup>
|
|
130
|
+
<Accordion title="Google">
|
|
131
|
+
Image, video, music, batch TTS, backend realtime voice, and
|
|
132
|
+
media-understanding surfaces.
|
|
133
|
+
</Accordion>
|
|
134
|
+
<Accordion title="OpenAI">
|
|
135
|
+
Image, video, batch TTS, batch STT, Voice Call streaming STT, backend
|
|
136
|
+
realtime voice, and memory-embedding surfaces.
|
|
137
|
+
</Accordion>
|
|
138
|
+
<Accordion title="DeepInfra">
|
|
139
|
+
Chat/model routing, image generation/editing, text-to-video, batch TTS,
|
|
140
|
+
batch STT, image media understanding, and memory-embedding surfaces.
|
|
141
|
+
DeepInfra-native rerank/classification/object-detection models are not
|
|
142
|
+
registered until OpenClaw has dedicated provider contracts for those
|
|
143
|
+
categories.
|
|
144
|
+
</Accordion>
|
|
145
|
+
<Accordion title="xAI">
|
|
146
|
+
Image, video, search, code-execution, batch TTS, batch STT, and Voice
|
|
147
|
+
Call streaming STT. xAI Realtime voice is an upstream capability but is
|
|
148
|
+
not registered in OpenClaw until the shared realtime-voice contract can
|
|
149
|
+
represent it.
|
|
150
|
+
</Accordion>
|
|
151
|
+
</AccordionGroup>
|
|
152
|
+
|
|
153
|
+
## Related
|
|
154
|
+
|
|
155
|
+
- [Image generation](/tools/image-generation)
|
|
156
|
+
- [Video generation](/tools/video-generation)
|
|
157
|
+
- [Music generation](/tools/music-generation)
|
|
158
|
+
- [Text-to-speech](/tools/tts)
|
|
159
|
+
- [Media understanding](/nodes/media-understanding)
|
|
160
|
+
- [Audio nodes](/nodes/audio)
|
|
161
|
+
- [Talk mode](/nodes/talk)
|