Point-and-click website annotation that hands small UI fixes straight to a coding agent.
You are browsing your product and spot the little things: a badge in the wrong color, an unfilled star icon, a dead active-state. Filing tickets for those is overkill, and describing them to an AI agent in prose loses too much ("the third tile... no, on the landing page...").
nit is the missing input device. Click the element, type the nit, done. Every annotation records a stable reference to the element (component tag, unique CSS selector, XPath, screenshot) plus the route and viewport. That is precise enough for a coding agent to find the source and fix it without any further context.
The name comes from code-review culture, where reviewers prefix minor comments with nit:.
┌────────────┐ ┌───────────────────┐ ┌────────────┐
│ nit review │ ───► │ your coding agent │ ───► │ nit verify │ ─── reopened? ──┐
│ annotate │ │ fixes each open │ │ before / │ │
│ the site │ │ change-request │ │ after │ ◄───────────────┘
└────────────┘ └───────────────────┘ └────────────┘
nit review https://staging.example.comopens a real Chromium with an annotation overlay and a devtools-style panel window beside it. Alt-click elements, describe the changes, save.- Hand the produced
nit-review/folder to a coding agent, or serve it as an MCP server withnit mcp. The agent fixes each open change request and marks itfixed. nit verifywalks you through each fix in a guided queue — routes visited automatically, after screenshots next to the originals — and you rule Verified, Reopen (with a note the agent reads), or Skip.
Teammates review on their own and share zips (nit export / import / merge). The workflow guide walks through all of it.
npm install -g @spaceparrots/nit
nit doctor # checks Node ≥ 20.12 and dependencies, offers to install Chromium (one time)
nit setup # per project: review dir, .gitignore, MCP server (interactive wizard)Or without installing: npx @spaceparrots/nit review https://example.com
| Command | Alias | What it does |
|---|---|---|
nit setup |
init |
One-time project setup: review dir, .gitignore, MCP (wizard) |
nit review [url] |
r, annotate |
Open a browser and annotate a site |
nit view [source] |
v, replay |
Replay a review (default nit-review/) with pins re-anchored on their routes |
nit verify [source] |
check |
Capture after-shots for fixed items, rule Verified / Reopen (default nit-review/) |
nit status [dir] |
stats |
What is in a review: file, last change, counts, what is left |
nit list [dir] |
ls |
List the base URLs in a review, or the annotated urls in one |
nit clear [dir] |
rm |
Remove annotations from a base, or from every base |
nit export [dir] |
pack |
Pack a review into a shareable zip |
nit import [zip] |
unpack |
Unpack a teammate's review zip |
nit merge <files...> |
combine |
Combine feedback files into one consolidated review |
nit mcp [dir] |
serve |
Serve a review folder as an MCP server (stdio) |
nit mcp-install [dir] |
mcp-config |
Register the MCP server in this project's .mcp.json |
nit doctor |
Check the environment, install Chromium if missing |
All flags are in the command reference; reviewing itself (picking, the panel, viewports) is covered in reviewing in the browser.
nit-review/
├─ bases.json # the base URLs this review covers
├─ staging/ # one review folder per base URL
│ ├─ annotations.json # structured, agent-readable
│ ├─ review.md # human-readable, screenshots embedded, ACTIONABLE markers
│ ├─ fix-annotations.md # the contract for the fixing agent
│ └─ shots/*.png # context screenshots (+ after-shots from nit verify)
└─ localhost-4200/
└─ …
A review of a single site stays flat — annotations.json sits directly in nit-review/. The base folders appear the first time you review a second url into the same folder, and the existing review is moved into its own folder as part of that. nit list shows what a review covers; every command takes --base <name> to work on one environment, and nit view / nit verify also take the base name on its own — nit verify localhost-4200.
Each annotation carries the element reference (component, selector, XPath, text), the route and viewport, a status (open, fixed, verified, reopened, wontfix), optional issue ref, and a click trail for reproducing hidden states. Field-by-field details are in the annotation file reference.
Point your agent at the folder and let it follow fix-annotations.md, or register the MCP server (nit mcp-install) and let it work through tools: nit_list_annotations (rows carry the full working record), nit_get_annotation (batchable; screenshots included as images), nit_mark_fixed, nit_set_status (with a persisted reason for wontfix), nit_set_issue_ref, nit_clear_verified (housekeeping after a verify round). Payloads are deliberately token-lean. The review is also readable as resources (nit://review/brief.md, nit://review/annotations.json, nit://annotation/<id>, …) for sessions without tool access.
One server covers every environment: with several base URLs each row carries its base and navigable url, ids are qualified staging:a1, and the base parameter narrows tools to one of them. MCP server and coding agents has the details and prompt suggestions.
- Getting started: install, first review, first fix
- Workflow guide: the full loop, solo and with a team
- Reviewing in the browser: picking, the panel, viewports
- MCP server and coding agents: tools, setup, agent prompts
- Command reference: every command and flag
- Annotation file reference: the schema agents read
- How nit works: architecture and trust model
- CONTRIBUTING.md and src/README.md: for contributors
nit is licensed under the GNU AGPL-3.0. It is free to use, modify and self-host. The copyleft terms mean that any distributed or network-hosted modified version must make its source available under the same license, so nobody can take nit closed-source and resell it.
Need to use nit in a way AGPL-3.0 does not allow, for example embedding it in a closed-source or commercial product? A separate commercial license is available. Reach out to kevin.mattutat@spaceparrots.de.
Copyright © 2026 SpaceParrots. Security issues: see SECURITY.md.

