live Forensic replay is in the demo workspace — open Trace →
Now in private beta · for teams shipping with agents

Replay every failure, like a debugger.

Trace is Molar's flagship forensic replay surface — every Playwright, Cypress, Cartographer agent, and Guard run becomes a five-ribbon record: video, DOM, network, console, clone state, and agent thoughts on one playhead. Scrub backward and forward, ask the Debugger what broke, replay from any step with a fix — then hand confirmed diffs to Mender for a draft fix PR.

2.4s
P99 ingest · accept to viewable
~30×
Faster repro than re-running the test
12
Event kinds captured per step boundary
$0
Platform fee · pay only for storage + tokens
Trusted as a debugging surface by
THE SCRUBBER

One playhead. Five ribbons. Every event in time order.

The Trace viewer stacks every event stream as a parallel ribbon — step, network, DOM, console, agent. The playhead is the same time cursor across all of them. Drop on a failure tick and the right pane already shows you the 404, the console error, and the planner's last thought.

app.molar.it / r / xY9zQ2mNp
failed · step 7 · webhook-404 · 30.1s · 8.5 MB · 48 blobs
Steps · 12
01navigate /checkout
02fill email
03select plan = Pro
04click submit
05quote
06apply WELCOME10
07await stripe webhook
08assert receipt $9.00
09navigate /account
10assert plan = Pro
11send receipt email
12assert email received
app.acme.dev / checkout

Checkout

Plan
$90.00
↑ off by 10× · coupon WELCOME10 applied as multiplier
Email
qa+pro@acme.dev
Coupon
WELCOME10
Complete checkout
step 7 · webhook 404 · receipt URL malformed · expected $9.00 got $90.00
EVENTS · TIME ORDER
2.20sstep.start · apply WELCOME10
2.24sconsole.warn · suspicious total: 900 → 9000
2.38snetwork.response · 404 POST /api/webhooks/stripe
2.58sconsole.error · POST 404 (Not Found)
2.62sconsole.error · Failed to confirm payment
2.70sclone.state · stripe · pending=1
4.40sagent.thought · suspect discount inverted
4.42sassertion · expected 200 got 404
4.52srun.end · failed
NETWORK · 7 REQUESTS
0.20s200 GET /checkout
0.95s200 POST /api/quote
2.20s200 POST /api/coupon/apply
2.38s404 POST /api/webhooks/stripe
2.41s··· GET /api/receipt · pending
2.58s500 POST /api/payment/confirm
2.90s429 POST /api/webhooks/stripe · retry
CONSOLE · 2 WARN · 3 ERROR
2.24swarn · suspicious total: 900 → 9000
2.58serror · POST 404 (Not Found)
2.62serror · Failed to confirm payment
2.70swarn · receipt URL malformed
4.42serror · Uncaught (in promise) AssertionError
CLONE STATE · STEP 7 BOUNDARY
stripecharge=none · pending=1 · amount=9000
emailqueue=0 · sent=0
postgresorders[1].status=pending
postgresorders[1].total=9000 · expected 900
redisidempotency:wh_7 = held
DEBUGGER · SCOPED TO THIS TRACE
why did step 7 fail?
The webhook URL embedded amt=9000 [seq:16]. discount.ts:14 returns amount * coupon.value — it should be amount * (1 - coupon.value). That inverts the 10% coupon into a 10× multiplier, so Stripe rejected the malformed receipt URL with a 404.
↳ Replay from step 6 with patch applied
2.38s / 30.1s [J/K] step · [SPACE] play · [F] pin · [D] debugger · [R] replay
STEP
NETWORK
DOM
CONSOLE
AGENT
HOW IT WORKS · 3 STEPS

From green light in five minutes.

Trace is a reporter for whatever you're already using. Drop a token, ship a CI run. Failures become permalinks the same day.

1

Add the reporter.

One line in your Playwright (or Cypress, Selenium, Cartographer) config. We capture video, DOM, network, console, and Clone state at every step boundary.

playwright.config.ts
12 13 14 15 16 17
reporter: [ ['@molar/trace', { token: env.TRACE_TOKEN, clones: ['stripe', 'email'], }], ],
2

Open the failure.

Every failed run becomes a permalink. Scrub the timeline, step through events, watch the DOM mutate. Pinned failures stay hot for 90 days — others tier down automatically.

3

Ask the Debugger.

The forensic chat reads NDJSON events, Clone state, and your source via the GitHub App. Replies cite events on the agent ribbon. Replay from any step with a one-line patch — or hand the confirmed diff to Mender for a fix PR.

