Visual communication layer between humans and AI agents for macOS.
Snip
Visual communication layer between humans and AI agents for macOS.
Capture and annotate screenshots, render diagrams from code, review agent-generated visuals with approve/request-changes flow — all from the menu bar. AI organizes and indexes everything for semantic search. CLI and MCP integration let any AI agent use Snip as their visual I/O.
Install
brew install --cask rixinhahaha/snip/snip
Or download the DMG directly from Releases (Apple Silicon only).
Quick Start (Development)
npm install
npm run rebuild # compile native modules
npm start # launch (tray icon appears in menu bar)
Requires macOS 14+, Node.js 18+, and Xcode CLT (xcode-select --install). macOS 26+ recommended for native Liquid Glass effects.
For AI-powered organization, install Ollama separately. Snip detects your system Ollama and guides you through setup in Settings.
How It Works
- Cmd+Shift+2 — Fullscreen overlay appears on whichever display the cursor is on, drag to select a region
- Annotate — Rectangle, arrow, text, tag, blur brush, or AI segment tools
- Esc — Copies annotated screenshot to clipboard
- Cmd+S — Saves to disk + AI organizes in background
Screenshots saved to ~/Documents/snip/screenshots/. AI renames, categorizes, and indexes them for search.
Agent Integration (CLI & MCP)
Snip exposes a CLI and MCP server so AI agents can use it as their visual I/O:
# Render a Mermaid diagram and open for review
echo 'graph LR; A-->B-->C' | snip render --format mermaid --message "Does this flow look right?"
# Open an image for agent review
snip open screenshot.png --message "Is the layout correct?"
The agent gets structured feedback: { status: "approved" | "changes_requested", edited, path, text? }. The user can annotate spatially, type text feedback, or just approve.
MCP tools: render_diagram, open_in_snip, search_screenshots, list_screenshots, get_screenshot, transcribe_screenshot, organize_screenshot, get_categories, install_extension.
Key Shortcuts
| Shortcut | Action |
|---|---|
| Cmd+Shift+2 | Capture screenshot |
| Cmd+Shift+1 | Quick Snip (select & copy to clipboard) |
| Cmd+Shift+S | Open semantic search |
| Cmd+S | Save to disk (in editor) |
| Esc / Enter | Copy to clipboard & close (in editor) |
| V / R / T / A / G / B / S | Select / Rectangle / Text / Arrow / Tag / Blur / Segment tools |
| U | Upscale image |
| W | Transcribe text |
Documentation
| Doc | Role | Contents |
|---|---|---|
| `docs/PRODUCT.md` | Product Manager | Vision, feature specs, terminology, product principles |
| `docs/DESIGN.md` | Designer | Color palettes (Dark/Light/Glass), component patterns, glass effects, icon specs |
| `docs/ARCHITECTURE.md` | Developer | Code structure, conventions, IPC channels, data flow, key decisions |
| `docs/DEVOPS.md` | DevOps | Build pipeline, signing, native modules, environment setup |
| `docs/USER_FLOWS.md` | QA / PM | Detailed user flows for every feature, edge cases, test cases |
| `CLAUDE.md` | Claude Code | Autonomous agent instructions, role references, documentation rules |
Tech Stack
Electron 33 / Fabric.js 7 / Mermaid.js 11 / Ollama (local LLM) / HuggingFace Transformers.js / SlimSAM (ONNX) / Chokidar 4 / electron-liquid-glass
On-Device Models
All AI runs locally — no cloud APIs needed for core features.
| Model | Purpose | By | Link |
|---|---|---|---|
| MiniCPM-V | Vision LLM (naming, tagging, categorizing) | OpenBMB | HF |
| SlimSAM-77-uniform | Object segmentation | Meta AI / Xenova | HF |
| Swin2SR-lightweight-x2-64 | Image upscaling (2x) | Conde et al. / Xenova | HF |
| all-MiniLM-L6-v2 | Semantic search embeddings | Microsoft / Xenova | HF |
| Vision OCR | Text transcription | Apple | Built into macOS |
License
MIT
Tools (9)
render_diagramRenders a diagram from code and opens it for review.open_in_snipOpens an image file for agent review.search_screenshotsPerforms semantic search across organized screenshots.list_screenshotsLists available screenshots.get_screenshotRetrieves a specific screenshot by ID or path.transcribe_screenshotTranscribes text from a screenshot.organize_screenshotTriggers AI organization for a screenshot.get_categoriesLists available screenshot categories.install_extensionInstalls a Snip extension.Configuration
{"mcpServers": {"snip": {"command": "snip", "args": ["mcp"]}}}