What the reagent
actually does.
No dashboard to upload to, no test suite to write. Install the app, open a pull request, and a grounded persona dips into your preview deploy. Every capability below exists to make one PR comment worth reading, and to keep it quiet when there is nothing to say.
It finds your preview on its own.
The moment your host reports a deployment, Litmusly reads the preview URL straight from the GitHub Deployments API and dips into it. Vercel, or any host that posts deployments. There is nothing to paste and nothing to configure past the install. The reagent walks the real rendered page, not your code and not a mock.
A swarm walks it, not a script.
Each reagent opens the preview in a live browser driven by Stagehand and walks your homepage and primary CTA the way its persona would. No selectors to maintain, no steps to record. Every reagent runs a distinct profile, so the same page gets read seven different ways.
Loads your preview as a phone and taps with a thumb. If it takes pinch-zoom to use, that is a finding.
Navigates by Tab and Enter, no mouse. If focus cannot reach it, to her it does not exist.
Reads the page the way a careful visitor does before typing anything sensitive, and flags what erodes trust.
Seven reagents in all, each declaring what it watches for and what it is blind to. SEE THE FULL ROSTER ↗
One comment. Edits itself.
Findings land in a single PR comment, each tagged blocker, friction, or nit, and each carrying the quoted evidence the reagent actually said. Force-push and the same comment updates in place. No new thread, no pile of bot noise. Many PRs earn zero findings, and get exactly zero.
Two reactions worth reading. One I would fix before merge.
The primary CTA never reaches the fold at 390px.
“I scrolled twice looking for a way in. On my phone there wasn't one.” MARCUS · 390PX
Tab order skips the sign-up link entirely.
“I went key by key and never landed on it. Without a mouse I'm stuck.” PRIYA · KEYBOARD
Two buttons read differently and go the same place.
“"Get started" and "Start free" both drop me on the same form.” SAM · FIRST-TIMER
Severity reads as a reaction, not a number.
A blocker is strongly acidic. Friction sits in the middle. A page with nothing to say tests clean and basic. The scale is the same one your PR comment is measured against.
One verdict, read across every reagent.
On Pro and above, a synthesis pass reads all of the reagents together and writes a single line at the top of the comment: what reacted, how strongly, and whether it is safe to ship. Below it, the individual findings stay intact for whoever wants the detail.
Every walk runs under a hard cap.
Each review is bounded before it starts. When a walk hits its ceiling it stops and reports, so a runaway page can never run up a bill. Higher tiers add more reagents and more reviews per day.
Enterprise adds bring-your-own-key and is waitlist-only. FULL PRICING ↗
It reads your rendered preview, never your source.
Litmusly touches as little as the job allows and proves who it is at every hop.
Scoped, least-privilege install. It reads the pull request and posts one comment. Nothing more.
Every event is signature-verified before it runs. Unsigned or tampered payloads are dropped.
Bring your own model key on Enterprise. Stored encrypted, used only for your runs, never logged in the clear.
Put it on your
next PR.
Install in two clicks, open a pull request, and read your first reaction in under five minutes.