YOUWhy did step 7 fail?
DBGThe webhook embedded amt=9000 [seq:16]. discount.ts:14 returns amount * coupon.value — should be amount * (1 - coupon.value).
↳ Replay from step 6 · or hand to Mender
BUILT FOR AGENT-ERA CI

It's a Playwright trace viewer for the part where an LLM wrote the code.

Playwright Trace Viewer is great if a human wrote the test and the test broke for a known reason. Trace is for the messier reality: an agent shipped a 14-line PR, two clones, four flaky assertions, and a failure that needs to be diffed against the last green run by next standup.

WHAT YOU WANT
PLAYWRIGHT TRACE VIEWER
TRACE · BY MOLAR
Scrub a failure timelinevideo + DOM + network + console aligned to a single playhead
Yes
Yes — plus agent thoughts & clone state on the same ribbon
Clone-of-Stripe / Postgres state at step Nsee exactly what your sandboxed services thought the world looked like
Snapshotted at every step boundary, jmespath-queryable
Forensic chat with citations“why did step 7 fail?” → a paragraph linked to the exact events
Reads NDJSON, clone state, and your source via GitHub App
Replay from step N with a fixrestore clone state to a boundary; re-run later steps with edits applied
Layer 2 replays · diff against the source trace · ship the patch
Cluster by failure signature“webhook-404 · ×7 in 24h” — one fix, many cases
Stack-trace + URL-shape signature, auto-clustered
Storage that scales with realitythousands of traces a day shouldn't cost more than your test runner
Local .zip · you self-manage
hot · warm · cold · GB-mo billing · pin to keep hot
Mender fix-PR hand-offGuard failure → forensic replay → confirmed diff → draft fix PR with regression test
One click from Debugger or Layer 2 comparison · human approves merge
MCP server for your IDElet your coding agent search and read traces directly
@molar/trace-mcp · Claude Code, Cursor, Windsurf
Public share linkspaste a trace into a ticket without giving repo access
Read-only, expire, hide source SHA / Debugger
WHO IT'S FOR

Four doorways. Same artifact.

A trace means something different to QA, an SRE, an engineer, and a coding agent. Trace gives each of them a doorway over the same NDJSON.

THE MOLAR SUITE

Trace is one root of Molar.

Molar is a small suite of tools for teams shipping with agents. Each tool is independently good; together they share state, identities, and storage so the four of them feel like one product.

UNDER THE HOOD

Twelve capabilities you'll actually use.

Trace earns its keep on the second failure of any given kind. By the seventh, it's saving an hour a week.

Stacked-ribbon scrubber

One playhead across step, network, DOM, console, and agent ribbons. Click a tick, jump to the moment.

viewer

Failure signatures

Hashes of normalized URL + stack frames cluster identical failures so you fix one and close seven.

triage

Debugger chat with citations

Forensic chat scoped to one trace. Replies link to [seq:N] so you can jump back to the exact event.

debug cites events

Layer 2 replays

Restore clone state to a step boundary, apply a scenario or source patch, re-run later steps. Diff against the source trace.

replay

Clone state at every step

Stripe, SendGrid, Postgres — every clone snapshots its state at step boundaries. Query with jmespath, diff across runs.

clones

Hot/warm/cold tiers

Full video for 90 days, NDJSON for a year, cold-tier NDJSON for three years. Pin to override. Predictable bills.

storage

Mender hand-off

When Debugger or Layer 2 confirms the root cause, promote the diff to Mender. It drafts a fix PR with regression tests — you approve the merge.

guard fix pr

Saved views

“Failed · 24h”, “Awaiting Layer 2”, “PR #4521” — saved filters that show up as left-rail entries.

list

Public read-only share

Paste a trace into a Linear ticket or a customer email. Read-only, expirable, hides Debugger and source SHA.

share

PII redaction at ingest

Mask selectors, headers, and query params before anything hits S3. Email-shape detection in console logs.

privacy

EU residency

Pin a workspace to eu-west-1. BAA available on annual plans. Workers, S3, and Debugger calls stay in-region.

compliance

Webhooks & SSE

Subscribe to trace.failed, cluster.opened, layer2.succeeded. Or stream live ingests via SSE.

api

MCP for your IDE

@molar/trace-mcp exposes trace search, read, diff, clone-state, and replay tools to your coding agent.

agent
INTEGRATIONS

Plays nice with the rest of the stack.

Trace ingests what you have, exports what you'll need, and stays out of the way otherwise. None of these require Molar everywhere.

Playwright

Drop-in reporter. Same trace.zip you already export — richer index, hosted viewer.

reporter · npm
Cypress

Plugin loads in setupNodeEvents; ships video + HAR + console.

