{"id":51036025,"url":"https://github.com/giannimassi/session-browser","last_synced_at":"2026-06-22T06:02:40.192Z","repository":{"id":350423632,"uuid":"1206745358","full_name":"giannimassi/session-browser","owner":"giannimassi","description":"Browse and search Claude Code conversation history in a local web UI","archived":false,"fork":false,"pushed_at":"2026-04-10T09:02:41.000Z","size":96,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-10T10:36:57.927Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/giannimassi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-10T08:03:44.000Z","updated_at":"2026-04-10T09:02:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/giannimassi/session-browser","commit_stats":null,"previous_names":["giannimassi/session-browser"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/giannimassi/session-browser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fsession-browser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fsession-browser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fsession-browser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fsession-browser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giannimassi","download_url":"https://codeload.github.com/giannimassi/session-browser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giannimassi%2Fsession-browser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34636427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-22T06:02:39.358Z","updated_at":"2026-06-22T06:02:40.187Z","avatar_url":"https://github.com/giannimassi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Session Browser\n\nBrowse and search your [Claude Code](https://docs.anthropic.com/en/docs/claude-code) conversation history in a local web UI.\n\n![Session list](https://github.com/user-attachments/assets/placeholder-list.png)\n\n## Features\n\n- **Session list** with sortable columns: date, repos touched, first prompt, branch, duration, cost, turns\n- **Full-text search** across all user messages and assistant responses (SQLite FTS5)\n- **Filter** by workspace/repo, date range (today / 7d / 30d / all)\n- **Session detail view** with chat-style conversation rendering:\n  - Markdown rendering with syntax-highlighted code blocks\n  - Collapsible thinking blocks\n  - Collapsible tool calls with one-line summaries (Bash commands, file operations, agent dispatches)\n  - Tool results with large output truncation\n  - Subagent transcript navigation\n- **Auto-indexing** with incremental re-scan (only re-indexes changed files)\n- **Repo detection** from file paths in tool calls (auto-discovers git repos)\n- **Dark/light theme** toggle\n- **No LLM involved** -- pure data extraction and rendering\n\n## How it works\n\nClaude 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.\n\n```\n~/.claude/projects/**/*.jsonl  -\u003e  [Indexer]  -\u003e  SQLite  -\u003e  [FastAPI]  -\u003e  [Browser]\n```\n\n## Install\n\nRequires Python 3.11+.\n\n```bash\ngit clone https://github.com/giannimassi/session-browser.git\ncd session-browser\npython3 -m venv .venv\n.venv/bin/pip install -e .\n```\n\n## Usage\n\n```bash\n.venv/bin/python3 server.py\n```\n\nOpen http://127.0.0.1:8787 in your browser.\n\nOn first launch, all sessions are indexed (takes 2-5 seconds for ~300 sessions). Subsequent launches only re-index new or modified files.\n\n## Data\n\nSession 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).\n\n### What gets indexed\n\nPer session:\n- Session ID, project, git branch, timestamps, duration\n- First user prompt\n- Token usage and estimated cost (Opus pricing)\n- Tool call counts\n- Repos touched (auto-detected from file paths in Read/Write/Edit/Bash tool calls)\n- Full text of user messages and assistant responses (for search)\n\n### What gets parsed on detail view\n\n- Complete conversation with user/assistant messages\n- Thinking blocks (collapsed by default)\n- Tool calls with inputs and results\n- Subagent transcripts (linked from Agent tool calls)\n\n## Tech stack\n\n- **Python** -- FastAPI + uvicorn\n- **SQLite** with FTS5 -- session index and full-text search\n- **Vanilla JS + CSS** -- no build step, no node_modules\n- **marked.js** + **highlight.js** -- vendored for markdown/code rendering\n\n## Configuration\n\nThe server binds to `127.0.0.1:8787` by default. The Claude data directory defaults to `~/.claude`. Both can be changed in `server.py`.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiannimassi%2Fsession-browser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiannimassi%2Fsession-browser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiannimassi%2Fsession-browser/lists"}