Compare
Two takes on analytics in the AI era. Rybbit is the closest thing to us in spirit: open source, cookieless, EU-hosted, and one of the few tools that already treats AI agents as first-class users via an MCP server. Since September 2026 the everyday surface is close to even — sessions, users, journeys, goals, a globe, real-time and replay on both sides — so the choice comes down to scale, maturity and what you need to be able to check.
| Capability | Rybbit | Vitrus |
|---|---|---|
| Cookie-free, no consent banner | ✓ | ✓ |
| Self-hostable | Postgres + ClickHouse | one process, embedded DB |
| Clickable query behind every number | — | ✓ |
| Unprovable AI sentences auto-dropped | — | ✓ |
| MCP server for AI agents | read + write | read-only, evidence attached |
| Evidence returned to the agent | — | ✓ |
| AI referral ↔ AI crawler split | per AI operator | per page |
| Verified agent identity (Web Bot Auth) | — | ✓ |
| Agent browser sessions | blocked as bots | own class, own funnel |
| Daily-rotating visitor salt | optional, off by default | always on |
| Sessions list and timeline | ✓ | ✓ |
| User profiles | ✓ | identified users + traits; raw id never stored |
| User journeys / path analysis | ✓ | ✓ |
| Named goals with targets | ✓ | ✓ |
| Ordered funnels | ✓ | ✓ |
| Real-time view | ✓ | ✓ |
| Core Web Vitals | ✓ | ✓ |
| JavaScript error tracking | with stack traces | message, file and line — no stacks |
| Session replay | ✓ | opt-in, all text masked by default |
| City-level geography and maps | bundled GeoIP | city + region from your proxy's headers |
| Globe / map | ✓ | 2D and 3D, no tile service or token |
| Autocapture of button clicks and copies | ✓ | — |
| API keys | ✓ | read-only |
| Import from Umami / Plausible | ✓ | Umami |
| Google Search Console | ✓ | ✓ |
| Hundreds of millions of events a month | ✓ | ~1M/month per box |
| Per-site strict privacy mode | — | ✓ |
| Tracker size (gzipped) | ~18 KB | 2.6 KB |
Features we don't have are shown as “—”. A comparison that hides its own gaps would contradict the one thing this product claims.
Rybbit is more mature and it scales further. Its ClickHouse backend is built for volumes our embedded database will not reach (we are comfortable up to roughly a million events a month per box). It autocaptures button clicks and copied text, which our tracker does not; it imports history from Plausible exports as well as Umami ones, and bundles a GeoIP database, so it has cities without a proxy in front. Its MCP server can create goals and manage resources — ours is deliberately read-only — and its session replay has been in production longer than ours. If any of that is what you need today, choose Rybbit.
When you need the answer to be checkable. Every number, list and chart in Vitrus opens the SQL that produced it; the AI digest drops any sentence whose number is not in that evidence; and our MCP returns the query and raw rows with every metric, so an agent can cite instead of assert. Pick us too if you want AI crawlers kept apart from the humans they send, agents that sign their requests verified and named, a daily-rotating visitor salt that is always on, or a self-hosted install with no database server to run.
Where the number comes from, and whether you can check it. Our sessions, journeys, goals and globe are built on the same rule as the rest of the product: every count opens the SQL and parameters that produced it. Theirs are more mature and scale further; ours can show their work.
Theirs can act — create goals, manage resources. Ours cannot, on purpose: analytics is a system of record, and a record a model can write to stops being a record. What ours does instead is return the query behind every number, so the agent's claim is verifiable.
It matters if you care about Core Web Vitals, and less otherwise. Much of their weight is session replay. Ours is a separate file (under 5 KB gzipped) that only loads on pages that opt in with data-replay, so every other page keeps the small script — the trade-off is made per page rather than for the whole site.
From the headers your proxy already sets — Cloudflare's visitor-location managed transform, Vercel or CloudFront — with coordinates rounded to 0.1 degree. We still do not ship a GeoIP database: a 60 MB file with a monthly update cycle would end the one-command install. Without those headers the globe says which header is missing instead of drawing an empty map, and country-only sessions are counted but never pinned to a country's centre.
Other comparisons: