1. Read challenge on every webrain_navigate. Obscura/lightpanda
cannot pass interactive challenges — only real Chrome with a persistent
profile + session (native login).
2. Obscura v0.2.0+ render builds can screenshot + PDF (no-render builds
and lightpanda have no paint engine). Interactive Material / Google widgets
and interactive challenges still need real Chrome via
cdp_urls:["http://127.0.0.1:9222"].
3. Lightpanda’s screenshot is fake.captureScreenshot returns a
placeholder PNG — silently wrong, not an error. And webrain_batch runs
sequentially on it (single browser context).
Install the missing system libs (see Installation)
challenge: cloudflare_challenge / blocked
webrain launch <service> <profile> <url> then webrain login <service> <profile>, or re-attach an authenticated Chrome via CDP_URL=http://127.0.0.1:9222
Chrome won’t launch / port busy
webrain doctor; check port_blocklist.ps1 on Windows
Batch returns nothing on lightpanda
Expected — single context. Use obscura for parallelism
Google Flights / Material controls don’t open
Real Chrome only, never obscura/lightpanda
Wrong prices on Google Flights
Read from result cards (li.pIav2d), never bare $ text nodes (spurious price grid)
Auth lost after batch
webrain_setcookies then webrain_batch WITHOUT cdp_urls (obscura isolates per-connection cookie jars)
Session cookies gone
They die on Chrome restart — export on the live authenticated browser
webrain_eval returns null on obscura
Obscura doesn’t reliably await async JS — use webrain_batch(op=interact) for async work
webrain_batch errors fast (5s)
No browser backend running — start one or pass cdp_urls
LLM getting huge HTML blobs
Stop calling webrain_observe what=html — use what=state/clean/eval/extractors
scoop install webrain → Hash check failed!
The download is fine; the bucket entry was mistyped (v0.14.0’s x86_64 hash). scoop update; scoop cache rm webrain; scoop install webrain --force. From v0.14.5 the release workflow derives the hash with sha256sum from the artifact it just built
pdf_render requires --features pdfium
The binary you are running was built without the feature (a cargo install webrain build, or anything older than 0.16.2). Run webrain install pdfium first — the library is bound at runtime — and if the error persists the build itself lacks the feature: cargo build --release --features pdfium. musl builds cannot load the glibc pdfium at all; use op=extract / op=images there
An older manual install shadows the package-managed one. Get-Command webrain (PowerShell) / which -a webrain, delete the stale copy, reopen the shell
Page renders then “keeps loading”: title right, challenge: null, submit stays disabled, body stuck at the SSR empty state
Hydration, not a block. Re-probe after ~1s (navigate returns pre-mount), test Object.keys(el).filter(k=>k.startsWith('__react')).length, and if a hand-opened tab works set WEBRAIN_STEALTH_NOISE=0 for the process owning the CDP connection + open a fresh tab (init scripts are per-target)
Logs go to stderr; MCP speaks JSON on stdout — never redirect stderr
into the stream.
webrain_eval doesn’t reliably await async JS on obscura (returns null) —
use webrain_batch(op=interact, ...) for async work.
webrain_scrape needs NO browser (pure HTTP, 10–100× faster for static
pages).
Material widgets are combobox/option/radio, not button — check the
ARIA cheat-sheet in observe (what=a11y).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"webrain","colors":{"primary":"#3B82F6","light":"#60A5FA","dark":"#2563EB"},"logo":{"light":"https://mintcdn.com/webrain/s9Y-bD_v-_qIHEWb/images/spider-rounded.png?fit=max\u0026auto=format\u0026n=s9Y-bD_v-_qIHEWb\u0026q=85\u0026s=71919a95839af08ac1e877c5870cdaba","dark":"https://mintcdn.com/webrain/s9Y-bD_v-_qIHEWb/images/spider-nobg.png?fit=max\u0026auto=format\u0026n=s9Y-bD_v-_qIHEWb\u0026q=85\u0026s=60d56e0d0217ec021695b4f78250c03c"},"favicon":"https://mintcdn.com/webrain/s9Y-bD_v-_qIHEWb/images/webrain-logo-rounded.png?fit=max\u0026auto=format\u0026n=s9Y-bD_v-_qIHEWb\u0026q=85\u0026s=57d0b125c7fcd20a4e94e901c2a43140","navbar":{"links":[{"icon":"github","href":"https://github.com/prokopis3/webrain","label":"GitHub"}],"primary":{"type":"button","label":"Quickstart","href":"/quickstart"}},"footer":{"socials":{"github":"https://github.com/prokopis3/webrain"}},"fonts":{"family":"Geist"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/prokopis3/webrain"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"webrain","hasAudioNarration":false,"actualSubdomain":"webrain","customDomains":["docs.webrayn.dev"],"gitSource":{"type":"github","owner":"prokopis3","repo":"webrain","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6aeb92d1d398eb925aff5ea2","collectionId":"07725418-ffed-4149-8b18-3d5519ae7f0a","liveDeploymentHistoryId":"6aeb92d1d398eb925aff5ea2","schemaVersion":"v3"},"entitlements":{},"buildId":"6aeb92d1d398eb925aff5ea2","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"Documentation","count":32},{"language":"default","tag":"Concepts","count":5},{"language":"default","tag":"Guides","count":5},{"language":"default","tag":"Project","count":4},{"language":"default","tag":"Comparisons","count":4},{"language":"default","tag":"Getting Started","count":4},{"language":"default","tag":"MCP Clients","count":4},{"language":"default","tag":"Agent","count":3},{"language":"default","tag":"Reference","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":true},"customCss":[{"filePath":"styles/global.css","href":"/_mintlify/custom/webrain/5b5ae76668b430e3/styles/global.css"}],"page":{"pagePath":"troubleshooting","slug":"/troubleshooting","pageMetadata":{"title":"Troubleshooting","description":"The project's hard-won gotchas, in one place.","href":"/troubleshooting"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"The project’s hard-won gotchas, in one place.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(_components.p,{children:[`Start every session with `,_jsx(_components.code,{children:`webrain doctor`}),` — it checks engines, MCP server, CDP\nports (9222/9224/9225), and vault. Exit `,_jsx(_components.strong,{children:`0`}),` healthy,\n`,_jsx(_components.strong,{children:`2`}),` broken.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-big-three`,children:`The big three`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`1. Read `,_jsx(_components.code,{children:`challenge`}),` on every `,_jsx(_components.code,{children:`webrain_navigate`}),`.`]}),` Obscura/lightpanda\ncannot pass interactive challenges — only real Chrome with a persistent\nprofile + session (native login).`]})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`2. Obscura v0.2.0+ render builds can screenshot + PDF`}),` (no-render builds\nand lightpanda have no paint engine). Interactive Material / Google widgets\nand interactive challenges still need real Chrome via\n`,_jsx(_components.code,{children:`cdp_urls:[\"http://127.0.0.1:9222\"]`}),`.`]})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`3. Lightpanda’s screenshot is fake.`}),` `,_jsx(_components.code,{children:`captureScreenshot`}),` returns a\nplaceholder PNG — silently wrong, not an error. And `,_jsx(_components.code,{children:`webrain_batch`}),` runs\nsequentially on it (single browser context).`]})}),`\n`,_jsx(Heading,{level:`2`,id:`symptoms-→-fixes`,children:`Symptoms → fixes`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Symptom`}),_jsx(_components.th,{children:`Fix`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.em,{children:`”shared library”`}),` errors running Chrome (Linux)`]}),_jsxs(_components.td,{children:[`Install the missing system libs (see `,_jsx(_components.a,{href:`/installation`,children:`Installation`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`challenge: cloudflare_challenge`}),` / `,_jsx(_components.code,{children:`blocked`})]}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`webrain launch \u003cservice> \u003cprofile> \u003curl>`}),` then `,_jsx(_components.code,{children:`webrain login \u003cservice> \u003cprofile>`}),`, or re-attach an authenticated Chrome via `,_jsx(_components.code,{children:`CDP_URL=http://127.0.0.1:9222`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Chrome won’t launch / port busy`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`webrain doctor`}),`; check `,_jsx(_components.code,{children:`port_blocklist.ps1`}),` on Windows`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Batch returns nothing on lightpanda`}),_jsx(_components.td,{children:`Expected — single context. Use obscura for parallelism`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Google Flights / Material controls don’t open`}),_jsx(_components.td,{children:`Real Chrome only, never obscura/lightpanda`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Wrong prices on Google Flights`}),_jsxs(_components.td,{children:[`Read from result `,_jsx(_components.strong,{children:`cards`}),` (`,_jsx(_components.code,{children:`li.pIav2d`}),`), never bare `,_jsx(_components.code,{children:`$`}),` text nodes (spurious price grid)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Auth lost after batch`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`webrain_setcookies`}),` then `,_jsx(_components.code,{children:`webrain_batch`}),` WITHOUT `,_jsx(_components.code,{children:`cdp_urls`}),` (obscura isolates per-connection cookie jars)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Session cookies gone`}),_jsx(_components.td,{children:`They die on Chrome restart — export on the live authenticated browser`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`webrain_eval`}),` returns null on obscura`]}),_jsxs(_components.td,{children:[`Obscura doesn’t reliably await async JS — use `,_jsx(_components.code,{children:`webrain_batch(op=interact)`}),` for async work`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`webrain_batch`}),` errors fast (5s)`]}),_jsxs(_components.td,{children:[`No browser backend running — start one or pass `,_jsx(_components.code,{children:`cdp_urls`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`LLM getting huge HTML blobs`}),_jsxs(_components.td,{children:[`Stop calling `,_jsx(_components.code,{children:`webrain_observe`}),` what=html — use what=state/clean/eval/extractors`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`scoop install webrain`}),` → `,_jsx(_components.em,{children:`Hash check failed!`})]}),_jsxs(_components.td,{children:[`The download is fine; the bucket entry was mistyped (v0.14.0’s x86_64 hash). `,_jsx(_components.code,{children:`scoop update; scoop cache rm webrain; scoop install webrain --force`}),`. From v0.14.5 the release workflow derives the hash with `,_jsx(_components.code,{children:`sha256sum`}),` from the artifact it just built`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`pdf_render requires --features pdfium`})}),_jsxs(_components.td,{children:[`The binary you are running was built without the feature (a `,_jsx(_components.code,{children:`cargo install webrain`}),` build, or anything older than 0.16.2). Run `,_jsx(_components.code,{children:`webrain install pdfium`}),` first — the library is bound at runtime — and if the error persists the build itself lacks the feature: `,_jsx(_components.code,{children:`cargo build --release --features pdfium`}),`. musl builds cannot load the glibc pdfium at all; use `,_jsx(_components.code,{children:`op=extract`}),` / `,_jsx(_components.code,{children:`op=images`}),` there`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`webrain: unknown command: serp`}),` — newer subcommands missing`]}),_jsxs(_components.td,{children:[`An older manual install shadows the package-managed one. `,_jsx(_components.code,{children:`Get-Command webrain`}),` (PowerShell) / `,_jsx(_components.code,{children:`which -a webrain`}),`, delete the stale copy, reopen the shell`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[`Page renders then “keeps loading”: title right, `,_jsx(_components.code,{children:`challenge: null`}),`, submit stays `,_jsx(_components.code,{children:`disabled`}),`, body stuck at the SSR empty state`]}),_jsxs(_components.td,{children:[`Hydration, not a block. Re-probe after ~1s (navigate returns pre-mount), test `,_jsx(_components.code,{children:`Object.keys(el).filter(k=>k.startsWith('__react')).length`}),`, and if a hand-opened tab works set `,_jsx(_components.code,{children:`WEBRAIN_STEALTH_NOISE=0`}),` for the process owning the CDP connection + open a `,_jsx(_components.strong,{children:`fresh tab`}),` (init scripts are per-target)`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`rules-of-thumb`,children:`Rules of thumb`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Logs go to `,_jsx(_components.strong,{children:`stderr`}),`; MCP speaks JSON on `,_jsx(_components.strong,{children:`stdout`}),` — never redirect stderr\ninto the stream.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`webrain_eval`}),` doesn’t reliably await async JS on obscura (returns null) —\nuse `,_jsx(_components.code,{children:`webrain_batch(op=interact, ...)`}),` for async work.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`webrain_scrape`}),` needs NO browser (pure HTTP, 10–100× faster for static\npages).`]}),`\n`,_jsxs(_components.li,{children:[`Material widgets are `,_jsx(_components.code,{children:`combobox`}),`/`,_jsx(_components.code,{children:`option`}),`/`,_jsx(_components.code,{children:`radio`}),`, not `,_jsx(_components.code,{children:`button`}),` — check the\nARIA cheat-sheet in `,_jsx(_components.a,{href:`/reference/tools#webrain_a11y`,children:`observe (what=a11y)`}),`.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Troubleshooting","description":"The project's hard-won gotchas, in one place.","href":"/troubleshooting"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Troubleshooting","slug":"troubleshooting","depth":1,"children":[]},{"title":"The big three","slug":"the-big-three","depth":2,"children":[]},{"title":"Symptoms → fixes","slug":"symptoms-→-fixes","depth":2,"children":[]},{"title":"Rules of thumb","slug":"rules-of-thumb","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/webrain/34857b282bc56554/logo-nav.js","/_mintlify/custom/webrain/f6d8ac8b02d0306d/styles/landing-anim.js"],"subdomain":"webrain","siteName":"webrain","title":"Troubleshooting - webrain","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T16:17:02.284Z","originalFileLocation":"troubleshooting.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The project\u0026#x27;s hard-won gotchas, in one place.\">\u003cmeta data-mint-head name=\"application-name\" content=\"webrain\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Troubleshooting - webrain\">\u003cmeta data-mint-head property=\"og:description\" content=\"The project\u0026#x27;s hard-won gotchas, in one place.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"webrain\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.webrayn.dev/troubleshooting\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://webrain.mintlify.app/_mintlify/api/og/v2?division=Project\u0026amp;title=Troubleshooting\u0026amp;description=The+project%27s+hard-won+gotchas%2C+in+one+place.\u0026amp;theme=5a29a329e14928816b87eabf\u0026amp;signature=93f91f7233b039b5a1b50c2536903b51029ce3eabc1b0ba7a113d34ab4e87875\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Troubleshooting - webrain\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The project\u0026#x27;s hard-won gotchas, in one place.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://webrain.mintlify.app/_mintlify/api/og/v2?division=Project\u0026amp;title=Troubleshooting\u0026amp;description=The+project%27s+hard-won+gotchas%2C+in+one+place.\u0026amp;theme=5a29a329e14928816b87eabf\u0026amp;signature=93f91f7233b039b5a1b50c2536903b51029ce3eabc1b0ba7a113d34ab4e87875\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/webrain/fFpk5v_qw8ZpFJkc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"webrain\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3B82F6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.webrayn.dev/troubleshooting\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/troubleshooting.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.webrayn.dev/#organization\",\"name\":\"webrain\",\"url\":\"https://docs.webrayn.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/webrain/s9Y-bD_v-_qIHEWb/images/spider-rounded.png?fit=max\u0026auto=format\u0026n=s9Y-bD_v-_qIHEWb\u0026q=85\u0026s=71919a95839af08ac1e877c5870cdaba\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.webrayn.dev#website\",\"name\":\"webrain\",\"url\":\"https://docs.webrayn.dev\",\"publisher\":{\"@id\":\"https://docs.webrayn.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.webrayn.dev/troubleshooting#webpage\",\"url\":\"https://docs.webrayn.dev/troubleshooting\",\"name\":\"Troubleshooting\",\"description\":\"The project's hard-won gotchas, in one place.\",\"dateModified\":\"2026-11-03T16:17:02.284Z\",\"isPartOf\":{\"@id\":\"https://docs.webrayn.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.webrayn.dev/troubleshooting#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.webrayn.dev/troubleshooting#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Project\",\"item\":\"https://docs.webrayn.dev/deployment\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Troubleshooting\",\"item\":\"https://docs.webrayn.dev/troubleshooting\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.webrayn.dev/troubleshooting#article\",\"headline\":\"Troubleshooting\",\"name\":\"Troubleshooting\",\"description\":\"The project's hard-won gotchas, in one place.\",\"url\":\"https://docs.webrayn.dev/troubleshooting\",\"mainEntityOfPage\":{\"@id\":\"https://docs.webrayn.dev/troubleshooting#webpage\"},\"dateModified\":\"2026-11-03T16:17:02.284Z\",\"publisher\":{\"@id\":\"https://docs.webrayn.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.webrayn.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"webrain\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"webrain","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/prokopis3/webrain"}]},"anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Getting Started","pages":[{"title":"webrain: MCP browser automation \u0026 web scraping server","sidebarTitle":"Home","mode":"custom","href":""},{"title":"Overview","href":"/overview"},{"title":"Quickstart","href":"/quickstart"},{"title":"Installation","href":"/installation"}]},{"group":"MCP Clients","pages":[{"title":"MCP Server","href":"/mcp/server"},{"title":"Claude (Desktop \u0026 Code)","href":"/mcp/claude"},{"title":"Cursor","href":"/mcp/cursor"},{"title":"GitHub Copilot","href":"/mcp/copilot"}]},{"group":"Concepts","pages":[{"title":"Browser Engines","href":"/concepts/browsers"},{"title":"Browser Profiles","href":"/concepts/profiles"},{"title":"Browser Sessions","href":"/concepts/sessions"},{"title":"Challenges \u0026 Anti-Bot","href":"/concepts/challenges"},{"title":"Runtime Flow \u0026 Architecture","href":"/concepts/runtime-flow"}]},{"group":"Agent","pages":[{"title":"Protected Websites","href":"/agent/protected-sites"},{"title":"Session Strategy","href":"/agent/session-strategy"},{"title":"Agent Decision Guide","href":"/guides/agent-decision-guide"}]},{"group":"Guides","pages":[{"title":"Structured Extraction","href":"/guides/structured-extraction"},{"title":"Scraping at Scale","href":"/guides/scrape-at-scale"},{"title":"Auth \u0026 Login","href":"/guides/auth-and-login"},{"title":"Watch Videos","href":"/guides/watch-videos"},{"title":"Chat — one prompt, an agent, webrain's own tools","href":"/guides/chat"}]},{"group":"Comparisons","pages":[{"title":"webrain vs Playwright","href":"/comparisons/playwright"},{"title":"webrain vs Browser Use","href":"/comparisons/browser-use"},{"title":"webrain vs Firecrawl","href":"/comparisons/firecrawl"},{"title":"webrain vs Crawl4AI","href":"/comparisons/crawl4ai"}]},{"group":"Reference","pages":[{"title":"Tools Reference","href":"/reference/tools"},{"title":"CLI Reference","href":"/reference/cli"},{"title":"Environment Variables","href":"/reference/environment"}]},{"group":"Project","pages":[{"title":"Deployment","description":"Docker, CI/CD, and releases — ship webrain as a single static binary or container, with GitHub Actions builds, semantic versioning, and auto-upgrade.","href":"/deployment"},{"title":"Troubleshooting","href":"/troubleshooting"},{"title":"Contributing","description":"Build, test, and commit conventions.","href":"/contributing"},{"title":"Changelog","href":"/changelog"}]}]}]},"basePath":"","title":"Troubleshooting - webrain","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":[],"chunks":[]}