A jazzy terminal UI for browsing, searching, and inspecting Claude Code session history across all your projects. Native Rust, zero network, keyboard-driven.
▄████▄ ██████ ▄████▄ ▒█████ ██▓███ ▓█████
▒██▀ ▀█ ▒██ ▒ ▒██▀ ▀█ ▒██▒ ██▒▓██░ ██▒▓█ ▀
▒▓█ ▄ ░ ▓██▄ ▒▓█ ▄ ▒██░ ██▒▓██░ ██▓▒▒███
▒▓▓▄ ▄██▒ ▒ ██▒▒▓▓▄ ▄██▒▒██ ██░▒██▄█▓▒ ▒▒▓█ ▄
▒ ▓███▀ ░▒██████▒▒▒ ▓███▀ ░░ ████▓▒░▒██▒ ░ ░░▒████▒
Walks ~/.claude/projects/*, parses each project's sessions-index.json, and
streams session JSONL on demand. Two-pane layout: collapsible project tree on
the left, color-coded transcript on the right.
[user] lime · [assistant] neutral · [tool_use] gold · [tool_result]
dim · [thinking] violet · [summary] cyancargo run --release
| flag | env | default | what |
|---|---|---|---|
--claude-home <path> | CSCOPE_CLAUDE_HOME | ~/.claude | look elsewhere |
--metrics-port <port> | CSCOPE_METRICS_PORT | 9090 | Prometheus /metrics (0 disables) |
--log-file <path> | CSCOPE_LOG_FILE | $XDG_STATE_HOME/cscope/cscope.log | structured log file |
--log-filter <directives> | CSCOPE_LOG | cscope=info,warn | tracing filter |
| key | action |
|---|---|
j/k, ↑/↓ | navigate / scroll |
Ctrl-d/u, PgDn/PgUp | jump 10 / 15 |
g/G | top / bottom |
Enter | expand project · load session |
Tab | switch pane |
/ | filter (esc to clear) |
s | cycle sort: recent → tokens → msgs → alpha |
p | toggle tree / flat |
t | toggle thinking blocks |
r | toggle tool_result blocks |
R | rescan ~/.claude/projects/ |
y | print session UUID into the status bar |
q, Esc | quit (Esc backs out of transcript first) |
Every keypress, render, JSONL parse error, and session load duration is
tracked. The /metrics endpoint serves Prometheus text format on port 9090
(or --metrics-port):
cscope_build_info{version="0.1.0"} 1
cscope_uptime_seconds 12.345
cscope_sessions_total 142
cscope_projects_total 15
cscope_messages_loaded_total 0
cscope_jsonl_parse_errors_total 0
cscope_keypresses_total 0
cscope_render_seconds_sum 0.000000
cscope_render_seconds_count 0
cscope_session_load_seconds_sum 0.000000
cscope_session_load_seconds_count 0
Logs are JSON-per-line, rotated by your filesystem of choice. Tail with jq:
tail -f ~/Library/Application\ Support/cscope/cscope.log | jq .
cargo build --release
# binary at target/release/cscope
ratatui 0.30 + ratatui-widgets 0.3 + crossterm for the TUItracing + tracing-subscriber (JSON layer) for structured loggingtiny_http for the /metrics serverserde_json for streaming JSONLwalkdir + dirs for filesystem discoveryNo async runtime, no API calls, no config file required. Read-only — cscope
never writes to ~/.claude/.
7 commits
Rust
100.0%
A jazzy terminal UI for browsing, searching, and inspecting Claude Code session history across all your projects. Native Rust, zero network, keyboard-driven.
▄████▄ ██████ ▄████▄ ▒█████ ██▓███ ▓█████
▒██▀ ▀█ ▒██ ▒ ▒██▀ ▀█ ▒██▒ ██▒▓██░ ██▒▓█ ▀
▒▓█ ▄ ░ ▓██▄ ▒▓█ ▄ ▒██░ ██▒▓██░ ██▓▒▒███
▒▓▓▄ ▄██▒ ▒ ██▒▒▓▓▄ ▄██▒▒██ ██░▒██▄█▓▒ ▒▒▓█ ▄
▒ ▓███▀ ░▒██████▒▒▒ ▓███▀ ░░ ████▓▒░▒██▒ ░ ░░▒████▒
Walks ~/.claude/projects/*, parses each project's sessions-index.json, and
streams session JSONL on demand. Two-pane layout: collapsible project tree on
the left, color-coded transcript on the right.
[user] lime · [assistant] neutral · [tool_use] gold · [tool_result]
dim · [thinking] violet · [summary] cyancargo run --release
| flag | env | default | what |
|---|---|---|---|
--claude-home <path> | CSCOPE_CLAUDE_HOME | ~/.claude | look elsewhere |
--metrics-port <port> | CSCOPE_METRICS_PORT | 9090 | Prometheus /metrics (0 disables) |
--log-file <path> | CSCOPE_LOG_FILE | $XDG_STATE_HOME/cscope/cscope.log | structured log file |
--log-filter <directives> | CSCOPE_LOG | cscope=info,warn | tracing filter |
| key | action |
|---|---|
j/k, ↑/↓ | navigate / scroll |
Ctrl-d/u, PgDn/PgUp | jump 10 / 15 |
g/G | top / bottom |
Enter | expand project · load session |
Tab | switch pane |
/ | filter (esc to clear) |
s | cycle sort: recent → tokens → msgs → alpha |
p | toggle tree / flat |
t | toggle thinking blocks |
r | toggle tool_result blocks |
R | rescan ~/.claude/projects/ |
y | print session UUID into the status bar |
q, Esc | quit (Esc backs out of transcript first) |
Every keypress, render, JSONL parse error, and session load duration is
tracked. The /metrics endpoint serves Prometheus text format on port 9090
(or --metrics-port):
cscope_build_info{version="0.1.0"} 1
cscope_uptime_seconds 12.345
cscope_sessions_total 142
cscope_projects_total 15
cscope_messages_loaded_total 0
cscope_jsonl_parse_errors_total 0
cscope_keypresses_total 0
cscope_render_seconds_sum 0.000000
cscope_render_seconds_count 0
cscope_session_load_seconds_sum 0.000000
cscope_session_load_seconds_count 0
Logs are JSON-per-line, rotated by your filesystem of choice. Tail with jq:
tail -f ~/Library/Application\ Support/cscope/cscope.log | jq .
cargo build --release
# binary at target/release/cscope
ratatui 0.30 + ratatui-widgets 0.3 + crossterm for the TUItracing + tracing-subscriber (JSON layer) for structured loggingtiny_http for the /metrics serverserde_json for streaming JSONLwalkdir + dirs for filesystem discoveryNo async runtime, no API calls, no config file required. Read-only — cscope
never writes to ~/.claude/.
7 commits
Rust
100.0%