StrideLabs
Tools from the lab · stridelabs.ai Built with agents
Terminal UI · Rust

Strix

A git TUI for reviewing agent diffs with first-class mouse support.

A git diff and staging viewer with side-by-side diffs, history, first-class mouse support, syntax highlighting, and theming, all in the terminal. It auto-refreshes as files change, so you can watch an agent's edits land in real time and stage deliberately.

$ brew install charliek/tap/strix
strix
$ strix
┌─ Staged ──────────────┐┌─ Diff: src/server.rs ───────────┐
│ M src/server.rs       ││ @@ -42,7 +42,8 @@ fn listen() {   │
│ A src/router.rs       ││  let addr = config.bind_addr();   │
├─ Unstaged ────────────┤│- let sock = bind(addr)?;          │
│ M src/config.rs       ││+ let sock = bind(addr)             │
│ ? notes.md            ││+     .context("bind failed")?;    │
└───────────────────────┘└──────────────────────────────────┘
 [space] stage  [d] diff mode  [i] history  [q] quit
01

Overview

Strix is a focused TUI for reviewing diffs and staging changes without leaving the terminal. It draws on tools I admire (the side-by-side diff view from VS Code and Cursor, and terminal git UIs like LazyGit and tig) and pulls together the things I wanted in one place: side-by-side diffs, history, genuine first-class mouse support, and theming that matches my terminal.

The layout is two panes. On the left, your changes: staged files at the top, unstaged and untracked below, with simple moves to stage, unstage, or reset. On the right, a syntax-highlighted diff of whatever’s selected, unified or side-by-side. A background watcher keeps it in sync with the working tree, so the diff updates as files change, handy for watching a coding agent edit in real time. Press i and the whole thing becomes a history view: a branch and merge rail graph with commit details alongside. It’s built in Rust on ratatui, gitoxide, and syntect.

02

Where it stands

Strix began as a git-diff idea for Roost and split into its own tool. That is still the shape: a small, focused utility you can launch from a Roost tab or run on its own when you want to inspect what changed and stage it deliberately. It is one of the tools here I mostly just use now, and the scope is likely to stay narrow.

What it does

Strix

Side-by-side diffs

The right pane renders the selected file's diff with syntect syntax highlighting, in unified or side-by-side mode: the two-column view I used to reach for VS Code or Cursor to get, here in the terminal.

Two-pane staging

Staged files up top, unstaged and untracked below; move files between sections to stage, unstage, or reset back to HEAD, all without leaving the terminal.

Mouse and keyboard, both first-class

Every action has a keybinding, and the same actions respond to clicks, drags, and scroll. Whichever hand you reach with, the tool answers the same. Mouse support is a goal here, not a bolt-on.

Live auto-refresh

A background watcher keeps Strix in sync with the working tree, so the diff updates as files change. Open it beside a coding agent and watch the edits land in real time; toggle it off to refresh manually with r.

History view

Press i for a branch and merge rail graph of the current branch, with commit details or file diffs against the commit's first parent on the right.

Themeable

Colors are configurable, so Strix can match the rest of your terminal rather than imposing its own palette.