Terminal app on Homebrew

prtop

Life cycle
2026 2026 · v0.1 release active development
Built with
Python GitLab CLI GitHub CLI

I wanted my merge requests where I already work, in a terminal, and Claude Code to be woken when one of them needs me.

Readme TomyCesaille/prtop

htop for your merge requests. Your GitLab MRs and GitHub PRs, from review to production, live in your terminal. Built to wake Claude Code.

Python license CI

prtop in a terminal: a countdown to the next fetch, then the merge requests that changed, highlighted

Website | Claude Code setup

Install with Claude Code, for Claude Code

Paste this into Claude Code:

Set up prtop for me: follow https://raw.githubusercontent.com/TomyCesaille/prtop/main/examples/claude-code/SETUP.md

Claude installs prtop for you and for itself. It checks your GitLab or GitHub sign-in and fits the settings to your projects, then sets itself up to use prtop: a /prs command, and watching your merge requests in the background while it works. It asks you at each step.

Install manually

brew install TomyCesaille/tap/prtop    # macOS, Linux
choco install prtop                    # Windows

Both install glab and gh alongside prtop. Elsewhere, with Python 3.14 or later: uv tool install git+https://github.com/TomyCesaille/prtop, plus glab, gh or both.

prtop reads GitLab through glab and GitHub through gh, signed in as you. Sign in to the ones you use:

glab auth login --hostname gitlab.example.com
gh auth login

Then tell prtop what to read, in ~/.config/prtop/.env (%APPDATA%\prtop\.env on Windows):

# gitlab (the default), github, or gitlab,github for both
PRTOP_FORGES=gitlab,github
PRTOP_GITLAB_HOST=gitlab.example.com

On Windows, run prtop in Windows Terminal, the default terminal on Windows 11: the older console shows the emoji as boxes and cannot open links.

Use

prtop

In a terminal, prtop takes the screen and fetches again every 30 seconds. The top line names the forges it reads, the time of the last fetch and the countdown to the next one; the bottom line lists the keys. On macOS and Linux it keeps the mouse the way htop does: the wheel does not scroll the terminal’s history, and selecting text takes Option in iTerm2, Shift in most other terminals.

KeyDoes
q, F10, Ctrl+Cquit
h, ?, F1show or hide the help: prtop’s version, the keys and what the marks mean
Ctrl+Lfetch now
Zpause or resume fetching
OptionDoes
-d SECONDSseconds between fetches (default 30)
-n Nstop after N fetches and leave the last table in the terminal; prtop -n 1 prints one table
--demoshow made-up merge requests, without reading any forge

When its output is not a terminal (a pipe, a file, a script, an AI agent), prtop prints the table once and exits. Errors go to stderr, so the output stays one table.

Several prtops running at once share their fetches: one about to fetch less than 10 seconds after another fetched, with the same settings, shows that fetch instead of calling GitLab or GitHub again.

How to read prtop

prtop's live view, annotated. 1, the mark says whose move it is: ! on you (mergeable, rebase, conflicts, own threads, failed pipeline, prod trigger), ? to look at (changes requested, open threads, unknown status), ~ someone else (awaiting review, draft, blocked), . running (CI, merge check, deploying). 2, links open the merge request, its task and the prod trigger. 3, highlighted rows changed at the last fetch. 4, open merge requests, sorted by mark. 5, merged ones, until production runs them.