illun
Your analytics can’t see the AI agents reading your site. Your server can.
ChatGPT, Claude and Perplexity fetch pages on behalf of people every time someone asks them about a product. Those requests never run your analytics script. illun classifies them inside your own app and shows you what was read — without an IP address, cookie or query string ever leaving your infrastructure.
What it does
A small package in your Next.js proxy recognises known agents by user agent, verifies them against the vendors’ published address ranges where your deployment exposes a trustworthy client address, and sends one small event per live assistant fetch (and one aggregate per minute for crawlers) to an ingestion service hosted in the EU. The dashboard shows which agents read which pages, which were verified versus merely claimed, which URLs they guessed that don’t exist, and where your collection has gaps.
What it does not do
It does not track people. It does not set cookies. It cannot see agents that browse with an ordinary browser identity. It reports requests from identifiable agents, never “visitors” or “agents” as if they were people.
Install
pnpm add @illun/collector-next
// proxy.ts (Next 16) or middleware.ts
import { agentProxy } from "@illun/collector-next";
export default agentProxy({ project: "prj_…", writeKey: process.env.ILLUN_WRITE_KEY! });
export const config = {
matcher: [{
source: "/((?!_next/static|_next/image|favicon.ico).*)",
missing: [{ type: "header", key: "rsc", value: "1" }, { type: "query", key: "_rsc" }],
}],
};Where the data goes
Events are stored by a European operator in the EU. Raw events are kept for 14 days by default; aggregates for 15 months. The same Docker Compose file that runs the hosted service runs a self-hosted one. Full details: /llms.txt.