I got tired of alt-tabbing to an IDE to see what Claude Code changed, so I built terminal overlays for it
Claude Code moved my coding into the terminal. But my reviewing didn't move with it. Every time the agent finished a task, I had two options: squint at git diff in a pager, or alt-tab to an IDE just to read the changes
Claude Code moved my coding into the terminal. But my reviewing didn't move with it.
Every time the agent finished a task, I had two options: squint at git diff in a pager, or alt-tab to an IDE just to read the changes β in a project the agent was working on, not me. And with a few sessions running in parallel across projects, getting back to one meant remembering which folder it lives in, cd-ing there, and running claude --resume by hand.
So I built familiar β three full-screen overlays for the kitty terminal, each on its own hotkey. Here's what they do and how the whole loop works.
DenoBY
/
familiar
Keyboard-driven kitty overlays for an AI-agent workflow: a Claude Code session manager, a git reviewer, and a log browser.
familiar
Claude Code writes the code in your terminal β familiar gives that terminal the missing IDE half. Three full-screen kitty overlays, one hotkey each: review everything the agent just changed in an IDE-grade diff and send line comments straight back into the chat; see all your sessions live β which agent is busy, which is waiting for your permission β and resume, fork or spin up a worktree in a keystroke; walk the git history the same way. Pure Python standard library plus vendored Pygments for syntax highlighting β nothing to install. macOS only.
A familiar is a helper spirit in a cat's shape β fitting for a set of kitty kittens that tend your coding agents.
Each kitten is a full-screen overlay opened by a hotkey:
| Kitten | Hotkey | What it does |
|---|---|---|
| session | Cmd+Shift+S |
Browse and manage Claude Code sessions β resume, fork, continue, new session, |
The loop: review β comment β paste back
Cmd+Shift+R opens review β a two-pane view of everything uncommitted: file tree with statuses on the left, syntax-highlighted unified diff on the right.
The parts that earn their keep daily:
-
Word-diff β in a changed line, only the words that actually changed are highlighted.
int(raw_minutes)βround(raw_minutes)reads instantly. -
β₯-click go-to-definition β jump to where a symbol is defined without leaving the overlay, with a back stack (
βo). No LSP, no index β a context-aware resolver on top ofgit grep. - Final-code view β read the file as it will look after the merge, IDE-style, edits marked in the gutter.
-
Line comments β markdown. This is the actual loop-closer: you walk the diff, drop comments on lines, press
wβ and everything lands in your clipboard as structured markdown. Paste into the Claude chat: "here are the review comments, fix them." Done.
When you don't need a full review β just pointing the agent somewhere β ββ§C copies an @path/to/file.py#L42 reference (or #L42-58 if you've selected a range with the mouse), the exact form Claude Code resolves. βC on a file in the tree copies its @path. No more "in that file, somewhere near that function".
Sessions: one list, all projects
Cmd+Shift+S opens session β every Claude Code session across all projects in one place:
The status is live β busy / waiting for permission / background agent β read from Claude Code's process registry, not from file mtimes, so it's the truth, not a guess. From the list: resume, fork, start a session in a fresh git worktree, or preview the whole conversation as a rendered transcript β tool calls with output, file edits as coloured diffs, markdown answers:
History: log
Cmd+Shift+L β commit list with a branch graph, and per-commit diffs on the same engine as review. git fetch / git push without leaving the overlay.
Under the hood
Each overlay is a kitty kitten β a Python TUI that kitty runs in an overlay window over your shell. That gave me a UI layer for free: real mouse events, pixel-precise clicks, instant startup. The whole thing is pure Python standard library (Pygments is vendored for highlighting) β no pip install, no node_modules, nothing to break.
A fun constraint: the terminal mouse protocol carries Shift/Alt/Ctrl but never Cmd β which is why go-to-definition is β₯-click, not β-click.
Try it
brew tap denoby/familiar https://github.com/DenoBY/familiar
brew install denoby/familiar/familiar
familiar enable --kittens
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.



