Anriss is a single binary. Run it, drop one script tag into your dev app, point Claude at it over MCP — then annotate the page and let your agent work through the list.
Anriss speaks MCP, so any capable coding agent can wire it up. Pick your tool on the
left; paste the generated prompt into that agent on the right. It runs the whole
setup — starts the server, registers the MCP endpoint, drops in the widget tag, and
saves an anriss command.
? Which coding agent?
↑↓ move · ↵ or click to select · always installs at project scope
Prefer to run the steps yourself? They're spelled out below.
Changed the port with ANRISS_PORT? Swap 4855 in the prompt to match.
Download the binary for your platform, make it executable, and run it — no toolchain, no build step, no runtime dependencies. One process, one SQLite file.
# one line — detects your OS + CPU, grabs the right binary
$ curl -fsSL https://anriss-dev.hellpat.com/install.sh | sh
Downloading anriss-macos-arm64 (Darwin/arm64) …
✓ Installed ./anriss
$ ./anriss
serving http://localhost:4855
mcp http://localhost:4855/mcp
Prebuilt for macOS (Apple Silicon & Intel) and Linux (x86_64 & arm64). Prefer to grab the binary yourself? Pick
anriss-macos-arm64,
anriss-macos-x86_64,
anriss-linux-x86_64 or
anriss-linux-arm64 from the
latest release.
Then open http://localhost:4855/ — the built-in demo runs the widget, so you can walk the whole loop before touching your own app.
Windows: run it under WSL (use the Linux binary) or the Docker image — there's no native Windows build.
Set ANRISS_PORT (default 4855). Point the SQLite file anywhere with ANRISS_DB.
$ ANRISS_PORT=8080 ./anriss
serving http://localhost:8080
mcp http://localhost:8080/mcp
Changed the port? Use the same one in the widget src and the MCP URL in the steps below.
Prefer Docker or building from source? See the README. Just kicking the tyres? Try it without installing.
One script tag on the page you're building. It mounts an isolated launcher pill in the bottom-right corner — nothing of yours is touched.
<script src="http://localhost:4855/anriss.js" defer></script>
{% if app.debug %}<script src="http://localhost:4855/anriss.js" defer></script>{% endif %}
@env('local')<script src="http://localhost:4855/anriss.js" defer></script>@endenv
<% if Rails.env.development? %><script src="http://localhost:4855/anriss.js" defer></script><% end %>
<script src="http://localhost:4855/anriss.js" defer></script> <!-- remove before shipping -->
Toggle hotkey defaults to Alt+Shift+A. Change it with data-hotkey="ctrl+shift+e" on the script tag.
No dev-tools spelunking — click the element, say what you mean.
[#1], and press Enter. No element needed — just type to comment on the whole page. Your open discussions stack above the composer.Register the annotation server once. In Claude Code, one command:
$ claude mcp add --transport http annotations http://localhost:4855/mcp
Added HTTP MCP server annotations → http://localhost:4855/mcp (local)
$ claude mcp list
annotations http://localhost:4855/mcp ✓ connected · 2 tools
Prefer to check it in for the whole team? Use project scope — Claude Code writes .mcp.json:
{
"mcpServers": {
"annotations": { "type": "http", "url": "http://localhost:4855/mcp" }
}
}
Claude Desktop: same JSON, in
~/Library/Application Support/Claude/claude_desktop_config.json.
The server exposes two tools — list_discussions and
reply.
The loop is pull-based, not a blocking gate. Annotate as much as you like, then whenever you're ready, say:
Reads the ongoing discussions — list_discussions — and finds each element by its stored CSS selector, XPath and HTML snippet.
Fixes the code, then reply with a short summary of what it changed.
Replies appear live in the widget. You review, then resolve and archive — the agent never changes status, that stays yours.
.claude/commands/anriss.md for a /anriss slash command. Re-run it any time: each call re-polls, so nothing is lost and nothing blocks your agent while you work.
Open the hosted demo, annotate the practice page, and see the whole flow — no download required.
Open the hosted demoIt's a shared instance, wiped daily — great for evaluating, not for real project work. For that, run it locally so your annotations and your agent stay on your machine.