░▒▓ ─────────────────────────────────────────────────────────────── ► ▓▒░
88 ,ad8888ba, 88
"" ,d d8"' `"8b 88
88 d8' 88
,adPPYb,d8 88 MM88MMM 88 8b d8 ,adPPYba, 88 ,adPPYba,
a8" `Y88 88 88 88 `8b d8' a8" "" 88 a8P_____88
8b 88 88 88 Y8, `8b d8' 8b 88 8PP"""""""
"8a, ,d88 88 88, Y8a. .a8P `8b,d8' "8a, ,aa 88 "8b, ,aa
`"YbbdP"Y8 88 "Y888 `"Y8888Y"' Y88' `"Ybbd8"' 88 `"Ybbd8"'
aa, ,88 d8'
"Y8bbdP" d8'
░▒▓ ◄ ───────────── end of line · ride the grid ─────────────────── ▓▒░
A terminal UI for exploring the git repository you're standing in and the GitHub organization it belongs to. Built with Ratatui, shells out to git and gh for data.
Dashboard tab — your GitHub at a glance (works regardless of cwd; no git repo required)
- Awaiting your review — PRs in your active org where you're a requested reviewer
- Your open PRs — PRs you've authored across all orgs you have access to
- Notifications — your GitHub inbox (
gh api /notifications), with unread indicators and reason tags (review_requested / mention / assign / ci_activity / …) - Your recent commits — commits authored by you across all repos, newest first
The Dashboard scopes "awaiting your review" to the org detected from your current repo. If you're not in a repo, it falls back to your primary GitHub org from gh api /user/orgs.
Repo tab — current repository overview (only meaningful inside a git repo)
- Branch, upstream, ahead/behind, last fetch
- Dirty files list — each modified/added/deleted/untracked path with a color-coded status code (
M/A/D/??/R) - Recent commits (focus with
c, pressEnterfor a full commit detail: author, message, file-by-file stats) - Open pull requests in the current repo
When gitcycle is launched outside a git repo, this tab shows a friendly placeholder.
Pressing Enter on a focused commit opens a detail screen showing the commit metadata, full message, and per-file change stats:
Org tab — organization-wide views (org auto-detected from origin remote)
- Activity sub-view: recent PRs and issues grouped by author
- Repos sub-view: searchable list of all non-archived org repos, sorted by most recently pushed. Press
Enteron a repo to drill in and see top contributors, recent commits, and recent PRs for that specific repo. - Users sub-view: searchable list of org members. Press
Enteron a user to drill in and see their recent activity across the org — commits authored, PRs submitted, and PRs they reviewed.
Org data (activity, repos, and member list) is prefetched in the background on startup, so switching tabs is instant.
You need three things on your machine:
-
Rust toolchain — install via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
GitHub CLI (
gh) — install via Homebrew (macOS),apt, or follow cli.github.com:brew install gh
-
Authenticated
gh— log in once:gh auth login
You can be logged into multiple accounts and switch with
gh auth switch. Make sure the active account has access to the repositories/orgs you want to view.
cargo install gitcycleThis downloads the latest release from crates.io/crates/gitcycle, builds it in release mode, and drops the binary at ~/.cargo/bin/gitcycle.
If you want to track master or hack on the code:
git clone https://github.com/wjgilmore/gitcycle.git
cd gitcycle
cargo install --path .If ~/.cargo/bin isn't on your PATH, add it to your shell config:
# bash / zsh
export PATH="$HOME/.cargo/bin:$PATH"Then open a new terminal (or source your config) and verify the binary is on your PATH:
which gitcyclecd into any git repository whose origin remote points to GitHub, then run:
gitcycleGlobal
| Key | Action |
|---|---|
q |
quit |
r |
reload all data |
1 / 2 / 3 |
jump to Dashboard / Repo / Org tab |
Tab, ←/→ |
cycle tabs |
Esc |
back / close detail / unfocus panel |
Dashboard tab
| Key | Action |
|---|---|
v |
focus the "awaiting your review" panel |
p |
focus the "your open PRs" panel |
n |
focus the "notifications" panel |
c |
focus the "your recent commits" panel |
s |
open the GitHub-account switcher (centered modal listing your gh auth accounts; ↑/↓ to pick, Enter to switch + reload, Esc to cancel) |
↑/↓, j/k, PgUp/PgDn, g/G |
move selection within the focused panel |
Enter |
open detail for the selected item (PR description, commit diff, or notification summary) |
o |
open the selected row (or current detail screen) in your browser |
Repo tab
| Key | Action |
|---|---|
c |
focus the recent-commits panel |
d |
focus the dirty-files panel |
↑/↓, j/k, PgUp/PgDn, g/G |
move selection within the focused panel |
Enter (commits) |
open commit detail |
Enter (dirty files) |
view diff for the selected file (replaces commits + PRs on the right) |
Esc (in diff view) |
close diff and return to commits + PRs |
Org tab
| Key | Action |
|---|---|
[ / ] |
cycle sub-view (Activity ↔ Repos ↔ Users) |
↑/↓, j/k, PgUp/PgDn, g/G |
scroll / move selection |
Org → Repos sub-view
| Key | Action |
|---|---|
/ |
start typing to filter the repo list |
Enter (in filter mode) |
confirm filter |
Esc (in filter mode) |
clear filter |
Enter (on a repo) |
open repo detail |
Org → Users sub-view
| Key | Action |
|---|---|
/ |
start typing to filter the user list |
Enter (in filter mode) |
confirm filter |
Esc (in filter mode) |
clear filter |
Enter (on a user) |
open user detail (commits, submitted PRs, reviewed PRs) |
error: gh ... failed: HTTP 502— transient GitHub API hiccup. Pressrto retry; calls already retry up to 3× internally with backoff.could not resolve to a Repository— the activeghaccount doesn't have access. Rungh auth statusto check, andgh auth switchif you have multiple accounts.- Org tab shows "loading…" forever — the background fetch failed silently. Press
rto retry, or run the underlying command manually to see the error:gh search prs --owner <ORG>/gh repo list <ORG>.
See CHANGELOG.md for the version history. Released versions are tagged in git as vX.Y.Z and published to crates.io/crates/gitcycle.
MIT — see LICENSE.md.


