K9s-inspired TUI for managing multiple git and jj repositories with GitHub PR integration.
As a GitHub CLI extension:
gh extension install kyleking/gh-repo-dashboardOr build from source:
go build -o gh-repo-dashboard .# Scan default directory (~/Developer)
gh repo-dashboard
# Scan specific directories
gh repo-dashboard ~/projects ~/work
# Limit scan depth
gh repo-dashboard -depth 2 ~/Developer- Git: Full support for git repositories
- Jujutsu (jj): Full support for jj repositories (both colocated and non-colocated)
The dashboard automatically detects the VCS type and uses appropriate operations. Colocated repositories (having both .git and .jj) are treated as jj repositories.
Requirements:
- Go 1.23+ (for building)
- git CLI (if managing git repos)
- jj CLI (if managing jj repos)
- gh CLI (GitHub CLI) - optional, for PR features with both git and jj repos
| Key | Action |
|---|---|
j / down |
Move down |
k / up |
Move up |
g |
Go to top |
G |
Go to bottom |
enter / space |
Select / drill down |
esc / backspace |
Go back |
q |
Quit |
| Key | Action |
|---|---|
? |
Help |
/ |
Search |
f |
Filter modal |
s |
Sort modal |
R |
Reverse sort |
r |
Refresh |
| Key | Action |
|---|---|
tab |
Next tab |
h / left |
Previous tab |
l / right |
Next tab |
| Key | Action |
|---|---|
o |
Open PR in browser |
c |
Copy (branch/PR/path) |
| Key | Action |
|---|---|
F |
Fetch all (filtered repos) |
P |
Prune remote branches (filtered repos, git only) |
C |
Cleanup merged branches (filtered repos) |
+N- N staged changes*N- N unstaged changes?N- N untracked files!N- N conflicted files$N- N stashed changesWN- N worktrees/workspaces
^N- N commits ahead of tracking branchvN- N commits behind tracking branch
oN- N successful workflow runsxN- N failed workflow runs-N- N skipped workflow runs~N- N pending/in-progress workflow runs
- Multi-VCS Support: Works with both git and jj repositories
- Progressive Loading: Data loads concurrently as it becomes available
- TTL Caching: Intelligent caching for PR information, workflow status, and VCS operations
- GitHub Integration: Pull request info, status checks, and workflow runs via gh CLI
- Multi-Filter Support: Combine multiple filters with AND logic
- Filter Modes: all, dirty, ahead, behind, has_pr, has_stash
- Sort Modes: name, modified, status, branch (all reversible)
- Fuzzy Search: Real-time search with similarity matching
- Batch Operations: Fetch, prune, and cleanup across filtered repositories
- Worktree Detection: Git worktrees and jj workspaces
- Stash Tracking: Git stash monitoring (jj doesn't use stashes)
- Branch Details: View branches, PRs, commits, workflow runs, and modified files
- Vim-Style Keybindings: Familiar navigation patterns
- Help Modal: Complete keybinding reference
- Catppuccin Theme: Dark theme with minimal color usage
Perform maintenance tasks across multiple repositories simultaneously:
Updates remote refs for all filtered repositories.
- Git:
git fetch --all --prune - JJ:
jj git fetch --all-remotes
Cleans up stale remote branch references.
- Git:
git remote prune origin - JJ: No-op (jj handles this automatically during fetch)
Deletes local branches/bookmarks that have been merged into main/master.
- Git: Deletes local branches merged into main
- JJ: Deletes bookmarks that are ancestors of main
Usage:
- Apply filters to select repositories (e.g., filter by "dirty" or search for specific repos)
- Press
F,P, orCto run the batch operation - View real-time progress and results in the modal
- Operations run sequentially across all filtered repositories
Safety:
- Batch operations only work in the repository list view
- Only operate on currently filtered/visible repositories
- Each operation shows success/failure status with detailed messages
- Failed operations don't stop the batch (continues to next repo)
# Run all tests
go test ./...
# Run with verbose output
go test -v ./...
# Run specific package
go test -v ./internal/filters/...
# Run with coverage
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
# Run with race detector
go test -race ./...Generate demo GIF using VHS:
vhs < .github/assets/demo.tapeSee CONTRIBUTING.md for more details on VHS setup and recording.
Git-Scope - Similar tool built with Bubble Tea.
| Feature | repo-dashboard | Git-Scope |
|---|---|---|
| VCS Support | Git + Jujutsu (jj) | Git only |
| GitHub Integration | PR details, checks, status via gh CLI | Contribution graphs |
| Filtering | 6 modes (dirty, ahead, behind, has_pr, has_stash, all) | Dirty filter + pagination |
| Batch Operations | Fetch all, prune remote, cleanup merged branches | None |
| Search | Fuzzy search | Fuzzy search by name/path/branch |
| Additional Features | Worktrees/workspaces, stash tracking, PR opening | Editor launch, disk usage, timeline view |
- Gita - CLI tool to manage multiple git repositories with custom groups and batch operations
- gitbatch - Manage your git repositories in one place with interactive TUI
- mgitstatus - Show uncommitted, untracked, and unpushed changes for multiple repos
- Mani - Go-based CLI with YAML configuration, built-in TUI, batch operations, and parallel command execution
- lazygit - Simple terminal UI for git commands
- GitUI - Blazing fast terminal UI for git written in Rust
- Gitu - TUI Git client inspired by Magit
MIT
