UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

150 lines (117 loc) • 9.12 kB
--- summary: "What experimental flags mean in OpenClaw and which ones are currently documented" title: "Experimental features" read_when: - You see an `.experimental` config key and want to know whether it is stable - You want to try preview runtime features without confusing them with normal defaults - You want one place to find the currently documented experimental flags --- Experimental features are preview surfaces controlled by config flags. They need more real-world mileage before their shape and behavior become long-lived contracts. - Off by default unless the feature docs state otherwise. - Shape and behavior can change faster than stable config. - Prefer a stable path when one already exists. - Roll out broadly only after testing in a smaller environment first. All [plugin APIs](/plugins/sdk-overview#api-stability) are also experimental. That stability label does not require a Labs switch for ordinary plugins; the Custom plugin UI flag below controls user-installed native browser code only. ## Currently documented flags | Surface | Key | Use it when | More | | ---------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | Codex harness | `plugins.entries.codex.config.appServer.experimental.sandboxExecServer` | You want native Codex app-server 0.143.0 or newer to target an OpenClaw sandbox-backed exec-server instead of disabling Code Mode | [Codex harness reference](/plugins/codex-harness-reference#sandboxed-native-execution) | | Code Mode | `tools.codeMode.enabled` | You want compact code-orchestrated access to a hidden OpenClaw tool catalog | [Code Mode](/tools/code-mode) | | Cloud workers | `cloudWorkers.desktop` | You want to watch or control desktop-capable cloud worker environments from the Control UI | [Cloud Worker Desktop](/gateway/cloud-workers#desktop-interactive) | | Custom plugin UI | `gateway.controlUi.experimental.customPlugins` | You want trusted user-installed plugins to add native Control UI views or replace built-in views | [Feature plugins](/plugins/feature-plugins#enable-custom-plugin-ui) | | Host Desktop | `desktop.host.enabled` | You want to watch or control the Gateway host through its VNC or Screen Sharing server | [Desktop](/gateway/configuration-reference#desktop) | | Tool Search | `tools.toolSearch.enabled` | You want to control the global Tool Search default, which is enabled | [Tool Search](/tools/tool-search) | ## Control UI Labs Open **Settings → Labs** to manage experiments that have a Control UI switch. Enabling or disabling a lab patches the canonical Gateway config immediately without restarting the Gateway. Labs includes Decision assistance, Code Mode, Tool Search for all models, Custom plugin UI, Host Desktop, and Cloud Worker Desktop. Under the default reload mode, custom plugin views and desktop availability update in connected Control UI pages. Code Mode and Tool Search changes take effect for future agent runs. Reload browser tabs after disabling Custom plugin UI to clear plugin JavaScript that already ran. The Cloud Worker Desktop lab controls access to existing desktop-capable workers; changing a profile's `settings.desktop` affects only newly provisioned workers. Custom plugin UI is off by default. Enabled bundled plugins, including Workboard, retain their native UI with the setting off. Backend APIs and ordinary plugins remain available, and installing or approving a plugin artifact does not enable the lab. Code Mode remains disabled until you turn on its Labs switch or explicitly set `tools.codeMode` to `true` or `"auto"`. The Labs switch writes `"auto"`, so it engages only for models marked as preferred Code Mode performers; it does not force Code Mode on for every model. Tool Search is enabled by default when `tools.toolSearch` is unset. Turning its Labs switch off disables the global default; turning it on restores that default. ## Decision assistance **Foundation only:** this Labs entry saves intent but connects no automatic Decision consumers. Turning it on does not start inference, enable consumer modes, select a provider, provision credentials, or download models. The switch and manually authored config use the same global Boolean: ```json5 { agents: { defaults: { experimental: { decisionAssistance: true }, }, }, } ``` The default is **off**. Only explicit `true` opts in; omission, `false`, or unrelated experimental options do not. Objects such as `decisionAssistance: { enabled: true }` are invalid. Turning the Labs switch off removes its override and restores off, preserving model selections and sibling settings. There is no browser-local preference. Saved opt-in is not per-agent eligibility. Future automatic consumers also need an effective [Decision model](/concepts/decision-models) for their owning agent. An unset agent model inherits `agents.defaults.decisionModel`; an explicit empty `agents.entries.<id>.decisionModel` disables eligibility for that agent. A model selection alone never opts in. The global switch does not mean every agent is eligible, nor that a configured provider is ready. Without a model, the on preference remains saved and no automatic Decision inference can run. The explicit `decision_evaluate` tool is independent of Labs under its normal model-selection and tool-policy contract. Labs does not gate the shared Decision runtime or provider registration, and it never grants permission for actions. ### Core consumer contract Core implementations can import `isDecisionAssistanceEligible(config: OpenClawConfig, agentId: string): boolean` from `src/agents/decision-assistance.ts`. Supply prepared config and the trusted owning agent ID, not a model-provided ID. The helper returns exactly `decisionAssistance === true && resolveDecisionModelSetting(config, agentId) !== undefined`. It performs no provider probes, secret resolution, file reads, network requests, model loading, or inference, and returns no provider-readiness diagnostics. This is an internal foundation boundary, not a new plugin SDK surface. For example, at a future automatic consumer boundary: ```ts import { isDecisionAssistanceEligible } from "./decision-assistance.js"; if (!isDecisionAssistanceEligible(preparedConfig, owningAgentId)) { return existingBaseline; } // Separately check this consumer’s explicit mode, harness support, and authority // before loading its optional implementation or preparing evaluation evidence. ``` Use the existing config publication/refresh lifecycle, not file polling. Future consumers must stop admitting automatic work after opt-out takes effect and revalidate current config, model selection, and live authority before applying awaited results. This helper is not an authority token or a cancellation owner. Any future consumer must document its evidence transfer, costs, latency, and failure behavior. Hosted evaluations send selected evidence to the configured provider and can incur charges; this foundation sends no evidence and makes no performance or quality claims. ## Local model lean mode Lean mode is an advanced troubleshooting override, configured outside Labs. Its existing `experimental.localModelLean` keys remain supported. See [Local model lean mode](/gateway/local-models#local-model-lean-mode) for capability restrictions, config examples, and recovery guidance. - <a id="why-these-tools" />[Why these tools](/gateway/local-models#why-these-tools) - <a id="when-to-turn-it-on" />[When to turn it on](/gateway/local-models#when-to-turn-it-on) - <a id="when-to-leave-it-off" />[When to leave it off](/gateway/local-models#when-to-leave-it-off) - <a id="enable" />[Enable](/gateway/local-models#enable) ## Experimental does not mean hidden An experimental feature should say so plainly in docs and in the config path itself, not hide behind a stable-looking default knob. ## Related - [Features](/concepts/features) - [Release channels](/install/development-channels)