Skip to main content
Your agent says it works. Reticle checks. AI-written code has a specific failure mode: it looks right and silently doesn’t work. The POST returns 200 and nothing persists. The button is wired to a handler that never fires. One click sends two requests. A screenshot shows all of this as a perfectly nice page. Reticle reads the program from inside your running app. Network, state, console, routing, framework internals. It answers the only question that matters: did the change actually work? On React it also tells your agent which file to open.

Install it

Two commands. The first goes in a terminal, before you open your coding agent:
That registers the MCP server with every coding agent it can reach, so the reticle_* tools are there the next time you open one. Then, in your project, npx @reticlehq/server init wires the app. The quickstart walks both.

Or hand the whole thing to your agent

Copy the block below into Claude Code, Cursor, Copilot, Codex, Windsurf, OpenCode, or any MCP agent. It ends with the only definition of “installed” that counts: one real flow driven, one real verdict returned.
The plugin and the skills CLI are alternatives to the registration half only, not to init: neither one touches your app, so you still run the command above afterwards to instrument it. On Claude Code, /plugin marketplace add reticlehq/reticle then /plugin install reticle@reticlehq registers the MCP server and the skills in one step; on most other agents, npx skills add reticlehq/reticle.

What that command actually changes

The four files it writes, the marks it prints, and how to read its report.

Quickstart

Install, connect your agent, and get a real verdict. Five minutes.

Why Reticle

The false-green problem, and the evidence that this fixes it.

Desktop apps

Electron and Tauri, including the IPC boundary nothing else can see.

Install

Let your agent do it, or wire it by hand.

Tools

Every tool, with a real request and a real response.

Run it in CI

Turn a session into a suite that blocks a bad merge.

What it looks like

Your agent names the expected consequence before it acts. That ordering is the whole trick. It is the difference between a check and a rationalisation.
Reticle clicks, watches, and reports what actually happened. A verdict of unknown is not a pass; it means Reticle drove the app and could not tell. It says so rather than guessing, which is a rarer quality in software than it should be.

What makes it different

No screenshots

No vision model, no pixel guessing. Reticle reads program truth, so the answer is deterministic and the same every run.

Points at the source

On React, a DOM node maps back to src/App.tsx:104. Finding the bug is half the job; knowing which file to open is the half that makes an agent useful.

Cheap to ask

Narrow questions instead of dumping the whole accessibility tree into the context window every single step.

Yours, locally

Dev-only, localhost-only, offline. Your app’s data never leaves the machine.

The evidence

We publish the losses too. Reticle is not the right tool for driving a site you don’t own, and it does not see pixels. One honest test, two apps: Reticle has the highest Verification Efficiency on the controlled app and the lowest observation cost on the real dashboard

Read the full benchmark

How every number was measured, what it means, and where Reticle comes second.

Built for agents, readable by humans

Reticle is used by a coding agent far more often than by a person, so these docs are built to be fetched by one. Every page has a plain-Markdown twin, and the whole site collapses into a single file when an agent wants the lot.

Docs for agents

Markdown endpoints, llms.txt, and which page answers which question.

Build with us

Reticle is early, and the sharp edges get filed down fastest when someone tells us where they are.

Join the Discord

Ask questions, show us what you are verifying, and tell us what broke. The roadmap moves on what people actually hit.

Star the repo

It is the cheapest way to help, and it is genuinely how other people find this.
Found a bug, or something you wished existed? reticle_feedback sends it in one call, from wherever you are. If Reticle could not tell you what happened, that is our defect and we want to know.
Last modified on September 18, 2026