ezreview
v1.0.0
Published
Local-first human-in-the-loop review of agent-generated HTML artifacts.
Maintainers
Readme
ezreview is a browser review companion for the AI development workflow plugin AIPilot, though it works with any AI agent. It allows you to leave contextual inline comments directly on AI-generated pages and sends structured feedback so agents can target and fix exact locations in the source document.
It also works as a standalone command-line interface (CLI) for any local HTML file. The review server runs on your machine and binds to 127.0.0.1:4400.
See it in action
https://github.com/user-attachments/assets/f0a7700b-70dd-41da-8b16-f2aa0bdc6f56
Features
- Point at the exact issue: click an element or select a text range in the rendered page
- Send actionable context: each annotation includes a stable ID, selector, relevant HTML, or selected text with surrounding context
- Edit and answer in one loop: agents can change the source for requests and reply directly to questions
- Continue a discussion: each annotation supports multiple rounds of replies
- Resume safely: queued feedback and annotation IDs survive command timeouts and server restarts
- Keep review data on your machine: EZREVIEW listens only on
127.0.0.1and does not send review data to an external provider
Security
Only review HTML files and scripts you trust. EZREVIEW renders the artifact with its scripts enabled in a local browser frame, so artifact code can interact with the local review session and make its own network requests. The 127.0.0.1 binding prevents remote devices from connecting to the review server; it does not sandbox untrusted artifact code.
Install EZREVIEW
Install Node.js 20 or newer, then install ezreview globally:
npm install --global ezreviewConfirm the installation:
ezreview --helpYou can also run a specific version without a global installation:
npx -y ezreview@latest your_file.htmlPrompt an agent to run a standalone review
AIPilot manages the continuous review loop for you. When you use ezreview WITHOUT AIPilot, tell your agent to keep the session active and wait after every feedback batch.
Copy this prompt and replace your_file.html with the artifact you want to review:
Open your_file.html with ezreview. Use your managed background-task mechanism
to keep the review server running, and keep each ezreview wait attached to the
current execution. Continuously wait for submitted comments. For every comment,
decide whether it requests a change or asks a question. Apply the requested
change or answer the question, reply through ezreview for every annotation ID,
then continue waiting for more feedback. Do not treat a command timeout, empty
output, file reload, or completed feedback batch as review completion. Do not
exit until I click Approve in ezreview or explicitly confirm in chat that the
review is complete.CLI reference
Open a review session
ezreview your_file.htmlStarts a local review server, opens the HTML artifact in your browser, and stays active while the session is running. Running it again for the same file returns the existing session URL instead of starting another server.
Wait for feedback
ezreview wait your_file.htmlBlocks until the reviewer submits a feedback batch (or returns immediately if queued feedback exists). Each batch contains structured change requests, questions, or both. If a command timeout interrupts it, run it again—the durable queue returns the next unconsumed batch without duplicating feedback.
Reply to an annotation
ezreview reply your_file.html --to a-1 "Updated the heading size."Sends a reply back to a specific annotation thread using the ID returned by wait. For a change request, save the source file before replying; the browser reloads the artifact and displays your reply inside the matching annotation.
For multiline responses containing escaped line breaks (\n), add --decode-newlines:
ezreview reply your_file.html --to a-1 --decode-newlines "First paragraph\n\nSecond paragraph"The browser preserves real line breaks and paragraph spacing. Decoding is opt-in so code examples containing a literal \n remain unchanged by default.
Use the agent review loop
An AI agent should run ezreview wait as a standard foreground/blocking command rather than detaching it with &, nohup, or disown. This ensures the agent blocks until feedback arrives and consumes the result immediately.
For every feedback batch, the agent should:
- Read every annotation returned by
ezreview wait - Edit the artifact for change requests
- Answer questions without changing the file unless the comment implies a fix
- Run
ezreview replyonce for every annotation ID - Start a new attached
ezreview wait - Continue until you select Approve or end the review in chat
Why use EZREVIEW with AIPilot
AIPilot drives an AI development workflow through structured markdown documents. ezreview provides the interactive browser feedback loop, allowing you to review rendered UI previews and design documents in real time.
AIPilot creates a document or design preview
↓
EZREVIEW opens it in the browser
↓
You annotate an element or select exact text
↓
The agent receives structured feedback
↓
The agent edits or answers, then EZREVIEW reloads the resultYou no longer need to take screenshots or manually describe where an issue is in chat. ezreview anchors your comments directly to rendered HTML previews generated by AIPilot, giving the agent exact element and text references to act on.
Related projects
- AIPilot: the document-driven AI development workflow that uses
ezreviewfor browser-based review - lavish-axi: the project that inspired
ezreview
