agent tracking.md

Agent Tracking: See Which AI Agents Visit Your Docs

Add one line of middleware to detect AI coding agent visits to your website and documentation in real time, with zero performance impact.

Agent Tracking is a lightweight middleware layer that detects when AI coding agents visit your website or documentation. When Claude Code, OpenCode, ChatGPT, or any of the other supported agents reads your docs pages, Lightsage records the visit — giving you real data on which agents are actively researching your API.

Why this matters

You can optimize your documentation for AI agents without knowing which ones are actually visiting. But with Agent Tracking, you see the real picture: Claude Code visits your quick start 40 times a day, while Codex primarily reads your API reference. That's not a guess — it's a signal you can act on.

Understanding agent visit patterns helps you:

How it works

The middleware inspects incoming HTTP requests for agent-specific user agent strings. When it detects a known AI coding agent or answer engine, it logs the visit — including which page was accessed and a timestamp — and forwards the data to Lightsage. The middleware adds no detectable latency to normal user traffic.

Installation

Next.js

Create or update your middleware.ts file at the root of your project:

import { withAgentTracking } from '@lightsage/agent-tracker/next';

export default withAgentTracking({
  apiKey: process.env.LIGHTSAGE_API_KEY
});

export const config = {
  matcher: ['/((?!api|_next|admin).*)'],
};

Install the package:

npm install @lightsage/agent-tracker

Then add your API key to .env.local:

LIGHTSAGE_API_KEY=your_api_key_here

Vercel

If you're deploying to Vercel without Next.js, add the middleware directly to your Vercel project. Create middleware.ts at the project root:

import { withAgentTracking } from '@lightsage/agent-tracker/vercel';
import { NextRequest } from 'next/server';

export default withAgentTracking({
  apiKey: process.env.LIGHTSAGE_API_KEY
});

export const config = {
  matcher: ['/((?!api|_next|admin).*)'],
};

Set the environment variable in your Vercel project settings under Settings → Environment Variables:

LIGHTSAGE_API_KEY = your_api_key_here

Cloudflare Workers

Add the Lightsage tracker to your Cloudflare Worker:

import { createAgentTracker } from '@lightsage/agent-tracker/cloudflare';

const tracker = createAgentTracker({
  apiKey: env.LIGHTSAGE_API_KEY
});

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    await tracker.track(request);
    return fetch(request);
  }
};

Add the secret to your Worker via Wrangler:

wrangler secret put LIGHTSAGE_API_KEY

Express

Add the middleware to your Express app before your route handlers:

import express from 'express';
import { agentTracker } from '@lightsage/agent-tracker/express';

const app = express();

app.use(agentTracker({
  apiKey: process.env.LIGHTSAGE_API_KEY
}));

// Your routes below
app.get('/', (req, res) => {
  res.send('Hello world');
});

Set the environment variable before starting your server:

LIGHTSAGE_API_KEY=your_api_key_here node server.js

Netlify

Add an edge function to your Netlify project. Create netlify/edge-functions/agent-tracker.ts:

import { createAgentTracker } from '@lightsage/agent-tracker/netlify';

const tracker = createAgentTracker({
  apiKey: Deno.env.get('LIGHTSAGE_API_KEY')
});

export default tracker.handler;

export const config = {
  path: '/*'
};

Add the environment variable in the Netlify dashboard under Site configuration → Environment variables.

The LIGHTSAGE_API_KEY

Your API key connects the middleware to your Lightsage account. Find it in your Lightsage dashboard under Settings → API Keys.

The matcher config (Next.js and Vercel)

The matcher pattern controls which routes the middleware runs on:

export const config = {
  matcher: ['/((?!api|_next|admin).*)'],
};

This regex matches every path except:

If your documentation lives on a subdirectory like /docs, you can narrow the matcher to only track those pages:

export const config = {
  matcher: ['/docs/:path*'],
};

What you see in the dashboard

After installing the middleware, the Agent Analytics section of your dashboard shows:

Data point Description
Agent name Which AI agent made the visit (e.g., Claude Code, Cursor, ChatGPT)
Visit count Total visits from that agent over your selected time range
Pages visited Which specific pages the agent accessed, ranked by visit count
Timestamps When each visit occurred, shown in your local timezone
Visit trends Day-over-day and week-over-week visit volume per agent

You can filter by agent, date range, and page path to drill into specific patterns.

Agents detected

Lightsage's middleware detects all 17 tracked AI platforms:

Coding agents (10)

Claude Code, OpenAI Codex, Cursor, GitHub Copilot, Gemini CLI, OpenClaw, OpenCode, Hermes, Pi, Kilo

Answer engines (7)

ChatGPT, Google AI Overviews, Google AI Mode, Gemini Search, Perplexity, Claude, Microsoft Copilot

The middleware tracks visits from AI agent user agents, not human developer visits. Your existing analytics tools continue to capture human traffic normally. Agent Tracking adds a parallel view of your AI audience without replacing or interfering with any existing analytics setup.

Performance impact

The middleware operates asynchronously — it sends tracking data to Lightsage without blocking the request. For your human users, response times are unaffected. For AI agent visits, tracking adds no perceptible delay because agents are making HTTP requests regardless and aren't sensitive to single-digit millisecond differences.

Lightsage does not proxy your traffic. Requests go directly from the agent to your server; the middleware reads the request headers and fires a non-blocking event to Lightsage in the background.