cctv - A TUI for browsing Claude Code conversations

I’ve been using Claude Code heavily over the past few months and one thing that kept bugging me was how hard it is to find and resume old conversations. The built-in --resume picker works but it’s minimal — no filtering, no metadata at a glance, and no way to search across projects.

So I built cctv — a terminal UI for browsing and resuming Claude Code conversations from the local filesystem.

Why bother resuming?

Claude Code conversations accumulate context as you work — files discussed, decisions made, bugs investigated. Starting fresh throws all of that away. Resuming a session means:

  • No re-explaining — Claude already knows your codebase, what you tried, and what’s left
  • Cheaper — resumed sessions carry their prompt cache forward, so Claude doesn’t re-read everything from scratch
  • Better coherence — pick up hours or days later and the conversation still knows what was agreed

What it does

cctv reads Claude Code’s local storage (~/.claude/) and presents all your sessions in a searchable, filterable list. Each session shows its summary, project, git branch, linked PRs, message count, and when it was last active. Running sessions are highlighted.

Pressing Enter on a session launches claude --resume — cctv suspends, Claude takes over the terminal, and when you’re done cctv comes back. You can also pop open a stats view showing token usage and cache hit rates, or drill into the detail view for prompt history and model info.

Filtering

The filter bar supports regex and field-specific prefixes:

project:kubevirt$        # exact project name
branch:^feature/         # branches starting with feature/
pr:enhancements#242      # by PR repo or number
project:backend branch:main  # multiple terms ANDed

There’s also a non-interactive cctv list command with --json output for scripting, and all the same filter flags (--project, --branch, --pr, --cwd, --pwd).

Stack

It’s written in Go using the Charm libraries — Bubble Tea for the TUI, Lip Gloss for styling, and Cobra for the CLI. Tests use Ginkgo.

Source and installation instructions at github.com/lyarwood/cctv.

This was built around my own workflow so I’ve almost certainly missed use cases. If you have ideas for new filters, views, or features — or if you spot something that doesn’t work with your Claude Code setup — issues and PRs are very welcome.

Contents

comments powered by Disqus