Views
Visitors, views, bounce rate, session length, sources, countries, devices.
Twillingate is analytics for indie builders who work with an AI agent. Point Claude Code, Claude Desktop or any MCP client at it and ask — it sets up tracking, builds the reports and answers the questions.
› add analytics to my app
created project myapp, added the tag to app/layout.tsx and a signup event to the form — reports are filling in at /app/
For everything you ship. No cookie banner, no analytics know-how, no limit on projects.
The console, serving 90 days of one project. Reports live at /app/
behind your own login.
You do not need to know what a bounce rate is or which events to track. Ask the agent you already code with; Twillingate speaks MCP, so it can do every step itself.
did the Hacker News post bring any signups?
checking signup events on project myapp, last 7 days
Yes — 41 signups since Tuesday, 29 of them from Hacker News. Before the post you were averaging three a day.
keep an eye on that for me
created dashboard Launch with signups by source and a daily trend — live at /app/
The landing page, the app, the docs and the thing you launched last weekend each get their own project. None of them costs extra.
Know whether people use what you shipped, not just whether they visited. Page views, product events and app screens land in the same project.
Visitors, views, bounce rate, session length, sources, countries, devices.
Signups, purchases, clicks — any event you send, with its attributes, and daily actives.
Signed-in people, and the teams they belong to, when you send ids.
Do people come back? Cohorts by first day, followed for 45 days.
The Core Web Vitals, collected from a share of your page views.
Your own numeric series, for the things only your product knows about.
No session recordings, no feature flags, no forty-item menu. Pick a project and a date range and read. When you want something the dashboards do not show, ask your agent: it builds the widget from eighteen types, and the widget has to run and return the right data before it is saved.
Every widget type drawn with sample data, in the console itself. How dashboards get built
The default tracking needs no consent, because there is nothing to consent to. When you do need to know who — signed-in users in your app — switch that one project to identified.
Not on projects, not on seats, not on features. Page views and events count the same, added up across all your projects.
Cloud · early access
$5 /month to start
We run it, you connect your agent. You move up a step only when your traffic does.
Early access is opening in batches. No card to join the list.
Self-hosted
Free · forever
One binary and one SQLite file. No Postgres, no ClickHouse, no Redis to run next to it.
Docker compose or systemd.
Most analytics gets expensive at the wrong moment: when you have five experiments and none of them has proven itself yet. Here, ten quiet projects cost the same as one, and the bill only grows once something works.
Everything else is in the documentation, which is the same text Twillingate serves to your agent.
No. The seven built-in dashboards cover who visits, from where, what they do and whether they come back. For anything else, ask your agent in plain words.
Not for the default mode. It sets no cookies, keeps nothing on the device and sends nothing identifying. Only a project you switch to identified tracking needs consent — the details are on the privacy page.
For one project on its own, maybe not — plenty of tools are free for a single site. Twillingate is built for the builder with five of them: every project is included, and $5 covers up to 100k events across all of them.
Claude Code, Claude Desktop and claude.ai are documented step by step, and any other MCP client uses the same URL. Anything that is not an MCP client reaches the identical operations as REST routes.
No. Add the tag and read the built-in dashboards. The agent is how you get past them — and how the tag gets added without you reading a setup guide.
Yes. Skip the browser tag and POST batches of events straight to
/ingest/events. The wire format is documented as a normative
contract.
There is a shim for Plausible's class-tagging convention, so existing markup and goal names keep working while you move.
Not yet — it is opening in batches, and the list is how you get in. Running it yourself works right now, and is what the cloud will be running.
It will have the first report ready before you finish deciding what to call the project.