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 and 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_open_annotations and resolve_annotation.$ claude › work through the open annotations ⚒ list_open_annotations → 1 open, 2 targets editing templates/hero/… ⚒ resolve_annotation ✓ done
When the agent resolves an annotation, it flips to done in your sidebar while you watch — with the agent’s note attached. You review the fix and archive it with a click. 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