reticlehq/reticle

Public

AI agents can generate code, but still struggle to understand what they build. Reticle brings Jev-style machine-native runtime perception to web & desktop applications.

  • Stars1.3k+22 tuần này
  • Forks236
  • Watchers7
  • Issues180
  • Ngày tạo11/06/2026
  • Cập nhật gần nhất29/10/2026
  • Ngôn ngữTypeScript
  • Giấy phép—
README.md81.8 KBRaw
Reticle

Your AI agent says "done." Reticle checks whether that's true.

It drives your real running app, reads what actually happened, and hands back pass · fail · couldn't tell with the file:line to fix.

Join the Reticle community on Discord

Ask anything, see what's being built, and help decide what ships next.


npm downloads stars license OpenSSF Discord members

The problem · Demo · What Reticle does · Install · Use it · Community · vs Playwright · Benchmarks · Safe to install · Docs

⭐ Star the repo · Good first issues · Contribute


The problem

Your agent writes code, assumes it worked, and moves on. It never opens the app.

So the broken modal, the silent 500, the "Deploy succeeded" over a failed deploy: they all ship, and you find them by clicking around afterwards. You've become your agent's QA.

The truth was in the running app the whole time. It just never reached the screen.

A page that looks shipped, hiding mock data, a dead click and a silent 500.

This isn't something your agent forgot. A coding agent is built to produce a change, and it's optimistic by construction. Verification is the opposite motion: going to find out, and being willing to come back with no.


Demo

An agent says the invoice fix works; Reticle drives the Pay button, sees the card charged twice, and names PayButton.tsx:31

▶ An agent says its fix works. Reticle catches the double charge it missed. Click for the full demo.


What Reticle does

Reticle puts a small, dev-only SDK inside your app, and gives your coding agent tools to look, act, observe and assert through it. Because it reads the app from the inside, it sees what the screen hides: the request a click fired and what came back, the state the app holds, the console, and the source line behind each element. Every check ends in a verdict with the evidence attached.

  • A verdict, not a screenshot. verified: "yes", "no" or "unknown" (couldn't tell), with the request, state change and console line that decided it, and the file:line to open.
  • Sees what the screen hides. Network responses tied to the click that caused them, your store's real state (zustand, Redux, TanStack Query, Pinia and more), console errors, request counts, React renders.
  • Says when it can't tell. Only yes is a pass. A check that couldn't decide comes back

Nội dung README thuộc về reticlehq và cộng đồng đóng góp, giấy phép Không có giấy phép. Nguồn: github.com/reticlehq/reticle