Show HN: Vaportrail – flight recorder for Claude Code, Codex, and OpenCode

b33bmo2 pts0 comments

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

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

B33BMO

vaportrail

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

master

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>5 Commits<br>5 Commits

demo

demo

src

src

.gitignore

.gitignore

LICENSE

LICENSE

README.md

README.md

package-lock.json

package-lock.json

package.json

package.json

tsconfig.json

tsconfig.json

View all files

Repository files navigation

vaportrail

Your agents leave trails. vaportrail reads them.

A local-first flight recorder for AI coding agent sessions. Every Claude Code , Codex CLI , and opencode 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 three formats and turns that pile of JSON into one searchable, replayable history.

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

npx vaportrail

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

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<br>" href="#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…<br>title Build SSH over WebSocket with agent enrollment<br>project ~/wssh (main)<br>when 2026-06-02 22:14 → 2026-06-03 00:04 (1h 49m)<br>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…<br>22:14:47 ⚒ Bash ls -la /Users/b/wssh && command -v go node python3…<br>22:15:40 ✦ Hell yes — this is a great idea, and it's very buildable…<br>22:17:03 ⚒ Write /Users/b/wssh/go.mod<br>22:17:15 ⚒ Write /Users/b/wssh/main.go<br>...

Use --full for untruncated text.

vaportrail search<br>" href="#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<br>meaning

-s, --source<br>agents to read: claude, codex, opencode (comma list; default all)

-p, --project<br>only sessions whose project path contains (. = current dir)

-n, --limit<br>max rows / matches

-a, --all<br>no limit

-j, --json<br>machine-readable output for every command

-d, --dir<br>transcript root override (combine with -s for non-claude layouts)

--agents<br>include subagent transcripts

How it works

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

agent<br>where it reads from

Claude Code<br>~/.claude/projects/**/*.jsonl (honors CLAUDE_CONFIG_DIR)

Codex CLI<br>~/.codex/sessions/**/rollout-*.jsonl (honors CODEX_HOME)

opencode<br>~/.local/share/opencode/storage/ (honors XDG_DATA_HOME)

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

Codex CLI and opencode transcript formats

More agents: Gemini...

vaportrail agents agent search json session

Related Articles