diff --git a/README.md b/README.md
index a19b825..38dfb35 100644
--- a/README.md
+++ b/README.md
@@ -77,6 +77,16 @@ Deployment profiles and hardening references:
+Provider URL parity and CI harness resilience tightened for local LLM defaults and Playwright bootstrap stability
+
+- Fixed the built-in `Ollama (Local)` provider default so OpenClaw's OpenAI-compatible requests now target the correct `/v1` surface by default, and existing loopback-root overrides are normalized onto the same bounded path instead of failing on `/models` or `/chat/completions` at the daemon root.
+- Added a provider URL contract matrix that pins built-in provider defaults, adapter endpoint assembly, and bounded Ollama normalization in one regression lane so future `LM Studio`, `Ollama`, and custom OpenAI-compatible drift is caught before release.
+- Hardened the shared Playwright harness bootstrap so a single transient `openclaw.js` module-fetch failure in CI is retried once instead of failing the whole UI load, while still surfacing real import/runtime errors as hard test failures.
+
+
+
+
+
PNG Info sidebar workflow added with ComfyUI metadata extraction, better large-image handling, and lower-noise operator alerts
- Added a new `PNG Info` sidebar tab with drag-and-drop, file picker, scoped paste, preview rendering, prompt copy actions, structured summary cards, and raw metadata inspection for saved generation images.
@@ -768,6 +778,9 @@ Notes:
- Optional: for single-user localhost setups, you can store a provider API key from the Settings tab (UI Key Store (Advanced)).
- This writes to the server-side secret store (`{STATE_DIR}/secrets.json`).
- Environment variables always take priority over stored keys.
+- Built-in local-provider defaults use loopback-only OpenAI-compatible URLs:
+ - `Ollama (Local)` -> `http://127.0.0.1:11434/v1`
+ - `LM Studio (Local)` -> `http://localhost:1234/v1`
### 2 Configure webhook auth (required for `/webhook*`)
diff --git a/docs/deploy/local-only.md b/docs/deploy/local-only.md
index 97256a1..3edda14 100644
--- a/docs/deploy/local-only.md
+++ b/docs/deploy/local-only.md
@@ -35,7 +35,7 @@ No special configuration is required.
- **Admin Token**: Not required for loopback-only operations (unless `OPENCLAW_ADMIN_TOKEN` is explicitly set).
- **Webhooks**: Disabled by default.
- **Local LLM (optional)**:
- - Ollama: `http://127.0.0.1:11434`
+ - Ollama: `http://127.0.0.1:11434/v1`
- LM Studio: `http://localhost:1234/v1`
- Keep SSRF relax flags disabled:
- `OPENCLAW_ALLOW_ANY_PUBLIC_LLM_HOST=0`
@@ -58,6 +58,6 @@ No special configuration is required.
1. Open `http://127.0.0.1:8188` in your browser.
2. Open the OpenClaw tab in the sidebar.
3. Go to **Settings** -> **Health**.
-4. If using Ollama, verify `http://127.0.0.1:11434/api/tags` responds.
-5. In **Settings -> LLM**, set provider to `Ollama (Local)` and click **Load Models**.
+4. If using Ollama, verify the daemon is reachable first via the native Ollama health/list surface `http://127.0.0.1:11434/api/tags`.
+5. In **Settings -> LLM**, set provider to `Ollama (Local)`, leave **Base URL** empty to use the built-in `http://127.0.0.1:11434/v1` default (or set that exact loopback URL explicitly), and click **Load Models**.
6. All checks should be green.
diff --git a/docs/frontend_ux_walkthrough.md b/docs/frontend_ux_walkthrough.md
index 8a9ece2..af6f7ed 100644
--- a/docs/frontend_ux_walkthrough.md
+++ b/docs/frontend_ux_walkthrough.md
@@ -91,5 +91,7 @@ If `assist_streaming` is unavailable or the stream transport degrades, Planner/R
- Run: `npm test`
- Tests live in: `tests/e2e/specs/`
- Harness: `tests/e2e/test-harness.html` (mocks ComfyUI core + basic OpenClaw API calls)
+- Harness bootstrap now retries one transient `openclaw.js` module-fetch failure before surfacing a hard load error, so CI-only first-request flakiness does not get misreported as a permanent sidebar failure.
- Web helper/self-test harness: `web/tests/e2e-harness.html` (includes frontend helper and wrapper idempotence checks)
- Desktop host parity lane: `tests/e2e/specs/desktop_host_parity.spec.js` verifies standalone vs desktop host evidence separately and covers both sidebar and Remote Admin host-sensitive behavior under the shared harness shims.
+- When investigating suspected harness flakes locally, prefer `npm run test:stress -- ` so the same shared bootstrap path is exercised repeatedly without changing the default `npm test` contract.
diff --git a/docs/release/config_secrets_contract.md b/docs/release/config_secrets_contract.md
index 5ce0f55..3bb8b64 100644
--- a/docs/release/config_secrets_contract.md
+++ b/docs/release/config_secrets_contract.md
@@ -62,6 +62,9 @@ Multi-tenant note:
Notes:
- Local providers (`ollama`, `lmstudio`) are loopback-only by design and should use `localhost` / `127.0.0.1` / `::1`.
+- Built-in local-provider defaults are OpenAI-compatible URLs:
+ - `ollama` -> `http://127.0.0.1:11434/v1`
+ - `lmstudio` -> `http://localhost:1234/v1`
- Local loopback provider targets do not require enabling insecure SSRF flags.
- `OPENCLAW_LLM_ALLOWED_HOSTS` does not allow private/reserved IPs; those still require `OPENCLAW_ALLOW_INSECURE_BASE_URL=1`.
- The same insecure override applies to config-save validation, `/openclaw/llm/models`, and outbound provider requests.
diff --git a/docs/release/operator_ux_contracts.md b/docs/release/operator_ux_contracts.md
index 796c548..ba77d85 100644
--- a/docs/release/operator_ux_contracts.md
+++ b/docs/release/operator_ux_contracts.md
@@ -50,7 +50,8 @@ interface BannerStatus {
- **Monitoring**: Polls `/health` every 10s.
- **Triggers**: Checks `stats.observability.total_dropped > 0`.
- **Display**: Simple DOM injection of canonical `.openclaw-banner` markup; legacy `.moltbot-banner` compatibility selectors remain available through centralized runtime aliasing.
-- **Limitations**: No connectivity state handling, no 'info'/'success' states, simplistic dedupe.
+- **Connectivity posture**: Queue-monitor disconnect warnings should tolerate initial sidebar/bootstrap races and only escalate after bounded repeated failure or post-healthy disconnect evidence, so transient startup misses do not become durable incident noise.
+- **Limitations**: No 'info'/'success' states, simplistic dedupe.
## 1.1 Notification Center (F66)
diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md
index ca84a45..ee50753 100644
--- a/docs/troubleshooting.md
+++ b/docs/troubleshooting.md
@@ -61,6 +61,10 @@ Checklist:
3. In OpenClaw Settings:
- Provider: `Ollama (Local)` or `LM Studio (Local)`
- Base URL: leave empty to use the provider default, or set a loopback URL explicitly
+ - Provider defaults:
+ - `Ollama (Local)` -> `http://127.0.0.1:11434/v1`
+ - `LM Studio (Local)` -> `http://localhost:1234/v1`
+ - If an older saved Ollama URL is still set to `http://127.0.0.1:11434`, update it to `/v1` or clear the field so the built-in default can be applied
4. Keep these flags disabled:
- `OPENCLAW_ALLOW_ANY_PUBLIC_LLM_HOST=0`
- `OPENCLAW_ALLOW_INSECURE_BASE_URL=0`