A native desktop browser for Claude Code, Codex, and Gemini CLI — read, search, and manage local session transcripts from all three in one place.
Faithful replay — thinking chains, tool-call pairings, structured diffs, inline screenshots.
Fast search — cross-project global hit (⌘⇧F) jumps to the exact message; one-click resume in Terminal.
Deep stats — aggregate token spend and cost; slice by project, model, or tool.
Read-only safety — original JSONL is never touched; delete is a move to shared trash, never rm.
Flexible export — single session or batches to offline-readable Markdown or HTML.
Features
- 🗂 Unified project view — group sessions by working directory across both CLIs
- 💬 Faithful chat replay — text, thinking blocks, tool calls, structured diffs, inline images
- 🔎 In-session search with scope — search across the whole conversation or scope to user messages, agent replies (incl. edits), or tool noise; prev / next jump + match counter
- 🌐 Global search (⌘⇧F / Ctrl+Shift+F) — Algolia-style overlay over the current agent, scoped to session titles and your own messages; click a hit to jump straight to that message with a flash highlight; recent queries with single-item removal
- 🔃 Session list search & sort — keyword search runs on the Rust side, matching session titles and your message text (cancellable mid-typing); sort by recency / size / message count, or show only ones with an ID
- 🪗 Collapse / expand all tool calls — one click to hide tool-call clutter and focus on the conversation
- 📤 Export session — save a single session to Markdown or HTML (native Save-As, offline-renderable HTML with inlined avatars / styles)
- 🧰 Multi-select & batch ops — pick sessions in bulk to move them to the trash or export them into a single export-YYYYMMDD-HHMMSS-{md,html}/ folder
- 🔄 Resume or start fresh — open Terminal in a project to resume an existing session (claude --resume <id> / codex resume <id>) or start a brand-new one
- 📡 Live tail — opened session auto-refreshes as the CLI appends new messages; an "● Live" indicator shows the watcher is active, and a "N new ↓" pill surfaces additions when you've scrolled up
- 🗑 Shared trash — soft-delete, preview a deleted session's transcript, restore one or many (multi-select); survives across both agents
- 🏠 Welcome screen — recently opened projects per agent with one-click reopen + per-entry removal
- 📌 Pin / sink projects — color-coded pins on the sidebar; sunk projects go to the bottom
- ✏️ Rename sessions — your new title syncs back to the CLI, so claude / codex resume pickers show it too
- 🌗 Light / dark / system theme — Codex-inspired neutral palette with brand-color accents
- 🌐 i18n with auto-detect — English / 简体中文 / 繁體中文 / 日本語;first launch matches the OS language, falls back to English
- ⚡️ Custom tooltip & agent brand icons — no out-of-place native chrome
- 🖼 Image lightbox for screenshots embedded in transcripts
A native desktop browser for Claude Code, Codex, Antigravity CLI, and opencode.Read, search, and manage local session transcripts from all four in one place.
Global search — cross-project instant search (⌘⇧F) jumps to the exact message
In-app chat — start or resume a session in a built-in chat with live model, reasoning-effort (incl. Opus Ultracode), and permission-mode pickers — no terminal required
One-click resume — resume or start a session in an embedded terminal or external app — supports Terminal.app, cmux, iTerm2, Ghostty, and Warp
Shell terminal tabs — open pure shell tabs alongside agent sessions for running arbitrary commands in the project directory; tabs persist across restarts
Split panes — split any project into side-by-side or stacked panes, each with its own tab strip; drag tabs to reorder within a pane or move them between panes, with keyboard shortcuts for every action (see Settings → Shortcuts). Every project remembers its own layout across restarts
cmux deep integration — auto-reuses existing workspace by cwd, locates running sessions with blue flash, smart split direction, and directory-named tabs
Launch arguments — per-agent CLI flags (e.g. --dangerously-skip-permissions) appended on resume / new session
Jump to prompt — locate button lists all user prompts; click to scroll and flash the target message
Views history — per-project, searchable history of every view you've opened, with favorites; jump back to any past read or chat view in one click
Deep stats — aggregate token spend and cost with live model pricing from LiteLLM; slice by project, model, or tool
Menu bar stats — macOS tray icon shows at-a-glance Today / 7d / 30d cost and tokens per agent
Live model pricing — browseable pricing table for Claude / Codex, auto-updated from upstream
Flexible export — single session or batches to offline-readable Markdown, HTML, or lossless JSON
Bookmarks — pin any folder to the sidebar for quick access, per agent
Rename & delete — session renames sync back to the CLI; soft-delete moves to shared trash with restore support
Read-only safety — original JSONL is never touched, never rm
Screenshots
<img src="docs/screenshots/cover.png" />
<p align="center"><em>Main view — sidebar, sessions, chat</em></p>
<img src="docs/screenshots/chat.png" />
<p align="center"><em>Faithful replay — thinking, tool calls, structured diffs</em></p>
<img src="docs/screenshots/split-screen.png" />
<p align="center"><em>Split panes — multiple sessions side by side, drag tabs between panes</em></p>
<img src="docs/screenshots/chat-preview.png" />
<p align="center"><em>In-app chat — Mermaid & tables, @-mention files, attach images</em></p>
<img src="docs/screenshots/session-resume.png" />
<p align="center"><em>Embedded terminal — one-click resume or new session</em></p>
<img src="docs/screenshots/search.png" />
<p align="center"><em>Global search (⌘⇧F) jumps to the message</em></p>
<img src="docs/screenshots/stats.png" />
<p align="center"><em>Token & cost analytics by project, model, tool</em></p>
<img src="src/assets/sys-stats.png" />
<p align="center"><em>Menu bar stats — per-agent cost & token overview</em></p>
<img src="docs/screenshots/model-price.png" />
<p align="center"><em>Live model pricing</em></p>
<img src="docs/screenshots/trash.png" />
<p align="center"><em>Shared trash — soft-delete with one-click restore</em></p>
<img src="src/assets/settings.png" />
<p align="center"><em>Settings — terminal picker & launch arguments</em></p>
<img src="docs/screenshots/export.png" />
<p align="center"><em>Exported HTML — fully offline, opens in any browser</em></p>
On Linux the .AppImage is portable — chmod +x and run. The .deb installs with:
sudo apt install ./cc-sessions-viewer__amd64.deb
Development
git clone https://github.com/jerrywu001/cc-sessions-viewer.git
cd cc-sessions-viewer
npm install
npm run tauri dev # dev mode
npm run tauri build # bundle
Prereqs: Node 20+, Rust stable. See CLAUDE.md for architecture notes.