diff --git a/.openclaw-sync/source.json b/.openclaw-sync/source.json index 87ce980fc..07ef31dd8 100644 --- a/.openclaw-sync/source.json +++ b/.openclaw-sync/source.json @@ -1,5 +1,5 @@ { "repository": "openclaw/openclaw", - "sha": "4ac6729d1229715ae07bd9543ca0678910e51b3e", - "syncedAt": "2026-04-25T11:31:20.130Z" + "sha": "b2b898c2a8bce33a91f31403832eff1aa5f0b55e", + "syncedAt": "2026-04-25T11:31:30.221Z" } diff --git a/docs/gateway/configuration-reference.md b/docs/gateway/configuration-reference.md index 7ed3704c7..b3a84b621 100644 --- a/docs/gateway/configuration-reference.md +++ b/docs/gateway/configuration-reference.md @@ -266,6 +266,10 @@ See [Plugins](/tools/plugin). - Local managed profiles can set `executablePath` to override the global `browser.executablePath` for that profile. Use this to run one profile in Chrome and another in Brave. +- Local managed profiles use `browser.localLaunchTimeoutMs` for Chrome CDP HTTP + discovery after process start and `browser.localCdpReadyTimeoutMs` for + post-launch CDP websocket readiness. Raise them on slower hosts where Chrome + starts successfully but readiness checks race startup. - Auto-detect order: default browser if Chromium-based → Chrome → Brave → Edge → Chromium → Chrome Canary. - `browser.executablePath` accepts `~` for your OS home directory. - Control service: loopback only (port derived from `gateway.port`, default `18791`). diff --git a/docs/tools/browser-linux-troubleshooting.md b/docs/tools/browser-linux-troubleshooting.md index 0f909c740..0b9a9767c 100644 --- a/docs/tools/browser-linux-troubleshooting.md +++ b/docs/tools/browser-linux-troubleshooting.md @@ -125,15 +125,23 @@ curl -s http://127.0.0.1:18791/tabs ### Config Reference -| Option | Description | Default | -| --------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------- | -| `browser.enabled` | Enable browser control | `true` | -| `browser.executablePath` | Path to a Chromium-based browser binary (Chrome/Brave/Edge/Chromium) | auto-detected (prefers default browser when Chromium-based) | -| `browser.headless` | Run without GUI | `false` | -| `OPENCLAW_BROWSER_HEADLESS` | Per-process override for local managed browser headless mode | unset | -| `browser.noSandbox` | Add `--no-sandbox` flag (needed for some Linux setups) | `false` | -| `browser.attachOnly` | Don't launch browser, only attach to existing | `false` | -| `browser.cdpPort` | Chrome DevTools Protocol port | `18800` | +| Option | Description | Default | +| -------------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------- | +| `browser.enabled` | Enable browser control | `true` | +| `browser.executablePath` | Path to a Chromium-based browser binary (Chrome/Brave/Edge/Chromium) | auto-detected (prefers default browser when Chromium-based) | +| `browser.headless` | Run without GUI | `false` | +| `OPENCLAW_BROWSER_HEADLESS` | Per-process override for local managed browser headless mode | unset | +| `browser.noSandbox` | Add `--no-sandbox` flag (needed for some Linux setups) | `false` | +| `browser.attachOnly` | Don't launch browser, only attach to existing | `false` | +| `browser.cdpPort` | Chrome DevTools Protocol port | `18800` | +| `browser.localLaunchTimeoutMs` | Local managed Chrome discovery timeout | `15000` | +| `browser.localCdpReadyTimeoutMs` | Local managed post-launch CDP readiness timeout | `8000` | + +On Raspberry Pi, older VPS hosts, or slow storage, raise +`browser.localLaunchTimeoutMs` when Chrome needs more time to expose its CDP HTTP +endpoint. Raise `browser.localCdpReadyTimeoutMs` when launch succeeds but +`openclaw browser start` still reports `not reachable after start`. Values are +capped at 120000 ms. ### Problem: "No Chrome tabs found for profile=\"user\"" diff --git a/docs/tools/browser.md b/docs/tools/browser.md index 02e80c58e..e094b246b 100644 --- a/docs/tools/browser.md +++ b/docs/tools/browser.md @@ -129,6 +129,8 @@ Browser settings live in `~/.openclaw/openclaw.json`. // cdpUrl: "http://127.0.0.1:18792", // legacy single-profile override remoteCdpTimeoutMs: 1500, // remote CDP HTTP timeout (ms) remoteCdpHandshakeTimeoutMs: 3000, // remote CDP WebSocket handshake timeout (ms) + localLaunchTimeoutMs: 15000, // local managed Chrome discovery timeout (ms) + localCdpReadyTimeoutMs: 8000, // local managed post-launch CDP readiness timeout (ms) actionTimeoutMs: 60000, // default browser act timeout (ms) tabCleanup: { enabled: true, // default: true @@ -174,6 +176,11 @@ Browser settings live in `~/.openclaw/openclaw.json`. - Control service binds to loopback on a port derived from `gateway.port` (default `18791` = gateway + 2). Overriding `gateway.port` or `OPENCLAW_GATEWAY_PORT` shifts the derived ports in the same family. - Local `openclaw` profiles auto-assign `cdpPort`/`cdpUrl`; set those only for remote CDP. `cdpUrl` defaults to the managed local CDP port when unset. - `remoteCdpTimeoutMs` applies to remote (non-loopback) CDP HTTP reachability checks; `remoteCdpHandshakeTimeoutMs` applies to remote CDP WebSocket handshakes. +- `localLaunchTimeoutMs` is the budget for a locally launched managed Chrome + process to expose its CDP HTTP endpoint. `localCdpReadyTimeoutMs` is the + follow-up budget for CDP websocket readiness after the process is discovered. + Raise these on Raspberry Pi, low-end VPS, or older hardware where Chromium + starts slowly. Values are capped at 120000 ms. - `actionTimeoutMs` is the default budget for browser `act` requests when the caller does not pass `timeoutMs`. The client transport adds a small slack window so long waits can finish instead of timing out at the HTTP boundary. - `tabCleanup` is best-effort cleanup for tabs opened by primary-agent browser sessions. Subagent, cron, and ACP lifecycle cleanup still closes their explicit tracked tabs at session end; primary sessions keep active tabs reusable, then close idle or excess tracked tabs in the background.