Codex & Claude History Viewer
Local-first, dependency-free web viewer for Codex CLI and Claude Code session logs.
- Browse sessions and projects (work dirs)
- Search sessions by keyword + date range
- Filter messages by role, and search within a session (highlight + next/prev)
- Sort sidebar by start time or last activity
- Highlight interruptions and common error outputs
Not affiliated with OpenAI or Anthropic. “Codex” and “Claude” are trademarks of their respective owners.
More screenshots
Why
Codex CLI and Claude Code both generate local, machine-readable transcripts (JSONL). This project turns those logs into a fast, searchable “history inbox” you can use to:
- find past commands/patches/discussions quickly
- audit tool failures and interruptions
- compare sessions across days/projects
- keep everything local (no uploads by default)
Quick start
Requirements:
- Python 3.8+ (standard library only)
- A modern browser
Run:
python3 app.py
or install and use the global CLI:
CCHV install
CCHV serve
Open:
By default it reads:
- Codex logs:
~/.codex/sessions - Claude logs:
~/.claude/projects
Indexes (SQLite) are stored by default in ~/.cache/cchv (or $XDG_CACHE_HOME/cchv) unless you set --data-dir.
Configuration
Show all options:
python3 app.py --help
CCHV subcommands:
CCHV --help
CCHV serve --help
CCHV demo --help
CCHV install
Demo data (included)
This repo includes a small set of synthetic Codex/Claude logs under demo/ so you can try the UI without using your own transcripts.
python3 app.py \
--codex-dir ./demo/codex \
--claude-dir ./demo/claude \
--data-dir ~/.cache/cchv/demo
Common examples:
# Store indexes outside the repo (recommended)
python3 app.py --data-dir ~/.cache/cchv
# Same thing via the bundled CLI
CCHV serve --data-dir ~/.cache/cchv
# Bind to LAN (be careful: your logs may contain secrets)
python3 app.py --host 0.0.0.0 --port 8787
# Launch with bundled synthetic logs
CCHV demo
# Install CCHV into ~/.local/bin so it works globally
CCHV install
# Custom log locations (these are the *base dirs* that contain `sessions/` and `projects/`)
python3 app.py --codex-dir ~/.codex --claude-dir ~/.claude
# Faster/slower auto-rescan (seconds)
python3 app.py --scan-interval 2
Using the UI
- Source: switch between Codex / Claude Code logs.
- Browse:
- Sessions: list individual sessions.
- Projects: group sessions by working directory (cwd).
- Sidebar sort: top-right dropdown in the sessions list:
Start time(default)Last activity
- Roles: toggle user/assistant/system/developer/tool/other.
- Role jump: click a message on the right, then use each role row’s
▲/▼buttons to jump across that role. Then/mcounter shows the selected message’s position within that role. - Search
- Left panel: keyword search across sessions + optional date range, with a keyword clear button.
- Right panel: search within the opened session (highlight + ▲/▼ navigation). The summary uses
n/mformat.
- Error highlighting
- User interruptions (e.g.
turn_aborted) are highlighted. - Common tool failures (HTTP 4xx/5xx, Traceback/Exception,
Status: error, etc.) are highlighted.
- User interruptions (e.g.
Privacy & safety notes
- Your local transcripts may contain sensitive info (API keys, file paths, proprietary code).
- If you bind
--host 0.0.0.0, anyone on your network may be able to access the UI. Prefer127.0.0.1. - Index files are local SQLite databases; this repo’s
.gitignoreexcludes them.
License
MIT (see LICENSE).
Release files for codex-claude-history-viewer 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| codex_claude_history_viewer-0.1.0.tar.gz | 32.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| codex_claude_history_viewer-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.1 kB
Release files / codex_claude_history_viewer-0.1.0.tar.gz
| Download URL | codex_claude_history_viewer-0.1.0.tar.gz |
|---|---|
| Size | 32.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1f155cb0a31ebf2a11f78c036dff3c8a466ab140eb76fe11db3d17b9069201f5
|
|
BLAKE2b-256 checksum How to use checksums |
e1cb17b3ba3caae6a32fd82226df03d08742eb3529eda71a012796f65df5e5dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.20
|
Release files / codex_claude_history_viewer-0.1.0-py3-none-any.whl
| Download URL | codex_claude_history_viewer-0.1.0-py3-none-any.whl |
|---|---|
| Size | 31.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
08b01a85f11d12d9e705d9cceaad59bdddb0177312321e81abff1e1bef3c8fc2
|
|
BLAKE2b-256 checksum How to use checksums |
93acb38683bcb8505b5fa7fdd70ed9a8800c813984aead6acca7ab71f076adca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.8.20
|