Skip to main content

clack

PyPI Python License

A terminal UI for browsing, searching, and resuming Claude Code sessions.

Browse your full session history, read past conversations, jump into stats, and resume any session — all without leaving the terminal.


Install

# pipx
pipx install clack-tui

# uvx (run without installing)
uvx clack-tui

The package name is clack-tui because clack is already taken on PyPI. The package installs both clack and clack-tui executables.

Requires Python 3.11+ and Claude Code installed.


Quick start

clack

clack reads your Claude Code session files directly from ~/.claude/projects/ — no configuration needed.


Features

Tab Key What it does
Dashboard 1 Browse all sessions, search with full-text search (DuckDB FTS / BM25)
Stats 2 Token usage and model breakdown, daily sparklines
Dialog 3 Read any conversation turn-by-turn, export to HTML
Query 4 Write SQL directly against your session data (DuckDB)

Dashboard key bindings

Key Action
/ Focus search
Esc Clear search
Enter Resume session (opens claude --resume)
v View full conversation
p Open the session's PR in a browser (gh pr view -w)
o Page the session's plan doc ($PAGER, default less)
O Open a shell in the session's scratchpad dir
r Refresh session list
a Load all history into raw_records (see Memory)
q Quit

PR column: Each session records the git branch it was working on, so clack can show the pull request that branch belongs to — repo#number with a colored icon for its state:

State
blue open
yellow commented
red changes requested
green approved
dim merged
dim closed

This needs the gh CLI on your PATH and authenticated; without it the column is simply blank. PRs are fetched in the background — one gh pr list per repo, several repos at a time, cached for five minutes — so the dashboard stays responsive and the column fills in repo by repo.

tmux / cmux: If clack is running inside a tmux session, resuming opens the session in a new tmux window (or jumps to the existing pane if that session is already live). The same behavior works inside cmux — clack opens a new cmux workspace via cmux new-workspace --cwd ... --command ..., or focuses the existing pane with cmux focus-pane. Outside any multiplexer, clack suspends the TUI, runs claude --resume, and returns when you exit.

Plan column: A session that ended a plan-mode turn wrote a plan doc to ~/.claude/plans/. Those sessions are marked in the Plan column (dimmed when the file has since been deleted), the doc's name shows in the detail bar, and o pages it in a new window. Plan bodies are recorded in the transcript itself, so they stay searchable even after the file is gone.

Search scope: The full-text index covers each session's early user messages, its title, summary, and cwd, and the body of its plan doc. If the DuckDB FTS extension is unavailable, dashboard search falls back to simple substring matching.

Query console

The Query console exposes your session data as DuckDB SQL views:

View Contents
v_sessions One row per session — date, project, summary, model, turn count
v_assistant_turns Individual assistant turns with token counts
v_stats Aggregated usage by model
v_sessions_by_day Daily session and token totals
raw_records Raw JSONL records — recently active sessions only; press a to load all history

Example queries:

-- Sessions from the last week
SELECT title, cwd, turn_count FROM v_sessions
WHERE last_active > now() - INTERVAL '7 days';

-- Most token-heavy sessions
SELECT sessionId, SUM(output_tokens) AS total
FROM v_assistant_turns GROUP BY 1 ORDER BY 2 DESC LIMIT 10;

Memory

clack holds your session history in an in-memory DuckDB. To keep that bounded, transcripts for sessions untouched for more than 14 days are not kept resident — only their aggregates are: the dashboard row, token totals, and search text. Everything you see stays complete; the Dashboard, Stats and search all cover your full history regardless of age, and opening an old conversation reads that one file from disk on demand.

The one place the split is visible is the Query console, where raw_records holds recent sessions only. Press a to load the archived transcripts into it — this costs roughly whatever those files weigh on disk, and restarting clack releases it again.

Dev setup

git clone https://github.com/jcc-ne/clack
cd clack
uv sync
uv run clack

Release notes for TestPyPI and Trusted Publishing live in docs/releasing.md.


Requirements

  • Python 3.11+
  • Claude Code (session files at ~/.claude/projects/)
  • tmux or cmux (optional — enables jumping to live sessions and opening resumed sessions in a new window/workspace)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clack_tui-0.4.1.tar.gz (43.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clack_tui-0.4.1-py3-none-any.whl (48.7 kB view details)

Uploaded Python 3

File details

Details for the file clack_tui-0.4.1.tar.gz.

File metadata

  • Download URL: clack_tui-0.4.1.tar.gz
  • Upload date:
  • Size: 43.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for clack_tui-0.4.1.tar.gz
Algorithm Hash digest
SHA256 7616b36bbb9ad72d20469a1168863decf32877ee5944e9069b79e84f873f47bd
MD5 8ccb0fa8de6835af1f916480e6563c6c
BLAKE2b-256 6604a7c1ff692837645ae57a59721622c2fea5be11d4b085015decd8cfdaec58

See more details on using hashes here.

Provenance

The following attestation bundles were made for clack_tui-0.4.1.tar.gz:

Publisher: publish.yml on jcc-ne/clack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clack_tui-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: clack_tui-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 48.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for clack_tui-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ce1e0ff8ab4ee324ceec15c4ecbfe8ac398b059915c24c7634c4c66aa1bfb9a9
MD5 214213673b14ec2c7e686dc4e19d9f03
BLAKE2b-256 0a5e445b219b4a1643a3b662257d46c6caab0d85949e504f478772f51b0fe3d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for clack_tui-0.4.1-py3-none-any.whl:

Publisher: publish.yml on jcc-ne/clack

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page