docs/concepts/experimental-features.md
Experimental features in OpenClaw are opt-in preview surfaces. They are behind explicit flags because they still need real-world mileage before they deserve a stable default or a long-lived public contract.
Treat them differently from normal config:
| Surface | Key | Use it when | More |
|---|---|---|---|
| Local model runtime | agents.defaults.experimental.localModelLean | A smaller or stricter local backend chokes on OpenClaw's full default tool surface | Local Models |
| Memory search | agents.defaults.memorySearch.experimental.sessionMemory | You want memory_search to index prior session transcripts and accept the extra storage/indexing cost | Memory configuration reference |
| Structured planning tool | tools.experimental.planTool | You want the structured update_plan tool exposed for multi-step work tracking in compatible runtimes and UIs | Gateway configuration reference |
agents.defaults.experimental.localModelLean: true is a pressure-release valve for weaker local-model setups. When it is on, OpenClaw drops three default tools — browser, cron, and message — from the agent's tool surface for every turn. Nothing else changes.
These three tools have the largest descriptions and the most parameter shapes in the default OpenClaw runtime. On a small-context or stricter OpenAI-compatible backend that is the difference between:
Removing them does not silently rewire OpenClaw — it just makes the tool list shorter. The model still has read, write, edit, exec, apply_patch, web search/fetch (when configured), memory, and session/agent tools available.
Enable lean mode when you have already proved the model can talk to the Gateway but full agent turns misbehave. The typical signal chain is:
openclaw infer model run --gateway --model <ref> --prompt "Reply with exactly: pong" succeeds.localModelLean: true clears the failure.If your backend handles the full default runtime cleanly, leave this off. Lean mode is a workaround, not a default. It exists because some local stacks need a smaller tool surface to behave; hosted models and well-resourced local rigs do not.
Lean mode also does not replace tools.profile, tools.allow/tools.deny, or the model compat.supportsTools: false escape hatch. If you need a permanent narrower tool surface for a specific agent, prefer those stable knobs over the experimental flag.
{
agents: {
defaults: {
experimental: {
localModelLean: true,
},
},
},
}
Restart the Gateway after changing the flag, then confirm the trimmed tool list with:
openclaw status --deep
The deep status output lists the active agent tools; browser, cron, and message should be absent when lean mode is on.
If a feature is experimental, OpenClaw should say so plainly in docs and in the config path itself. What it should not do is smuggle preview behavior into a stable-looking default knob and pretend that is normal. That's how config surfaces get messy.