I use a lot of AI coding tools — Claude Code, Cursor, GitHub Copilot, OpenCode,
Windsurf, and Antigravity. The problem: my prompt history was trapped in six
separate local stores, in six different formats, with no way to see it together.
So I built AI Prompt Monitor —
a local, self-hosted Next.js dashboard that ingests all of it into one searchable,
filterable view.
What it does
- Aggregates prompts from all six tools into a local SQLite index
- Filter by platform, project, and date range; full-text search
- Stats (total prompts, sessions, projects) + charts (prompts/day, per platform)
- A dedicated page per platform
- Copy any prompt or session ID with one click
- 100% local and read-only — nothing is ever uploaded
The hard part: every tool hides prompts differently
This is where it got interesting. Here's what I found:
| Tool | Storage | Format |
|---|---|---|
| Claude Code | ~/.claude/history.jsonl |
JSONL — easy |
| Cursor |
state.vscdb (~700MB) |
SQLite; prompts split across composerData + bubbleId rows |
| OpenCode | opencode.db |
clean relational SQLite (sessions/messages/parts) |
| Copilot | workspaceStorage/*/chatSessions/*.json |
per-workspace JSON |
| Windsurf | ~/.codeium/chat_state/*.pbtxt |
text-format protobuf (legacy); Cascade is encrypted |
| Antigravity |
state.vscdb trajectory summaries |
base64'd protobuf I decoded by hand |
A few things I had to solve:
- Locked databases — IDEs hold their SQLite files open, so I copy them to a temp dir and open the copy read-only.
-
No native dependencies — using Node 22's built-in
node:sqlitemeans nobetter-sqlite3build step. - Encrypted stores — Windsurf Cascade and Antigravity conversation bodies are encrypted on disk, so those gracefully fall back to titles only.
- Project attribution — Cursor doesn't directly link prompts to a project, so I match against workspace generation data by text and timestamp.
Try it
git clone https://github.com/alaminrifat/ai-prompt-monitor.git
cd ai-prompt-monitor
npm install
npm run dev
Open http://localhost:3000 and hit Refresh. Needs Node 22+.
It's MIT licensed and I'd love contributions — especially parsers for more tools.
If you know where your favorite tool stores its history, open an issue or a PR.
Top comments (0)