Effective 2026-04-29 · Pinta v0.2.0
The short version: Pinta is a single-user developer tool. Nothing leaves your machine. We don't operate any servers, collect any data, or use any analytics. The Chrome extension talks to a companion process on localhost; the companion talks to your AI coding agent (Claude Code, Cursor, Aider, etc.) which is also running locally.
Pinta lets you annotate your running web app — drawings, element selections, comments — and hand the annotations to an AI coding agent that edits your project's source files. There are two pieces:
pinta-companion on npm) — runs on your machine on localhost, started by you.outerHTML snippets (max 2 KB), nearby text, computed styles, your free-form comments, and full-page screenshots.chrome.storage.local.pinta-standalone database), keyed by the URL's origin.When you click Submit, the extension sends the session payload over a WebSocket to 127.0.0.1 on the port the companion is listening on. The companion writes submitted sessions to .pinta/sessions/ inside your project root. Both ends are on your machine.
The companion exposes the session over an HTTP API and an MCP server, both on localhost. Your AI coding agent (running locally) reads the session and decides what to edit. Pinta has no connection to the AI provider — the agent's own privacy policy governs how it handles the prompt.
Captured outerHTML is sanitized client-side before it leaves the page: inline event handlers (onclick etc.), integrity, nonce, CSRF / token / auth / JWT / bearer attributes, and password input values are all stripped from the captured HTML. The capture is also truncated to 2 KB to bound exposure.
If you annotate inside a tab that has authenticated session state (cookies, tokens), the screenshot will of course render whatever's on the page — Pinta is showing the agent what you see. Treat your agent the same way you'd treat anyone you screen-share with.
<all_urls> host permission — Pinta is a developer tool you invoke on your own running app at any URL. No site is targeted automatically.tabs — to read the active tab URL for routing the session to the matching project companion.activeTab + scripting — to inject the annotation overlay and to capture screenshots of the user-activated tab.sidePanel — to host the side-panel UI.storage — for theme preference; standalone sessions use IndexedDB.The extension bundles its fonts (Poppins) — no runtime fetch from Google Fonts. The landing page at kevzlou7979.github.io/pinta does load Google Fonts; that's a static site, not the extension. The extension itself makes no network calls beyond localhost.
pinta-standalone..pinta/sessions/ from inside your project root.Pinta is a developer tool. It is not directed at children under 13.
Material changes will be reflected by bumping the effective date at the top of this page and noted in the CHANGELOG.
Open an issue at github.com/kevzlou7979/pinta/issues or email kevzlou7979@gmail.com.