andyhmltn/critter

🐛 A TUI for reviewing via github

64

stars

9

commits

Rust

primary language

Aug 25, 2026

updated

README

Critter 🐛

Give every diff a second look. 👀

Critter brings GitHub's familiar review flow to a fast, keyboard-driven TUI: read diffs, leave inline comments, and submit a review. It also works as a review loop for coding agents—launch Critter, write your feedback, and send it straight back to the agent for another pass.

Critter demo

📦 Install

You need Rust, the GitHub CLI, and an authenticated GitHub session (gh auth login).

cargo install --git https://github.com/andyhmltn/reviewer

Critter uses nvim to open files by default. Set $EDITOR to use something else.

🔍 Review a pull request

# Pick a PR from the current repository
reviewer

# Open a PR directly
reviewer 447

# Review a repository without cloning it
reviewer -R owner/repo 447

Comments stay local until you submit. Press P to approve, request changes, or leave a comment.

🤖 Review with an agent

Run Critter from the agent's tmux session and wait for the submitted feedback:

# Review the current branch's PR, including uncommitted work
reviewer pr-tmux --wait

# Review the local working tree before a PR exists
reviewer local-tmux --wait

The command prints your review as a ready-to-use prompt, so the agent can apply the comments and run the loop again. Nothing is posted to GitHub.

To narrow a local review:

reviewer pr-tmux --wait --unstaged
reviewer pr-tmux --wait --last-commit
reviewer local-tmux --wait --base main

The bundled Codex plugin exposes the same flow as $local-review.

To start a review without spending a Codex turn on the plugin, add a tmux binding that opens Critter in its own window. The binding captures the originating pane before opening the review so Critter knows which Codex chat should receive the result. When you submit, the review window closes and the complete feedback is pasted into that chat and sent. Quitting without submitting leaves the Codex chat untouched.

# Review unstaged tracked changes with prefix + h.
bind-key h set-environment -gF REVIEWER_CODEX_PANE '#{pane_id}' \; \
  new-window -n reviewer -c '#{pane_current_path}' \
  '~/.cargo/bin/reviewer codex-tmux --target-pane "$REVIEWER_CODEX_PANE" --unstaged-or-pr'

--unstaged-or-pr reviews unstaged tracked changes when there are any and falls back to the current branch pull request when the working tree is clean. Use reviewer codex-tmux --last-commit for the last commit, or omit the scope flag to always review the current branch pull request.

⌨️ Keys

KeyAction
j / kMove between files, change blocks, or lines
h / lPrevious / next file
EnterOpen or comment
Alt+EnterInsert a newline in a comment
VSelect individual lines
/Search changed lines
n / NNext / previous search result
vMark file viewed
oOpen the current line in $EDITOR
cView pending comments
PSubmit or hand off the review
bOpen review intelligence
<Space>lToggle the file sidebar
:Open the command palette
EscGo back
qQuit

🧠 More

Critter can also run a deeper background review through pi:

reviewer peer-review -R owner/repo 42
reviewer peer-review-status -R owner/repo 42

It never starts an AI review automatically. Results are cached locally and appear inside the TUI.

Run reviewer --help for every command and reviewer --version for the installed version.

gh-dash

Add Critter as a gh-dash keybinding:

- key: R
  name: review
  command: reviewer {{.PrNumber}}

Contributors

andyhmltn

9 commits

andyhmltn/critter

🐛 A TUI for reviewing via github

64

stars

9

commits

Rust

primary language

Aug 25, 2026

updated

README

Critter 🐛

Give every diff a second look. 👀

Critter brings GitHub's familiar review flow to a fast, keyboard-driven TUI: read diffs, leave inline comments, and submit a review. It also works as a review loop for coding agents—launch Critter, write your feedback, and send it straight back to the agent for another pass.

Critter demo

📦 Install

You need Rust, the GitHub CLI, and an authenticated GitHub session (gh auth login).

cargo install --git https://github.com/andyhmltn/reviewer

Critter uses nvim to open files by default. Set $EDITOR to use something else.

🔍 Review a pull request

# Pick a PR from the current repository
reviewer

# Open a PR directly
reviewer 447

# Review a repository without cloning it
reviewer -R owner/repo 447

Comments stay local until you submit. Press P to approve, request changes, or leave a comment.

🤖 Review with an agent

Run Critter from the agent's tmux session and wait for the submitted feedback:

# Review the current branch's PR, including uncommitted work
reviewer pr-tmux --wait

# Review the local working tree before a PR exists
reviewer local-tmux --wait

The command prints your review as a ready-to-use prompt, so the agent can apply the comments and run the loop again. Nothing is posted to GitHub.

To narrow a local review:

reviewer pr-tmux --wait --unstaged
reviewer pr-tmux --wait --last-commit
reviewer local-tmux --wait --base main

The bundled Codex plugin exposes the same flow as $local-review.

To start a review without spending a Codex turn on the plugin, add a tmux binding that opens Critter in its own window. The binding captures the originating pane before opening the review so Critter knows which Codex chat should receive the result. When you submit, the review window closes and the complete feedback is pasted into that chat and sent. Quitting without submitting leaves the Codex chat untouched.

# Review unstaged tracked changes with prefix + h.
bind-key h set-environment -gF REVIEWER_CODEX_PANE '#{pane_id}' \; \
  new-window -n reviewer -c '#{pane_current_path}' \
  '~/.cargo/bin/reviewer codex-tmux --target-pane "$REVIEWER_CODEX_PANE" --unstaged-or-pr'

--unstaged-or-pr reviews unstaged tracked changes when there are any and falls back to the current branch pull request when the working tree is clean. Use reviewer codex-tmux --last-commit for the last commit, or omit the scope flag to always review the current branch pull request.

⌨️ Keys

KeyAction
j / kMove between files, change blocks, or lines
h / lPrevious / next file
EnterOpen or comment
Alt+EnterInsert a newline in a comment
VSelect individual lines
/Search changed lines
n / NNext / previous search result
vMark file viewed
oOpen the current line in $EDITOR
cView pending comments
PSubmit or hand off the review
bOpen review intelligence
<Space>lToggle the file sidebar
:Open the command palette
EscGo back
qQuit

🧠 More

Critter can also run a deeper background review through pi:

reviewer peer-review -R owner/repo 42
reviewer peer-review-status -R owner/repo 42

It never starts an AI review automatically. Results are cached locally and appear inside the TUI.

Run reviewer --help for every command and reviewer --version for the installed version.

gh-dash

Add Critter as a gh-dash keybinding:

- key: R
  name: review
  command: reviewer {{.PrNumber}}

Contributors

andyhmltn

9 commits

Languages

Rust

99.7%