Every session, indexed
Scans ~/.claude/projects/ into a local SQLite database at ~/.claudex/index.db. Incremental sync keyed on (path, size, mtime); staleness window is 5 minutes.
A Rust CLI that indexes every JSONL transcript Claude Code writes under ~/.claude/projects/ and turns them into reports — cost, tools, turns, PRs, full-text search, and more.
# With Cargo
cargo install --git https://github.com/utensils/claudex
# Or with Nix flakes
nix run github:utensils/claudex -- summary
# Or from a local checkout
git clone https://github.com/utensils/claudex
cd claudex && nix develop && cargo build --releaseSee the full installation guide for Nix, devshell, and shell-completion setup.
Claude Code persists every conversation as JSONL under ~/.claude/projects/<encoded-path>/<session>.jsonl. That's a gold mine — it records every user turn, every assistant message, every tool call, every token-usage block, every file modification — but those files are flat logs, not a queryable store.
claudex reads them once, indexes the parts you actually want to ask questions about, and gives you a CLI that answers questions like:
src/index.rs across sessions?No cloud. No daemon. No background service. Just a small Rust binary and a SQLite file under ~/.claudex/.