Introduction
nitpin is the UI-refinement loop for macOS. Sweat the details, ship the delight.
It’s the tool for nailing the small things that separate a generic, just-functional interface from a delightful one: the misalignments, the rough edges, the half-second of jank, the final touches. The first cut of a UI is increasingly machine-generated. nitpin is the layer that makes it feel crafted. You pin the nits; your coding agent refines them.
How it works
You drive your own app: a browser, the iOS Simulator, an Android emulator, anything. nitpin only captures. A global hotkey freezes a window’s pixels, and you drop pins and regions with notes on the still. Each capture lands as an issue in a per-project store. Your coding agent reads those issues over MCP, looks at the actual screenshot, finds the responsible code, fixes it, and records what changed.
┌─────────────┐ capture (⇧⌘6 / ⇧⌘7) ┌──────────────┐ /nitpin ┌──────────────┐
│ Your app │ ──────────────────────▶ │ nitpin app │ ───────────▶ │ Coding agent │
│ (browser…) │ pin / region + note │ (menu bar) │ over MCP │ fixes code │
└─────────────┘ └──────────────┘ └──────────────┘
What you capture
- An issue is one capture (a frozen screenshot). It has a number (
#3), an auto-generated title, and an optional top-level body note. - A sub-issue is one problem on that capture: a pin on a precise spot, a region around an area, or a note about the whole frame. Sub-issues are numbered within the issue; the badges on the annotated image are their numbers.
- Each sub-issue has a status (unresolved → fixed / won’t fix), and the issue’s state rolls up from its sub-issues.
None of this is bookkeeping you do by hand. You drop pins and type notes; nitpin writes the store for you.
The promises
- Capture-only. nitpin reads pixels and window metadata. It never clicks, types into, or navigates your apps — that’s the whole product promise. Even in Live mode, you drive the page; nitpin only freezes it.
- Local-first. Your issues are plain files (YAML and PNGs) in your repo or on your machine. Screenshots, notes, and code never leave your device.
- Your words are immutable. Once captured, an issue’s body and notes are never edited. Agents speak through comments and resolve notes, kept separate from what you wrote.
Requirements
- macOS 26 (Tahoe) or later.
- A coding agent with MCP support: Claude Code, Codex, OpenCode, or Pi.
- Screen Recording permission, granted on first run. nitpin needs it to read window pixels, and it reads them only when you take a shot; it never records continuously.
Where to go next
- Installation — get the app and the CLI.
- Your First Loop — capture a nit and watch an agent fix it, in about two minutes.
- CLI Reference and MCP Tools — the full command and tool surface.