plugin · npm
Selenium

pytest listener for Python. CDP capture for Java/JS via testcontainers.

pypi · maven
Cartographer

Agent runs ship a trace automatically; clone state included.

native
Guard + Mender

Every Guard check produces a trace — failed gates open here for forensic replay, then hand off to Mender for fix PRs.

native · failure → trace → mender
Clones

State at every step boundary, queryable with jmespath. Diffable across runs.

native
GitHub

App reads source so the Debugger cites your code. PR check posts a trace summary.

app · cli
Slack

Unfurls share links, posts clusters on threshold, replies with Debugger if asked.

app
PRICING · USAGE-BASED

Pay for the storage you keep, not the seats.

No per-seat fees. No platform tax. Trace charges for GB-mo of NDJSON + video, for Debugger tokens, and for Layer 2 replays — three lines on the invoice. Everything else is included.

SOLO

Free

$0/ month

For tinkering, demos, and a single sandbox. Public traces only past 7 days.

  • 1 GB-mo hot · 5 GB-mo cold
  • 200 traces / month
  • 1 workspace · 1 seat
  • 7-day hot retention
  • Debugger · cheap mode only
Most teams
TEAM

Usage

$0.40/ GB-mo hot · then usage

For the team shipping daily with agents and a CI loop that matters.

  • Unlimited traces · 30 GB-mo included
  • Unlimited workspaces & seats
  • 90-day hot · 365-day warm · 3y cold
  • Debugger · Opus + Haiku · BYO key option
  • Layer 2 replays at $0.20 / minute
  • Slack · GitHub · MCP · webhooks
ENTERPRISE

Annual

contact/ annual

For teams under audit or regional residency rules.

  • EU / US residency · BAA
  • SSO · SCIM · custom roles
  • Custom retention · legal hold
  • VPC-peered S3 · CMKs · audit log export
  • Solutions architect · uptime SLA
All tiers include unlimited public share links · NDJSON export · MCP server · zero platform fee
FAQ

Honest answers to the real questions.

Also known as: Playwright trace alternative, test replay debugger, forensic CI debugging, Replay.io alternative, flaky test root-cause. See Trace vs Playwright Trace Viewer and Mender auto-fix.

Do I have to use Cartographer or Guard?+

No. Trace works standalone for any Playwright, Cypress, Selenium, or raw NDJSON source. The other Molar tools are nice to have because they ship traces automatically, but Trace doesn't require them.

How is this different from Sentry / Datadog RUM?+

Sentry and Datadog watch production. Trace watches your test loop. We don't compete with crash reporters; we sit at the seam between agent-written code and a green CI run. (We do post Trace links into Sentry incidents.)

What's a “Layer 2 replay”?+

The default trace is the recording (Layer 1). Layer 2 is a re-run: pick a step, restore clone state to that boundary, optionally apply a source or scenario patch, re-execute later steps. You get a new trace and a diff against the original.

How do you handle PII?+

Per-workspace redaction rules apply at ingest, before NDJSON hits S3. Mask selectors, request headers, query params, and email-shape strings in console logs. Redaction is irreversible. EU residency is one toggle.

Can I export everything?+

Yes. POST /trace/v1/export bundles your workspace as NDJSON + video + clone snapshots into a single tarball. No lock-in, ever.

What does the Debugger cost?+

Opus is metered at the model's published rate plus a 10% margin. Haiku (cheap mode) is the same. You can set a monthly cap, a soft cap that flips to cheap mode automatically, and per-user budgets. Bring your own Anthropic key to bypass our markup.

Does Trace replace Playwright Trace Viewer?+

For agent-era CI: yes, but we don't make you choose. The Playwright trace.zip is one of our supported artifacts. Open it in the local viewer when you're offline; open it here when you want clusters, Debugger, and replay.

How does Trace connect to Mender?+

Guard runs your scenarios; failures produce traces that open here for forensic replay on the five-ribbon timeline. Debugger cites [seq:N] events and reads Mender's classification when present. When you confirm a fix — via Layer 2 replay or Debugger — one click hands the diff to Mender, which drafts a fix PR with a regression test. A human always approves the merge.

Is there an on-prem option?+

Yes, on Enterprise. We ship a Helm chart that runs ingest, workers, S3-compatible storage, and the Debugger against your own model endpoint.

OPEN THE DEMO · NO CARD

Stop re-running. Start replaying.

One token, one CI run, one permalink your team will paste in standup for the next year. The demo workspace already has 1,240 traces in it — open the failed checkout and start scrubbing.

Private beta · 47-day trial · usage-based · zero platform fee