Skip to content

giannimassi/session-browser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Session Browser

Browse and search your Claude Code conversation history in a local web UI.

Session list

Features

  • Session list with sortable columns: date, repos touched, first prompt, branch, duration, cost, turns
  • Full-text search across all user messages and assistant responses (SQLite FTS5)
  • Filter by workspace/repo, date range (today / 7d / 30d / all)
  • Session detail view with chat-style conversation rendering:
    • Markdown rendering with syntax-highlighted code blocks
    • Collapsible thinking blocks
    • Collapsible tool calls with one-line summaries (Bash commands, file operations, agent dispatches)
    • Tool results with large output truncation
    • Subagent transcript navigation
  • Auto-indexing with incremental re-scan (only re-indexes changed files)
  • Repo detection from file paths in tool calls (auto-discovers git repos)
  • Dark/light theme toggle
  • No LLM involved -- pure data extraction and rendering

How it works

Claude Code stores conversation transcripts as JSONL files in ~/.claude/projects/. Session Browser indexes these files into a local SQLite database and serves a web UI for browsing them.

~/.claude/projects/**/*.jsonl  ->  [Indexer]  ->  SQLite  ->  [FastAPI]  ->  [Browser]

Install

Requires Python 3.11+.

git clone https://github.com/giannimassi/session-browser.git
cd session-browser
python3 -m venv .venv
.venv/bin/pip install -e .

Usage

.venv/bin/python3 server.py

Open http://127.0.0.1:8787 in your browser.

On first launch, all sessions are indexed (takes 2-5 seconds for ~300 sessions). Subsequent launches only re-index new or modified files.

Data

Session Browser is read-only. It never modifies your Claude Code data. The SQLite index is stored at ~/.cache/session-browser/sessions.db and can be safely deleted (it will be rebuilt on next launch).

What gets indexed

Per session:

  • Session ID, project, git branch, timestamps, duration
  • First user prompt
  • Token usage and estimated cost (Opus pricing)
  • Tool call counts
  • Repos touched (auto-detected from file paths in Read/Write/Edit/Bash tool calls)
  • Full text of user messages and assistant responses (for search)

What gets parsed on detail view

  • Complete conversation with user/assistant messages
  • Thinking blocks (collapsed by default)
  • Tool calls with inputs and results
  • Subagent transcripts (linked from Agent tool calls)

Tech stack

  • Python -- FastAPI + uvicorn
  • SQLite with FTS5 -- session index and full-text search
  • Vanilla JS + CSS -- no build step, no node_modules
  • marked.js + highlight.js -- vendored for markdown/code rendering

Configuration

The server binds to 127.0.0.1:8787 by default. The Claude data directory defaults to ~/.claude. Both can be changed in server.py.

License

MIT

About

Browse and search Claude Code conversation history in a local web UI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors