Make your agentverify its own work.

Not by asking it. Reticle opens the running app, walks the flow, and reads the network calls, the app's own state, and the console. The verdict is a fact your agent cannot talk its way around.

Free and open source. It runs on your machine and your code stays there.

86 / 88
seeded bugs caught
0
false alarms
0%
flaky results

Engineers and QA teams use Reticle at

IBMGrapevineGrapevine
Reticle catching a hidden failure and handing the agent the exact fix

Sound familiar?

Three ways your agent says “done”and isn't

It fixed the bug and broke the feature

You hand it one ticket. It ships the fix and quietly takes out the flow that worked yesterday, because nothing re-ran that flow. You find out from a user.

receipt: fixed: cart total · broke: guest checkout

It said it was working. It was mock data.

Hardcoded response, green checkmark, a confident summary of work it never did. The agent was optimising to look done, and looking done is easier than being done.

receipt: return MOCK_ITEMS · agent: “verified ✓”

You are the test suite

Every change, you click through it yourself, find the thing it missed, and paste the failure back into the chat. Then you do it again. That is a QA job, and you did not apply for it.

receipt: you → agent → you → agent → …

Different symptoms, same cause: nothing checks the agent's work except you. The tools that could check it only see what reaches the screen, and a confident agent looks correct on screen. Reticle sits inside the running app and reads what actually happened underneath.

Playwright runs before you ship. Reticle runs after every edit.

What it does

It checks your app the way you would, and it remembers how.

Reticle's replay engine re-runs a recorded flow once and prints a verdict, instead of an LLM re-driving it and burning tokens

It remembers every flow

The first time your agent verifies a flow, say checkout, Reticle records it. After that it re-checks that flow on every change, and nobody has to remember to ask.

A page that looks shipped, with mock data, a dead click and a hidden 500 leaking underneath, all caught by Reticle and marked FAIL

Proof on every commit

Change one thing, break another. That is the bug that actually ships. Reticle re-runs every flow it remembers after each change and gets the same answer every time, which costs about 47 tokens for the whole set. That is cheap enough to run on every commit without thinking about it.

A broken Pay button traced to onPay.tsx line 46 and handed to the coding agent as a repair packet

It understands your user's journey

Reticle checks the outcome you actually care about. Did the order get placed, did the card get charged once instead of twice. When it fails, it names the file and the line.

Evidence

See exactly why a check failed.

A bare pass or fail does not tell an agent much. Reticle hands over the network trace, the app's own state at the moment it broke, and the line that did it, which is enough for the agent to reproduce the bug and then prove the fix. In our ablation that one change cut its fix-loop tool calls by 45%.

A UI that 'looks ok' is opened up; Reticle weighs the program truth (network 200, store updated, no console error) against the noise to reach a PASS/FAIL verdict.
Benchmark chart: re-running the recorded suite through Reticle's replay engine versus an LLM re-driving every flow.

Re-run the whole suite for pennies.

You do not have to send the agent back through every flow and pay for those tokens again. Reticle replays the recording directly, so it costs about 47 tokens and returns the same verdict every time.

Benchmark

Measured. Reproducible. Including where we lose.

Every number here comes from a committed harness. Clone the repo, run pnpm bench, get the same numbers, losses included.

47tokens

to re-run a 4-flow suite. Playwright spends ~120k, DevTools ~129k.

Critical bugs caught (of 26)

26
Reticle
9
Playwright

The bugs that corrupt data or hide a failure: silent 500s, UI-vs-store desync, dead handlers, double-submits. Across all 88 seeded bugs it is 86 vs 60. The gap is widest exactly where it hurts.

0%flake

Every run, the same verdict. No sampling, no retries.

Reads the program, not the picture

Reticle asserts on DOM, network, state, and console. The others photograph the rendered surface and hope.

DOMorder #4812
networkPOST /charge → 200
statecart.items = 0
consoleno errors
vs the restReticlePWDevToolsReads real app state & signalsPoints to the source lineDeterministic, 0% flakeRe-runs for ~47 tokens

AI re-checking its own work is a fast-growing line on your AI invoice. Reticle makes each re-check roughly 2,500× cheaper. Measured, and reproducible from the harness above.

Where we lose: pixel regressions, sites you don't own, non-React frameworks, and cross-browser rendering. The full head-to-head, losses included, lives on the comparison pages.

The bottleneck

Your agent codes in minutes.
Then waits days for you.

re-checking by hand
~120k tokens / run
Researchagent · minutes
Codeagent · minutes
Testhuman · days
Feedbackhuman · days
Turn on Reticle
Agent writes the codefast
Human tests & respondsvery slow

The loop only moves as fast as its slowest step, and that step is checking every edit. Do it by hand and the release waits on you. Hand it to an LLM and every re-run shows up on your AI bill. Reticle replays the recording it already has, so the whole set costs about 47 tokens (roughly 2,500× cheaper) and gives the same verdict each time.

Trust

Built to pass your security review

Reticle reads your running application, so we designed it for the person whose job is to say no to that.

Nothing leaves your machine

It sends us no code, no DOM, no network traffic, no console output and no file paths. The SDK is dev and preview only, tree-shaken out of production builds, and the bridge binds to 127.0.0.1 behind a token. The CLI does send anonymous usage events (which command ran, did a verdict pass) so we know what to build; turn it off for good with `reticle telemetry disable`.

Licensing is offline

Keys are signed with Ed25519 and verified locally. License checks never phone home, so an outage on our side cannot stop your build.

You can audit it yourself

The SDK is Apache-2.0 and the server is source-available. Go read the tree-shaking, the bind, and the license verify before you sign anything.

Your artifacts stay yours

Runs and flows are written to your disk under .reticle, with atomic writes and bounded retention. Export or delete them without asking us.

Pricing

The engine is free. You pay for the car around it.

The part one developer needs is open source and will stay that way. A team needs more than that: memory that survives a restart, infrastructure so running the whole suite is not one laptop's job, and a read on which failures are really the same failure.

For developers

Free, forever

Open source, runs on your machine, no account needed. You can take it to work without asking anyone first.

  • The Perception SDK, Apache-2.0, shipped inside your app
  • The verification engine: network, state, console, React commits
  • Record a flow, replay it deterministically, read the verdict
  • MCP server for Claude Code, Cursor, and any agent that speaks it
  • Runs on localhost with no account, and your app's data never leaves the machine
Get the free SDK

For teams and enterprises

Talk to us

Priced on the size of your team and your suite. Startups and enterprises both start with a conversation, because the setups are not the same.

  • Context and memory that persist across sessions, branches, and machines
  • Managed infrastructure to run the suite, so it is not one laptop's job
  • Parallel execution: the whole recorded suite at once instead of one flow at a time
  • Recorded flows shared across the team and replayed in CI on every PR
  • Issue determination: what broke, what it touches, and how failures relate to each other
  • SSO, audit trail, and a named engineer on your account
Talk to us

Straight answers

They run at different moments. Playwright and hand-written end-to-end tests run before you ship: you author spec files, maintain selectors, and run them in CI. Reticle runs after every edit your agent makes. Your agent records a flow once, and Reticle re-runs that recording on each change for about 47 tokens, with no model in the loop and the same verdict every time. It also reads program state the DOM never shows (network, store, console, React commits), so it catches silent bugs a screenshot tool cannot see. Most teams keep Playwright as the release gate and add Reticle to the inner loop while the agent builds.
Paste one line into your agent and it installs the in-source SDK and sets itself up. From then on your agent asks Reticle for proof, reads the pass or fail verdict, and fixes its own work before moving on. There is nothing for you to operate. It works with Claude Code, Cursor, and any MCP agent, and it is React and Next today.
The SDK is Apache-2.0 and the verification engine is open source, free forever, because we build for developers and a developer should never have to file a purchase request to try a tool. You pay for the platform around the engine: context and memory that persist across sessions and machines, managed infrastructure to run the suite, parallel execution, flows shared with your team and replayed in CI, and issue determination that shows how failures relate to each other. Teams, startups, and enterprises all start with a conversation, so we can price it against your team and your suite rather than a made-up seat count.
The embeddable SDK is Apache-2.0 and safe to ship inside your apps. The server, CLI, and MCP packages are source-available under FSL-1.1-ALv2, free for any use except reselling Reticle itself, and they convert to Apache-2.0 after two years. Enterprise features are source-available under our own license with a key required in production. Keys are signed with Ed25519 and verified offline, so license checks never phone home and our uptime is never a dependency of your build. Your security team can read every one of those claims in the repo before you sign anything. Book a call and we will walk your reviewers through it.
Reticle runs inside your own app at development time and reads it locally. The free dev loop sends nothing anywhere, so your code, state, and traffic stay on your machine. The Team tier shares only the verdicts and flows you choose to share with your team.
Partially. We measured it. On our 10-bug scripted detection set, a strong verification prompt recovers roughly 3 to 4 (silent failures reliably, dead buttons sometimes). No prompt reads your app's internal state or counts duplicate requests, because the data never reaches the tool. That ceiling is why Playwright catches 0 of the 8 state bugs and 0 of the 6 business-logic bugs in our 88-bug registry. The full head-to-head, losses included, ships on our public harness; if glue scores above 7 of 10 on that scripted set, our paid tier is dead and we've said so on the record.
  • You don't own the app's source. Reticle lives inside the code.
  • You're not on React/Next yet. Adapters are on the roadmap, and we won't pretend otherwise.
  • You have a QA team you like. Reticle covers the gap between agent edits; your release process stays theirs.
  • You want a dashboard for humans to watch. The agent is the user.

Still have a question? Ask us directly.

Catch your first false green today.

The SDK is free and open source. When your team outgrows one laptop and needs the shared memory and infrastructure around it, come talk to us.