Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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