Troubleshooting & FAQ

Fix common Cartographer issues — workers, auth, crawls, runs, export, MCP.

Troubleshooting & FAQ

Answers for the most common Cartographer support questions. For error code reference, see Error codes. Contact support@molar.it for account-specific issues.


Quick diagnostics

Run these checks first:

CheckHow
API healthGET /healthz or dashboard health strip
Workers registeredHatchet UI (:8080 local) or health strip "Agent worker"
LLM configuredSettings → AI & models — all required capabilities green
Quota headroomBilling → Usage → Plan limits
Live streamRun detail — WebSocket connected (no reconnect banner)

Local all-in-one:

make verify-phase-0

FAQ

What is Cartographer?

An autonomous QA agent that crawls your app, verifies user flows in a real browser, and exports Playwright tests. See Overview.

Do I need Playwright experience?

Helpful but not required. Export produces runnable tests; your team edits assertions like any other suite.

Can Cartographer test production?

Yes, with caution. Use read-only goals first, respect rate limits, and prefer staging. Production runs appear in audit logs.

Does exported code need CloakBrowser?

No by default. Exported playwright.config.ts uses stock Chromium. Opt in only if your CI targets bot-protected sites.

Which LLM providers are required?

None specific on Molar Cloud hosted models. Self-hosters need at least one text model (planner) and one vision model (tier-1 escalation) unless tier 0-only + local tier 2.

How is my data isolated?

Every query is scoped by org_id. Artifacts live under org/project prefixes in object storage. See security docs for RLS and vault details.

Can I use Cartographer without the dashboard?

Yes — cartog mcp (stdio) and cartog ci expose the REST API from your IDE or shell. The dashboard adds route maps, live run streaming, and the /traces viewer.

What is the difference between a crawl and a run?

Crawl discovers URLs (route map). Run pursues a goal with verification (trajectory). See Core concepts.


Authentication & login

SymptomCauseFix
Redirect loop on loginBETTER_AUTH_URL mismatchStandalone: match web origin; combined: point to app.molar.it
API 401 from dashboarddashboard API JWT or session expiredRe-login; check BFF_JWT_SECRET consistent across web/API
MCP OAuth failsWrong resource URLUse https://mcp.molar.cloud as RFC 8707 resource
CLI whoami failsInvalid or expired PATcartog config set token <new-pat>

Note:

Do not store session tokens in localStorage. Cartographer uses HttpOnly cookies for browser sessions.


System health / blocked actions

Health check redFix
API /healthzStart API container / check CARTOGRAPHER_API_URL
ANTHROPIC_API_KEY / plannerAdd key or enable Molar-hosted routing
GOOGLE_API_KEYRequired for tier-1 and export healer unless fully tier-0 + BYOK alternate
Hatchet unreachableStart Hatchet stack; verify HATCHET_CLIENT_TOKEN
Agent worker missingmake agent-worker or scale worker deployment
Crawl worker missingmake crawl-worker
Export worker missingmake export-worker
Redis unreachableStart Redis; live stream won't work
MinIO/S3 unreachableArtifacts and screenshots fail — fix S3_* vars

Crawls

SymptomLikely causeFix
Crawl stuck at 0 pagesSeed URL unreachable or blockedVerify URL in browser; enable anti-bot
Very few pages on SPALink-only phase insufficientEnable interactive crawl for deeper discovery
Crawl killed mid-flightWorker crash or OOMResume from checkpoint; lower max_pages
429 on crawl startDaily page quotaWait for reset or upgrade plan
robots.txt blockedPolicy respectedOverride in project settings only if you own the site

Agent runs

SymptomLikely causeFix
Run queued foreverNo agent workerRegister worker in Hatchet
Max steps exceededGoal too long or loopIncrease max_steps; narrow goal
Tier 1 spam / high costCanvas-heavy UIExpected; set vlm_budget_cents; improve data-testid on app
Login failsMissing credentialsCreate credential alias; pass credentials_alias
Wrong page after clickAmbiguous DOMRaise grounding tier to 1; fix aria labels in app
HITL pauseLow confidence / sensitive actionApprove in extension queue or dashboard
Run succeeded but wrong outcomeWeak assertionsEdit goal to include explicit verify clause

Self-heal exhausted

The actor retries alternate selectors before failing. If all tiers fail:

  1. Open Trace at failure step
  2. Use Debugger chat to understand DOM state
  3. Re-run with record_demo after manual path
  4. Add data-testid to unstable elements (export will prefer them)

Export

SymptomLikely causeFix
Export button disabledRun not succeededFix run or export with include_failed_branches if supported
Healer loop failedSite changed during exportRe-run agent; export again
Lint errors in zipGenerated anti-patternsReport issue — healer should fix; manual edit
Self-verify timeoutSandbox cannot reach appAllow egress to staging URL from worker network
Low testid warningApp lacks stable idsAdd data-testid — warning is advisory

MCP & IDE

SymptomFix
cartog mcp silent hangEnsure stderr only in MCP mode; check API URL
Tool timeoutIncrease client timeout; long runs use task polling
401 on HTTP MCPComplete OAuth; check token audience
Progress stopsCall cartographer_get_task; verify MCP_HTTP_BASE_URL points at API (:8000 locally)
Wrong projectPass explicit project_id

Browser extension

SymptomFix
DisconnectedRe-login; cartog browser connect
Relay 403Add origin to project allowlist
Recording emptyNavigate slowly; wait for soft chunk boundaries
Approval not shownConfirm extension adapter selected

See Browser extension.


Docker / local dev

SymptomFix
make bootstrap slowNormal first time (~30 min, CloakBrowser download)
Docker OOMAllocate ≥6 GB RAM to Docker Desktop
CloakBrowser checksum failNever set CLOAKBROWSER_SKIP_CHECKSUM=true — re-download
Port conflictsStop other services on 3000/8000/5432 or remap compose
macOS worker wedgeRestart workers after sleep; see repo gotchas doc

Quotas and billing errors

HTTPMeaningAction
429Daily run or crawl page quotaBilling → Usage; upgrade or wait UTC day rollover
402Hosted LLM spend capAdd BYOK or raise cap (Owner)
403Missing Cartographer entitlementUpgrade SKU or contact sales

Performance

QuestionGuidance
Crawl slow on large siteLower depth; scope allowlist to subdomain
Run slowTier 0 is fastest; tier 1 adds ~500ms per escalation
Export slowHealer + self-verify add minutes — normal for large trajectories
Many parallel runsPlan limits concurrency; queue in Hatchet

Getting help

  1. Copy the run ID, trace link, and timestamp
  2. Note deployment mode (cloud / self-hosted) and plan tier
  3. Email support@molar.it or use in-app Help
  4. For security issues: security@molar.it (do not post secrets in tickets)

Include: goal text, base_url, grounding tier, browser adapter, and whether extension was connected — never include credential values.