Dashboard
The Cartographer dashboard is your command center for discovery, agent runs, exports, and integrations. Access it at app.molar.it/dashboard/cartographer (Molar Cloud) or http://localhost:3000/dashboard (local dev).
Trace viewer (session replay, Debugger chat) lives on a separate route tree: /traces and public /r/[shortId] — not nested under /dashboard.
Product page: cartographer.molar.it
Deployment modes
Cartographer ships in two dashboard modes with identical product pages — only org chrome and billing scope differ.
| Mode | Who | Sign-in | Billing |
|---|---|---|---|
| Standalone | Cartographer-only SKU | Cartographer host or app.molar.it | Cartographer usage only |
| Combined | Full Molar bundle | app.molar.it shared session | Product usage here; org billing on central hub |
Combined-mode chrome
When your org has multiple Molar products, the dashboard adds:
- Org switcher and link to Molar home
- App switcher (Guard | Cartographer | Clones | Trace)
- Org billing link to the central combined view
- Shared team/SSO identity from the platform
Product navigation (projects, runs, traces) is unchanged. Cross-product modules — Guard PR gating, Clones fleet, org scenario catalog — live on the central hub, not inside Cartographer.
Note:
Cartographer uses Agent runs and Traces as nav labels. Guard uses Checks; Clones uses Sessions — avoiding a generic "Runs" collision across products.
Global behavior
These apply on every page:
| Behavior | Detail |
|---|---|
| Authentication | All pages except login, signup, and public trace share require a valid session |
| Project scoping | Data filtered to projects you can access — no cross-tenant leakage |
| Loading states | Skeleton loaders on fetch; actionable errors (not blank screens) |
| Empty states | Every list includes a CTA to create the first item |
| Breadcrumbs | Project → section → detail on nested pages |
| Real-time | Run and trace pages subscribe to WebSocket/SSE; reconnect banner on disconnect |
| Notifications | Toasts for run complete, export ready, critical finding, extension approval |
| Deep links | Copyable URLs for every run, crawl, trace, export, finding, demo |
| Preflight health | Mission Control shows API/worker/LLM status; degraded state may block actions in the UI |
System health strip
Shown on Home and project hub. Must be green before destructive actions:
| Check | Blocks when red |
|---|---|
API /healthz | All actions |
| Planner API key / hosted routing | Start run, discover flows, export |
| Google API key (if tier 1 enabled) | Vision escalation, export healer |
| Hatchet reachable | Queue crawl/run/export |
| Agent / crawl / export workers | Matching job types |
| Redis | Live stream |
| MinIO / S3 | Artifact viewing |
Fix links point to Settings → AI & models, worker docs, or Troubleshooting.
Information architecture
Cartographer web has two UI stacks today:
| Stack | Base path | What it covers |
|---|---|---|
| Product dashboard | /dashboard/* | Projects, crawls, runs, exports, findings, integrations |
| Trace viewer | /traces/*, /r/* | Trace list, detail, share, embed |
Legacy routes /projects, /runs still exist for early flows; new work should use /dashboard.
Product dashboard routes (/dashboard)
/dashboard Mission Control (home)
/dashboard/projects Projects list
/dashboard/integrations MCP, extension, GitHub
/dashboard/ai-settings AI & models (org)
/dashboard/org Organization
/dashboard/projects/{projectId} Project overview
/dashboard/projects/{projectId}/explore Crawls & route maps
/dashboard/projects/{projectId}/flows Discovered flows
/dashboard/projects/{projectId}/runs Agent runs (project)
/dashboard/projects/{projectId}/runs/{runId} Run detail (flagship)
/dashboard/projects/{projectId}/findings Findings inbox
/dashboard/projects/{projectId}/exports Exports
/dashboard/projects/{projectId}/recordings Demo recordings
/dashboard/projects/{projectId}/credentials Credential aliases
/dashboard/projects/{projectId}/settings Project settings
Trace viewer routes (separate stack)
/traces Trace list
/traces/{id} Trace detail
/r/{shortId} Public trace share (no login)
/r/{shortId}/embed iframe embed
/runs Legacy global agent-run list (links to /traces)
Home (/dashboard)
Purpose: Entry after login — status, recent work, quick actions.
| Section | Content |
|---|---|
| System status | API, workers, LLM keys — Mission Control card |
| Quick actions | New project, start crawl, start run, MCP install link |
| Recent activity | Runs, crawls, exports, findings |
| Usage cards | Runs, pages crawled, exports, LLM spend estimate |
Note:
Use Mission Control quick actions and the onboarding flow on Home, or follow Quick start.
Projects
Projects list (/projects)
| Column | Description |
|---|---|
| Name | Project display name |
| Primary seed URL | Default entry point |
| Env tag | staging / prod / custom |
| Last crawl | Date and status |
| Last run | Date and status |
| Open findings | Critical + serious count |
| Default grounding tier | 0–2 |
| Created | Timestamp |
Actions: Create, archive, open hub, duplicate settings to new project.
Filters: Environment, has failures, has open findings, search by name/URL.
Project hub (/projects/[id])
Command center for one application.
Header: Name, env badge, primary URL, edit settings, base URL selector (multi-seed projects).
Action bar:
| Action | Key options |
|---|---|
| Start crawl | Depth (4), max pages (500), scope, anti-bot, resume crashed |
| Start run | Goal, max steps (50), grounding tier, credentials, browser adapter, record demo, headless, human preset |
| Discover flows | Batch enqueue from latest route map |
Summary cards:
| Card | Links to |
|---|---|
| Route map | Last crawl stats; start crawl if none |
| Runs table | Paginated agent runs with export/trace actions |
| Findings | Severity counts → filtered inbox |
| Demos | Count and last recorded |
| Integrations | GitHub, MCP sessions, extension status |
Project settings (/projects/[id]/settings)
| Tab | Settings |
|---|---|
| General | Name, seed URLs, env tags, scope allowlist, robots.txt override |
| Grounding & browser | Default/max tier, browser adapter, human preset, headless, anti-bot, fingerprint seed (read-only per run) |
| Passive UX | VLM budget, sampling rate, axe/odiff/vlm toggles |
| Extension | Origin allowlist, PII redaction fields, data-cartographer-ignore docs |
| Retention | Trace hot/warm/cold days, artifact TTL, auto-pin on failure |
| Danger zone | Archive project, delete all crawls |
Crawls and route maps
Crawls and route maps live under /dashboard/projects/{id}/explore (not a separate /crawls URL).
All crawls for the project appear in the Explore section: id, seed URL, status, page count, timestamps.
Actions: Open route map, re-crawl with same params, compare two crawls (when available).
Route map detail (within Explore)
| Panel | Content |
|---|---|
| Header | Status, throughput, page/edge counts, anti-bot flag, cancel (if running) |
| Page explorer | Paginated table: URL, pattern, depth, status, DOM hash, screenshot/HAR flags |
| Page drawer | Markdown preview, a11y tree, screenshot, HAR download, start run from this page |
| Route graph | Interactive graph — zoom, pan, click node → drawer |
| Compare mode | Second crawl → added/removed/changed patterns |
Agent runs
Project runs (/dashboard/projects/{id}/runs)
Agent runs for one project. Global legacy list: /runs.
| Column | Examples |
|---|---|
| Project, goal, status | |
| Steps, tier 0/1/2 counts | |
| Duration, cost estimate | |
| Trace link, export link | |
| Created by, created at |
Filters: Project, status, date range, env, created by, failed only, has export, has findings.
Bulk actions: Cancel selected (running), export selected (completed).
Saved views: "Failed this week", "Running now", "No export yet" — plus custom saved views.
Run detail (/dashboard/projects/{id}/runs/{runId}) — flagship screen
Three regions: trajectory graph (left), live execution + step list (center), step inspector (right).
| Region | Features |
|---|---|
| Header | Goal, status, duration, steps, tier 0%, LLM cost — Cancel, Export, Open trace, Compare |
| Live panel | WebSocket stream: steps, tier escalations, planner thoughts, progress bar |
| Trajectory graph | react-flow nodes per step; color by ok/fail; border by tier |
| Step list | idx, action type, target, duration, tier badge |
| Step inspector | Action detail, screenshots before/after, selector candidates, locator used, HAR snippet, linked finding |
| Tier chart | Distribution + escalation reason table |
| Findings inline | Severity badges with links |
| Artifacts | trace, video, har, screenshots, export_zip downloads |
| HITL panel | When pending_human — message, take over (extension), approve/deny, resume |
| Audit strip | Adapter, fingerprint seed, credentials alias name (not secret), headless, anti_bot |
Post-completion: edit & regenerate export with hint; promote finding to export assertion.
Traces
Separate nav from agent runs — session replay and debugging.
Trace list (/traces)
| Column | Description |
|---|---|
| Trace id, linked run | |
| Project, status | |
| Failure summary, step count | |
| Pinned, retention tier |
Actions: Pin/unpin, share, download NDJSON, download report.md, Layer 2 replay, delete (with retention confirm).
Trace detail (/traces/[id])
|------|---------------|-------------| | Left | Steps sidebar — click to scrub | — | | Center | Events log; Video tab when recording exists | DOM (rrweb) default; Playwright Source iframe | | Right | Debugger chat; Diff when child replay exists | Network, Console, Clones synced panels | | Share | Share modal — URL + visibility | Slack unfurl | | Keyboard | — | J/K/F/Space scrubber — see Trace keyboard shortcuts |
Layer 2 diff appears in the Diff tab when a replay child trace exists — not a separate /replay/{id} route today.
Public share: /r/[shortId] and /r/[shortId]/embed — read-only, no login.
See the Trace product docs for API and ingestion workflows.
Exports
Exports are per-project at /dashboard/projects/{id}/exports.
Columns: export id, run id, status, lint/verify flags, testid coverage %, timestamps.
Export detail (within project exports)
| Section | Content |
|---|---|
| Pipeline status | pending → pruning → ranking → clustering → generating → linting → verifying → healing → complete |
| Spec preview | Syntax-highlighted per file |
| Page object updates | File list with preview |
| Warnings / lint / verify | Full output when failed |
| Coverage | testid_coverage_pct — warning below 30% |
Actions: Download zip, open GitHub PR (.
Findings
Project findings (/dashboard/projects/{id}/findings)
Grouped by severity (critical first), then route pattern.
| Column | Description |
|---|---|
| Severity, rule_id, source | axe / odiff / vlm |
| Route pattern, description | |
| Run link, dismissed flag |
Bulk actions: Dismiss selected, create baseline from selected.
Passive UX cost panel: VLM calls vs monthly budget, $/page average, alerts when over budget.
Finding detail (/findings/[id])
Full evidence screenshot, selector pattern, linked run step, dedupe hash.
Actions: Dismiss, undismiss, update visual baseline, add to export assertions, copy share link.
Demos (recordings)
Project recordings (/dashboard/projects/{id}/recordings)
Recorded demonstrations from the browser extension (unpacked dev build from the Cartographer repo).
| Column | Description |
|---|---|
| Title, project, seed URL | |
| Chunk count, duration, status | |
| Skill hit rate | Planner cache hits when available |
Actions: Open detail, delete, replay (creates agent run via API).
Integrations
MCP (/dashboard/integrations)
| Step | Action |
|---|---|
| 1 | Choose IDE client |
| 2 | Copy stdio or HTTP config snippet (https://mcp.molar.cloud or http://localhost:8000/mcp) |
| 3 | OAuth authorize (api.molar.it) on cloud |
| 4 | Test cartographer_list_projects |
Sessions table: Revoke active MCP sessions.
Quotas: MCP calls remaining, rate limit reset.
Full reference: MCP tools.
Extension (/dashboard/integrations)
| Panel | Content |
|---|---|
| Approval queue | Pending navigation/payment/password/scope |
| Record mode | Toggle per project → recordings library |
See Browser extension.
GitHub (/integrations/github)
GitHub App install, default export repo per project, webhook delivery log for export PR events.
Settings
Org- and project-level settings live inside the dashboard shell:
| Page | Path | Purpose |
|---|---|---|
| AI & models | /dashboard/ai-settings | Hosted vs BYOK, per-capability routing |
| Organization | /dashboard/org | Profile, team, billing link |
| Project settings | /dashboard/projects/{id}/settings | Seed URLs, scope, grounding, extension allowlist |
| Credentials | /dashboard/projects/{id}/credentials | CRUD aliases — secrets never shown after save |
API tokens for cartog mcp and PAT auth: configure via API keys endpoint / org settings (dashboard UI.
Outbound webhooks (run.completed, export.ready, …) —.
Configuration detail: Configuration.
Help & ops (/help)
| Resource | Link |
|---|---|
| Documentation | This docs site |
| E2E verify commands | make verify-e2e |
| Hatchet dashboard | Job queue (local :8080) |
| Langfuse / Jaeger | LLM and infra traces |
| Worker status | agent, crawl, export, trace workers — heartbeat + version |
| Reset onboarding | Clears home checklist |
Typical user journeys
| Persona | Dashboard path |
|---|---|
| First-time user | Home checklist → project → crawl → run → trace → export |
| Daily QA engineer | Project hub → discover flows → review failures in trace → findings → export → GitHub PR |
| IDE user | Integrations MCP → trigger run from IDE → watch same run live in dashboard |
| Authenticated-site testing | Credentials → run with alias → extension approval queue → HITL panel |
| Record & replay | Extension record → demos library → replay as run |
| Debug failure | Failed run → /traces/{id} → Debugger chat → Layer 2 diff → regenerate export |
Related
| Page | Topic |
|---|---|
| Quick start | First crawl and export |
| Core concepts | Crawls vs runs, grounding, export pipeline |
| Browser extension | Record mode and relay |
| MCP tools | IDE integration |
| Troubleshooting | Health strip and worker issues |