npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

vaportrail

v0.3.0

Published

Your agents leave trails. vaportrail reads them — a local-first flight recorder for AI coding agent sessions.

Readme

vaportrail

Your agents leave trails. vaportrail reads them.

A local-first flight recorder for AI coding agent sessions. Every Claude Code, Codex CLI, opencode, Gemini CLI, and Aider session leaves a detailed transcript on disk — what you asked, what the agent did, every file it touched, every command it ran, every token it burned. vaportrail reads all five formats and turns that pile of transcripts into one searchable, replayable history.

Zero runtime dependencies. Nothing leaves your machine. One command to try it:

npx vaportrail

vaportrail demo

Why

AI agents now do a meaningful share of the work in your repos, but their history is write-only: gigabytes of transcripts nobody can read. vaportrail answers the questions that data was always able to answer:

  • What did the agent actually do last Tuesday?vaportrail show <id>
  • Where did we solve this exact problem before?vaportrail search "jwt refresh"
  • Which files do agents churn on the most? What does a month of usage look like?vaportrail stats

Commands

vaportrail / vaportrail list

Recent sessions across every project — id, age, project, AI-generated title, prompt count, tool calls, output tokens, model.

vaportrail show <id>

Replay a session as a timeline: your prompts, the agent's narration, and every tool call with what it operated on.

vaportrail · session cca29f96…
title    Build SSH over WebSocket with agent enrollment
project  ~/wssh (main)
when     2026-06-02 22:14 → 2026-06-03 00:04 (1h 49m)
activity 16 prompts · 183 turns · 168 tool calls · opus-4-8

22:14:30  ❯ So.. I have a cool ass idea. So... SSH.. but over websocket…
22:14:47  ⚒ Bash ls -la /Users/b/wssh && command -v go node python3…
22:15:40  ✦ Hell yes — this is a great idea, and it's very buildable…
22:17:03  ⚒ Write /Users/b/wssh/go.mod
22:17:15  ⚒ Write /Users/b/wssh/main.go
...

Use --full for untruncated text.

vaportrail search <query>

Full-text search across your entire agent history — prompts and responses, with --regex for patterns and --tools to also match commands and file paths.

vaportrail stats

The big picture: sessions, prompts, turns, token totals (with cache split), a 30-day activity sparkline, a tool-usage leaderboard, per-model token tables, and the files your agents edit the most.

Options

| flag | meaning | |------|---------| | -s, --source <s> | agents to read: claude, codex, opencode (comma list; default all) | | -p, --project <s> | only sessions whose project path contains <s> (. = current dir) | | -n, --limit <n> | max rows / matches | | -a, --all | no limit | | -j, --json | machine-readable output for every command | | -d, --dir <path> | transcript root override (combine with -s for non-claude layouts) | | --agents | include subagent transcripts |

How it works

vaportrail reads each agent's native on-disk format — no hooks, no wrappers, no telemetry:

| agent | where it reads from | |-------|--------------------| | Claude Code | ~/.claude/projects/**/*.jsonl (honors CLAUDE_CONFIG_DIR) | | Codex CLI | ~/.codex/sessions/**/rollout-*.jsonl (honors CODEX_HOME) | | opencode | ~/.local/share/opencode/storage/ (honors XDG_DATA_HOME) | | Gemini CLI | ~/.gemini/tmp/<hash>/chats/*.json — project hashes are reversed by hashing likely paths, with tool-call args as fallback | | Aider | .aider.chat.history.md in ~ and project dirs up to two levels below it (markdown, parsed per embedded session) |

Everything is normalized into one session model: token usage is deduplicated where formats repeat it across entries, subagent work is separated from your own prompts, tool names are normalized across agents (shell_command and bash both count as Bash), and bookkeeping noise is filtered out. ~100 MB of history parses in about a second. Read-only: vaportrail never modifies a transcript.

Roadmap

  • [x] Codex CLI and opencode transcript formats
  • [x] Gemini CLI and Aider
  • [ ] Cursor CLI (sessions live in SQLite; needs node:sqlite)
  • [ ] vaportrail export <id> — session → markdown / shareable gist
  • [ ] Cost estimates per session/model
  • [ ] Local web UI (vaportrail ui) with cross-session analytics
  • [ ] Watch mode — live tail of a running session

License

MIT © Brandon Bischoff