Overview
Review Mode is an on-page review loop for AI-assisted development. It answers one question: did we build the right thing?
The loop has three steps:
- A task is filed — you or your AI create a review task ("Check the new pricing page") from the dashboard, CLI, or MCP.
- A reviewer pins on the page — open the running app with the review widget active, and drop numbered pins (with comments and freehand drawings) directly on the UI that's wrong.
- The pins are read back — your AI (or you) reads the annotations from the CLI, MCP, or dashboard, fixes each one, and marks it resolved.
Every pin is anchored to a real DOM element and stored with its page path, so a comment like "this button is too faint" points at exactly the button.
Three ways to run it
Hosted
The widget runs on your real (staging/preview) site against a SeggWat project. Pins land in your dashboard, CLI, and MCP.
Local proxy
seggwat review serve — annotate a localhost dev app against a real
project without touching allowed-origins.
Standalone
seggwat review local — a fully offline loop backed by ./.review/ JSON.
No account, no project, no API key.
Pick based on whether you have a SeggWat account and where your app runs. All three drive the same widget and the same pin format.
Hosted
Use this when your app is reachable at an origin you can add to the project (a staging URL, a preview deploy, or production).
Add the review widget to your app
<script src="https://seggwat.com/static/widgets/v1/seggwat-review.js"
data-project-key="YOUR-PROJECT-KEY"></script>The overlay stays dormant until a review task is in the URL, so it's safe to leave in staging/preview builds. Add the page's origin to Settings → Project → Allowed origins so the widget can talk to the API.
Create a review task
From the dashboard's Review page, the CLI, or MCP:
seggwat review create PROJECT_ID -t "Review the new pricing page" \
-d "Check the hero, the plan cards, and the CTA"Copy the returned task id.
Open the page in review mode
Append ?seggwat-review=<task_id> to any URL on your site:
A toolbar appears. Pick the pin tool, click the element that's wrong, type a comment, and optionally draw an arrow or box. Repeat for every issue.
Read the pins back and fix them
seggwat review comments PROJECT_ID TASK_IDEach pin shows its number, the pinned element's selector, the page path, and the comment. Fix an issue, then mark it resolved:
seggwat review resolve PROJECT_ID FEEDBACK_IDReview pins are stored as feedback linked to the task, so they also appear in your normal feedback inbox and everywhere feedback is available (dashboard, API, MCP, iOS triage).
Local dev proxy
Your dev app runs on localhost, but the review widget's endpoints are
origin-gated — a localhost origin isn't on your project's allow-list.
seggwat review serve solves this without any config change: it runs a tiny
localhost proxy that forwards the widget's calls to SeggWat with a trusted
Origin, so pins land on your real project.
seggwat review serve PROJECT_ID # defaults to port 7777It prints a ready-to-paste snippet — add it to your dev app, then open a page
with ?seggwat-review=<task_id> as above:
<script src="https://seggwat.com/static/widgets/v1/seggwat-review.js"
data-project-key="YOUR-PROJECT-KEY"
data-api-url="http://localhost:7777"></script>The proxy uses your project's first allowed origin by default; pass
--origin https://yourapp.com to choose a specific one. Read pins back with the
same seggwat review comments command.
Standalone (no account)
Want the review loop with no SeggWat account at all — just you, your AI, and
your local app? Use seggwat review local. Pins are stored as plain JSON in
./.review/ in the current directory. There's no project id and no API key.
Start the local server
seggwat review local serve # widget server on :7777Create a task and add the snippet
seggwat review local create -t "Review the checkout flow"<script src="https://seggwat.com/static/widgets/v1/seggwat-review.js"
data-project-key="local"
data-api-url="http://localhost:7777"></script>Pin, then read back
Open your app with ?seggwat-review=<task_id> and drop pins. Then:
seggwat review local comments TASK_ID
seggwat review local resolve FEEDBACK_IDThis is the ideal loop for Claude Code and other terminal AIs: the AI runs
seggwat review local create after building a feature, you pin what's wrong in
the browser, and the AI reads the pins with seggwat review local comments and
fixes them — no accounts or servers to set up.
Reading pins from anywhere
However pins are created, you can read and resolve them from any surface:
| Surface | Create a task | Read pins | Resolve |
|---|---|---|---|
| Dashboard | Review page | Expand a task to see its pins | Resolve/reopen buttons |
| CLI | review create |
review comments |
review resolve / reopen |
| MCP | create_review_task |
list_review_task_comments |
update_feedback → status: Resolved |
See the CLI guide for every review and review local
command, and the MCP guide for the review-task tools your AI
assistant can call directly.
