Skip to main content
The install is one command, and it’s designed for the agent to run rather than you. The agent is about to be the primary user of this tool, so it may as well set up its own workspace.
Everything on this page is real output. It was captured by scaffolding a pristine npm create vite React app and running init inside it while writing this.

See the plan before anything is written

--dry-run prints exactly what would happen and touches nothing:
On a fresh Vite + React + TypeScript app, that produced:

Reading the marks

There are four, and they mean different things. This is the part worth understanding, because a run full of green ticks can still leave you with a broken install.
A is not cosmetic. In the run above, Reticle could not write the Codex CLI’s TOML config, so it printed the exact block to paste. Leave it and Codex simply never sees the tools.
That line is the one people skim past, so here it is in full:
init wrote the file, but a brand-new Vite template has no testids and no state library, so there was nothing to register. Reticle tells you this instead of counting it as a win. See Instrument your app for what to put in it.

What it actually changes

Four files in your project, none of them mysterious.
The projectId is how Reticle scopes sessions to this project, so two apps running at once don’t get confused for each other.
One import, one entry. The plugin stamps source locations onto your elements, which is what turns a DOM node intosrc/components/Login.tsx:81. It also injects connect() so you don’t have to remember to.
This is the file that decides how good your verdicts get. Empty, you still get DOM, network and console. Filled in, your agent can check what the app believes, not just what it rendered.
A rule telling your agent to verify features after building them, and a /reticle command that drives one flow. Skipped entirely with --no-mcp, because rules for tools the agent can’t reach are just noise in the context window.

Flags

Then restart two things

This trips up almost everyone, so init says it twice and so will we. Restart your dev server. The Vite plugin is new; the running process doesn’t have it. Restart your agent. Claude Code, or reload the window in Cursor, or hit Start in .vscode/mcp.json in VS Code. Your agent read its server list at startup, before Reticle existed, and no slash command re-reads it. /mcp manages servers already loaded, so it cannot pick up a new one. This is a once-per-machine annoyance: Reticle registers globally, so every later project starts with the tools already there.

Confirm it worked

It confirms the app connected, or tells you exactly why it hasn’t. A session in the list is the install actually finished. Not a green tick. A connected app.

Something marked ⚠?

The manual install covers every step init can’t automate, per agent and per framework.
Last modified on August 14, 2026