by S40911120
Self-hosted web viewer for Claude Code session transcripts — read, search, replay, and audit every session you have ever run
# Add to your Claude Code skills
git clone https://github.com/S40911120/recensarecensa is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by S40911120. Self-hosted web viewer for Claude Code session transcripts — read, search, replay, and audit every session you have ever run. It has 52 GitHub stars.
recensa's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/S40911120/recensa" and add it to your Claude Code skills directory (see the Installation section above).
recensa is primarily written in TypeScript. It is open-source under S40911120 on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh recensa against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Every Claude Code session you run is written to disk as raw JSONL under
~/.claude/projects/ — the full conversation, every tool call, the model's thinking,
every subagent it spawned. Then it just sits there, unreadable. Want to know how you
fixed that bug last month? What that 40-minute agent run actually changed? Which of
your prompts sent it down a dead end? Good luck grepping.
Recensa indexes those transcripts into a local SQLite database and serves a
three-pane reader at http://localhost:7788. Reading never modifies your
transcripts, and the index is a disposable cache you can rebuild at any time.
You need Docker (Docker Desktop on Windows/macOS, Docker Engine on Linux) and a
~/.claude directory with some sessions in it.
Try it — run the prebuilt image straight from Docker Hub:
# macOS / Linux
docker run -d --name recensa -p 127.0.0.1:7788:7788 \
-v "$HOME/.claude:/data/claude:z" \
-v recensa-data:/app/backend/data \
-e RECENSA_PROJECTS_DIR=/data/claude/projects \
s40911120/recensa
On Linux, ~/.claude/projects is created owner-only (700/600) by the host CLI, so the
container needs a matching uid/gid to read it — it detects this on its own from the
mount, no flags required. The trailing :z relabels the mount for SELinux-enforcing
hosts (RHEL/Fedora/CentOS, Podman); it's a no-op everywhere else, including macOS and
Windows Docker Desktop, so it's safe to always include. Override the detected uid/gid
with -e PUID=... -e PGID=... if the mount's owner isn't the account you want.
# Windows — use PowerShell, not Git Bash (MSYS rewrites the /data/... paths)
docker run -d --name recensa -p 127.0.0.1:7788:7788 `
-v "$env:USERPROFILE\.claude:/data/claude" `
-v recensa-data:/app/backend/data `
-e RECENSA_PROJECTS_DIR=/data/claude/projects `
s40911120/recensa
Or run it from source with Compose:
git clone https://github.com/S40911120/recensa.git && cd recensa
cp .env.example .env # set CLAUDE_HOME to your .claude path
docker compose up -d --build
Then open http://localhost:7788. The first index runs in a background worker and can take minutes to tens of minutes depending on how many sessions you have — the UI is usable while it runs, and progress shows in a floating pill in the corner.
Search all of it, not the last five. Claude Code's resume picker shows a handful of recent sessions. Recensa's full-text search (SQLite FTS5, CJK-aware) covers every session you have ever run — "how did I fix that S3 retry bug?" is one query away.
Follow the conversation, not the noise. One session can hold thousands of tool
calls. God-view folds tools, thinking, and system noise into landmark rows you can
expand on demand. Async tool results are paired back to their call with a shared
colored rail, so a tool_result landing twelve messages later still reads as one
step.
Or cut the noise down two ways. The Main toggle (top right) folds every tool
call and thinking block away, leaving only your prompts and the model's replies.
Focus mode (the tab at the bottom) hides the app chrome itself — panels, header,
breadcrumb — for full-width, distraction-free reading. Esc exits.
See exactly what changed. Every Edit in a session renders as a real diff —
before in red, after in green, per-file, with timestamps. Audit an agent's changes
without leaving the reader.
Know what a session cost. Per-session statistics break down tool usage, files created / edited / deleted, model mix, token flow, and an estimated dollar cost.
Audit multi-agent runs. When a session spawns subagents or teammates, Recensa rebuilds the roster from the transcripts: every agent with its type, message count, and model in the info panel, a crosshair that jumps to the exact call site where it was spawned, and an "Open subagent transcript" deep-link into the agent's own conversation — and back.
Navigate compaction like it never happened. When Claude Code compacts a long session, the pre-compaction text is gone from the working context — but not from the transcript chain. Recensa marks every compaction point in the stream, lists them in a Compaction History panel so you can jump straight to any boundary, tracks your read position within the current compaction segment, and can reconstruct the full pre-compaction conversation, merged across the fork/resume chain, as a read-only view.
Keep your reading state. Pin, tag, rename, and annotate sessions. Your curation
lives in its own database (flags.db) that index rebuilds never touch. Live
sessions update in real time over WebSocket while Claude Code is still writing them.
Reads fine on a phone. The layout is responsive: on narrow screens the session list and the info panel become swipe-in drawers around the conversation, so checking what an agent did from the couch actually works.
The smaller things you notice after a day of use:
claude --resume invocation for the session, ready to paste into a terminal.j/k walk messages, / focuses search, g/Shift+G
jump to the ends, ? shows the full palette; skip-links cover the reader and
info panel.