{"record":{"id":"3ed04a3474d686bb","repo":"Mintplex-Labs/anything-llm","slug":"no-websocketdebuggerurl-is-chromium-running-3ed04a","errorCode":null,"errorMessage":"No webSocketDebuggerUrl — is Chromium running?","messagePattern":"No webSocketDebuggerUrl — is Chromium running\\?","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"open-computer/services/interface-service/utils/cdp-input.js","lineNumber":77,"sourceCode":"    ws.on(\"message\", handler);\n    ws.send(JSON.stringify(msg));\n  });\n}\n\nfunction sleep(ms) {\n  return new Promise((r) => setTimeout(r, ms));\n}\n\n// Randomized human-like delay between keystrokes\nfunction keystrokeDelay() {\n  return 30 + Math.floor(Math.random() * 60);\n}\n\nasync function main() {\n  const versionRaw = await httpGet(\"http://127.0.0.1:9222/json/version\");\n  const version = JSON.parse(versionRaw);\n  const browserWsUrl = version.webSocketDebuggerUrl;\n  if (!browserWsUrl) throw new Error(\"No webSocketDebuggerUrl — is Chromium running?\");\n\n  const ws = await new Promise((resolve, reject) => {\n    const socket = new WebSocket(browserWsUrl);\n    const t = setTimeout(() => reject(new Error(\"WS connect timeout\")), 5000);\n    socket.on(\"open\", () => { clearTimeout(t); resolve(socket); });\n    socket.on(\"error\", (err) => { clearTimeout(t); reject(err); });\n  });\n\n  try {\n    // Find target page\n    const { targetInfos } = await cdpSend(ws, \"Target.getTargets\");\n    const pages = targetInfos.filter(\n      (t) => t.type === \"page\" && !t.url.startsWith(\"chrome://\") && !t.url.startsWith(\"devtools://\")\n    );\n    if (pages.length === 0) throw new Error(\"No browser pages open.\");\n\n    // Determine target URL filter (always last arg if it doesn't look like a coordinate/text)\n    let targetUrl = \"\";","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/Mintplex-Labs/anything-llm/blob/526360e320da9d1b36074be5ed64fe76e5bbfbbd/open-computer/services/interface-service/utils/cdp-input.js#L59-L95","documentation":"Thrown by cdp-input.js (the click/type/key injection utility), structurally identical to cdp-eval's check: GET http://127.0.0.1:9222/json/version returned JSON without webSocketDebuggerUrl. The two utilities share the same launch requirement: Chromium must expose the CDP debugging endpoint on port 9222. Without it, no input can be injected.","triggerScenarios":"Chromium launched without --remote-debugging-port; another process answering on 9222 with a non-Chromium response; a Chrome variant (e.g. some embedded webviews) that omits webSocketDebuggerUrl from the version JSON.","commonSituations":"User switched to a system Chrome that was already running without debugging flags (Chrome refuses to enable debugging on an existing instance); Chrome was started by a desktop shortcut without the flag; the open-computer launcher was bypassed.","solutions":["Fully quit Chrome, then relaunch with --remote-debugging-port=9222.","Verify GET http://127.0.0.1:9222/json/version contains webSocketDebuggerUrl.","Use the open-computer launcher to start Chromium so the flags are applied.","Ensure no other Chrome instance is holding the profile/port."],"exampleFix":"# before — existing Chrome without debugging\n# (webSocketDebuggerUrl absent)\n\n# after — fresh launch with debugging\nkillall chrome || taskkill /F /IM chrome.exe\nchromium-browser --remote-debugging-port=9222 --remote-allow-origins=*","handlingStrategy":"validation","validationCode":"// Same probe as cdp-eval: confirm webSocketDebuggerUrl before injecting input.\nasync function cdpInputReady() {\n  try {\n    const v = JSON.parse(await httpGet('http://127.0.0.1:9222/json/version'));\n    return typeof v.webSocketDebuggerUrl === 'string';\n  } catch { return false; }\n}","typeGuard":null,"tryCatchPattern":"if (!await cdpInputReady()) {\n  console.error('Relaunch Chromium with --remote-debugging-port=9222 (quit existing instances first).');\n  process.exit(2);\n}","preventionTips":["Fully quit existing Chrome instances before relaunching with debugging flags.","Use the open-computer launcher to start Chromium consistently.","Verify GET /json/version contains webSocketDebuggerUrl before invoking cdp-input."],"tags":["cdp","chromium","browser-debugging","config","input-injection","setup"],"backgroundTag":null,"analyzedSha":"526360e320da9d1b36074be5ed64fe76e5bbfbbd","analyzedAt":"2026-08-13T01:45:47.170Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}