Anriss turns a vague feeling into a change your agent applies — without leaving the page. Here is everything it does, in plain terms.
Open Anriss, hold Alt (or click the picker in the composer), then click elements on your running app — one, or several. Each gets a numbered badge, and its CSS selector, XPath, HTML snippet and page context are captured automatically.
Selected elements drop straight into the comment box as inline pills. Write around them so the intent reads as one sentence — the pills point back to the exact elements on the page.
The server speaks the Model Context Protocol natively. Claude Code, Codex and opencode read open annotations and resolve them — no glue scripts, no copy-paste, no per-agent config files to keep in sync.
list_discussions and reply.$ claude › work through the open annotations ⚒ list_discussions → 1 ongoing, 2 targets editing templates/hero/… ⚒ reply ✓ posted
When the agent replies, it shows in your discussions list live — with what it changed. You review, then resolve and archive yourself. The agent never changes status; nothing is ever silently deleted.
Integration is one script tag. The whole widget lives in a Shadow DOM, so it can’t touch your styles and your styles can’t touch it.
<script src="http://localhost:4855/anriss.js"
defer></script>
Every annotation is a W3C Web Annotation, stored in a local SQLite file you own. Greppable, portable, exportable — your notes outlive the tool.
{ "@context": "…/anno.jsonld",
"type": "Annotation",
"body": { "value": "Make Hero the anchor" },
"target": [ { "selector": [ … ] } ] }
Every element on the kitchen-sink page is waiting to be annotated.
Open the kitchen sink