Every response on this page is real output, captured against a running app while writing it.
Nothing here is illustrative.
Prerequisites
- Node 20 or newer
- A web app you can run locally, and its dev server
- A coding agent that speaks MCP (Claude Code, Cursor, Codex, OpenCode, Windsurf, VS Code)
Step 1. Let your agent install it
The fastest path is to hand the job to the agent that will use it. In your project directory:reticle init itself:
--dry-run if you want to see the plan before anything is written.
Prefer to wire it yourself? See Manual install. It is about ten lines, and worth reading once even if you let the agent do it, because it explains what the agent actually changed.
Step 2. Check the setup
doctor diagnoses the whole setup in one command: Chromium, the daemon, the port. If something is wrong this is the page you want before you start debugging your app instead.
Step 3. Start your app and open it
Start your dev server as usual, then:Step 4. Look at the page
Ask your agent to take a snapshot. This is what came back from a real app:[REDACTED]. Reticle redacts credential-shaped values before they leave the page, so your agent’s context never holds your test password, let alone your real one.
The whole snapshot cost 61 tokens. This is mode: "interactive", which returns only the controls. A full accessibility-tree dump of a comparable page runs to thousands. Reticle is built to ask narrow questions, because the answer gets re-sent to the model on every turn.
Each control has a ref like e5. That’s the handle for the next step, and it stays valid until the element leaves the DOM, so you don’t re-snapshot between actions.
Step 5. Act, and prove it
Here is the whole idea of Reticle in one call. Your agent names the expected consequence before it acts:
What “verified” can say
yes
The consequence you named actually happened, and the evidence is attached.
no
It did not happen. This is a finding, with the source pointer to go fix it.
unknown
Reticle drove the app and could not tell. This is not a pass. Report it as unknown.
Where to go next
Instrument your app
Emit signals like
auth:granted so your verdicts get stronger than “the DOM changed”.Every tool
The 18 tools your agent sees by default, and the 30 more it can reach on demand.
Run it in CI
Turn this session into a suite that blocks a bad merge.
Why Reticle
The false-green problem, and the measured case that this fixes it.