Skip to content
SpaceParrots logo
Open source, AGPL-3.0

Visual feedback tool for developers and AI coding agents

nit is the missing input device for UI work with AI. Alt-click the element, type the nit, done: every annotation records the component tag, a unique CSS selector, XPath, route and viewport plus a screenshot. That is precise enough for a coding agent to find the source without you describing the page again.

npm @spaceparrots/nitAGPL-3.0MCP-ready
The problem

Describing small UI issues in prose does not work

You browse your product and spot the little things: a badge in the wrong color, an unfilled star icon, a dead active state. Filing a ticket for that is overkill, so you describe it to your agent in chat, and that is exactly where the precision goes: "the third tile, no, on the landing page, the one under the hero".

The agent cannot see your screen. It needs a reference it can find in the source: which component, which selector, which route, which viewport, and what the spot actually looks like. All of that exists at the moment you click, and it disappears the moment you start turning it into sentences. nit captures it right there.

Workflow

How it works

Three steps, one loop: annotate, let the agent fix, verify. A reopen sends the item back to step two until the list is empty.

Step 1 - Annotate

nit review https://staging.example.com opens a real Chromium with the annotation overlay and a panel window beside it. Alt-click the element, type the change, save. For states that are hard to reach, like a dropdown or a wizard step, just click your way there: nit records the click trail with the annotation.

Step 2 - Let the agent fix

Hand the nit-review/ folder to your coding agent, or serve it as an MCP server with nit mcp. The agent works through every open change request at the referenced element and marks each one fixed when it is done.

Step 3 - Verify

nit verify walks you through a queue of everything marked fixed: routes are visited automatically, after screenshots sit next to the originals. You rule Verified, Reopen with a note the agent reads, or Skip.

Setup

Quickstart

nit needs Node 20.12 or newer and installs its own Chromium the first time you run nit doctor.

bash
npm install -g @spaceparrots/nit
nit doctor
nit setup

bash
nit review https://staging.example.com
nit mcp-install
nit verify

Or without installing: npx @spaceparrots/nit review https://example.com

Features

What nit does

No dashboard, no project management. nit does one thing: turn a click into a reference a coding agent can act on.

Precise element reference

Every annotation stores a layered reference to the element: the component tag, the Angular class name where available, a CSS selector verified unique at capture time, an absolute XPath, the element text and its classes. Plus the route, the viewport, and the click trail that reproduces hidden states.

MCP server for coding agents

nit mcp serves the review folder over stdio as an MCP server, built on the official SDK. The agent works through nit_list_annotations, nit_get_annotation, nit_mark_fixed, nit_set_status, nit_set_issue_ref and nit_clear_verified, plus resources like nit://review/brief.md for sessions without tool access.

Screenshots with context

Screenshots are CDP element clips taken at pick time and expanded to a minimum 480x360 window centered on the element. Transient states like an open dropdown survive, and the agent sees the element in its surroundings rather than cut out of them.

A verification loop with before and after

nit verify captures after shots under the same rules so they are directly comparable, and walks you through the queue one item at a time. A reopen stores your one-line note as statusReason, so the next agent run knows why the fix fell short instead of guessing.

An overlay any site tolerates

All overlay UI lives in an isolated Shadow DOM and never touches the page's own DOM, styles or scripts. A MutationObserver re-anchors pins after an SPA re-render, annotations are filtered to the current viewport, and anything that cannot be placed is reported with its reason instead of dropped silently.

Several environments, several reviewers

One review folder covers localhost, staging and production, one subfolder per base URL, one MCP server for all of them. On a team everyone reviews on their own, and nit export, import and merge combine the feedback files with per-author attribution.

Screenshot of nit: an annotated website with numbered pins on individual elements on the left, and the review panel with the matching change requests and screenshots on the right
Fit

Who nit is built for, and who it is not

nit fits when

  • You write the code yourself or work with a coding agent, and have a terminal open anyway.
  • The work is a pile of small UI corrections that are too light for a ticket and too vague for a chat message.
  • Your annotations and screenshots should stay in the project folder, with no client data leaving for a vendor.
  • You review several environments in parallel and want to keep one single handoff to the agent.

nit does not fit when

  • Non-technical reviewers need to annotate themselves. nit is a CLI, it needs Node and an installed Chromium. It is not a link you just open.
  • You need comment threads, assignment, notifications or a board. nit has no backend and therefore no shared view; sharing happens through zip files.
  • You are looking for a bug tracker replacement. nit is for small, concrete changes to one element, not for features or defect reports with reproduction steps.
  • You work a lot inside native <dialog> modals opened with showModal(). Those sit in the browser's top layer above everything, so nit's own popover cannot be clicked from inside them. Pick the element while the dialog is open, close it, then save. Overlay-based dialogs such as Angular CDK or Bootstrap are not affected.
Alternatives

How nit compares to hosted feedback tools

BugHerd, Marker.io and Userback are built for reviewers who never touch code. Vercel Toolbar Comments are built for teams deploying on Vercel. nit is built for the path from the click into the coding agent. The table says where that is an advantage and where it is not.

Quick comparison of nit, SaaS feedback tools and Vercel Toolbar Comments
CriterionnitSaaS feedback toolsVercel Toolbar Comments
Handoff to a coding agentMCP server plus fix-annotations.md, the agent writes the status backThe comment lives in the tool, handing it on depends on the vendor or on copy and pasteComments on the preview deployment, meant for people on the team
Element referenceComponent tag, CSS selector verified unique, XPath, element text, route, viewport, click trailScreenshot and element metadata, vendor dependentA comment attached to an element on the preview
Backend or account requirednoyes, hosted backend and an account per revieweryes, a Vercel account and project
Where the data livesfiles in your project folder, sharing as a zipwith the vendorwith Vercel
Before/after verificationbuilt in through nit verifystatus change, re-checking by handresolve the comment
Non-technical reviewersweak: CLI, Node and Chromium requiredthe strength of the format: only a browser neededa link to the preview is enough
Comment threads, assignmentnonecore featureavailable inside the Vercel team context
Where it runsany reachable URL including localhostpages with the snippet or extension installedVercel preview deployments
Price and licensefree under AGPL-3.0, commercial license on requestsubscription, typically per user per monthpart of your Vercel plan

To be plain about it: if your reviewers are marketing, QA or the client, the SaaS tools are the better choice. That is exactly what they are built for, and nit is not.

License

License: AGPL-3.0, plus a commercial option

nit is licensed under the GNU AGPL-3.0. It is free to use, modify and self-host. The copyleft terms apply to network-hosted versions too: if you ship a modified nit over the network, its source has to be available under the same license. That way nobody can take nit closed-source and resell it.

If you need to use nit in a way AGPL-3.0 does not allow, for example embedded in a closed-source or commercial product, a separate commercial license is available. Write to [email protected] and we will sort it out directly.

Contribute

Missing something? Build it in.

I built nit to automate a step that used to be manual, and to stop quality control from depending on whether I remembered to look. What was missing for me may well be missing in your setup too.

nit is open source, not just source-available. If a selector does not hold in your framework, a command is missing, or the verification flow snags on your setup, open an issue. If you would rather fix it yourself, better still. There are issue templates, a contributing guide and a code of conduct, and I read every pull request.

Open an issueRead the contributing guide

FAQ

Frequently asked questions about nit

nit is an open-source CLI tool that lets you annotate a website by clicking on it and hand those annotations to an AI coding agent. Instead of describing a UI change in prose, you click the element; nit records the component tag, CSS selector, XPath, route, viewport and a screenshot. The name comes from code-review culture, where minor comments are prefixed with nit:.

Two ways. Either point the agent at the nit-review/ folder and tell it to follow fix-annotations.md, or register the MCP server once with nit mcp-install. After that the agent works through the nit_ tools directly and marks each finished item fixed itself.

No. The output is plain files in a folder: annotations.json, a readable review.md, the agent instruction sheet and the screenshots. The MCP server is a thin stdio process over the same folder. There is nothing to host and nothing to sign up for.

Any agent that speaks MCP over stdio can connect; the server is built on the official @modelcontextprotocol/sdk and announces its working instructions during the handshake. Agents without MCP support get the same contract from the files, because they can edit annotations.json directly.

nit covers the technical half of those tools: click the element, write the change, capture a screenshot with context, track status, verify. It is open source under AGPL-3.0 and runs locally. What it deliberately does not have is comment threads, assignment and a shared board for non-technical reviewers.

In your project folder, by default under nit-review/. nit setup offers the matching .gitignore entry so reviews stay out of the repository. For sharing, nit export packs the folder into a zip, and nit import plus nit merge bring several people's reviews back together with per-author attribution.

Yes. A review folder covers several base URLs, each in its own subfolder, and a single MCP server serves all of them. Ids are then qualified as staging:a1, and every row carries its base and a navigable url. A review of a single site stays flat and never changes shape.

nit is licensed under AGPL-3.0 and is free to use, modify and self-host, including in commercial projects, as long as you honor the copyleft terms. Those apply to network-hosted modified versions too. If you want to embed nit in a closed-source product, you need a separate commercial license: [email protected].

On your next UI pass, click instead of typing

One npm install, one nit review, and next time your agent gets selectors instead of descriptions.