GitLab Roulette CLI
A Terminal User Interface (TUI) application for tracking GitLab maintainers' review workload and availability.
Overview
GitLab Roulette CLI provides a command-line dashboard that replicates the functionality of the GitLab Roulette web application, allowing you to view reviewer availability, workload statistics, and pick random available reviewers directly from your terminal.
Demo
Overview & Navigation
Browse people, filter by name, and view detailed profiles:

Project Selection
Switch between GitLab projects with filtering:

Role Selection
Multi-select roles with live filtering:

Features
- View reviewer availability and capacity
- Filter by project and role
- Sort by various metrics (name, assignments, local time, timezone)
- Availability filtering modes
- Work hours filter
- Roulette feature - pick random available reviewers
- View historical capacity data
- Display assignment statistics and trends
Technology Stack
Data Source
This application fetches data from publicly available static JSON files generated by the GitLab Roulette pipeline. No authentication is required.
Installation
From Source
Prerequisites: Go 1.25.6 or later
Clone and build:
git clone https://gitlab.com/ck3g/gitlab-roulette-cli.git
cd gitlab-roulette-cli
go build -o bin/gitlab-roulette
./bin/gitlab-roulette
Or install directly:
go install gitlab.com/ck3g/gitlab-roulette-cli@latest
Homebrew
Coming soon.
Usage
Quick Start
Launch the TUI application:
gitlab-roulette
Open the web dashboard in your browser:
gitlab-roulette web
Basic Navigation
The application displays GitLab maintainers and reviewers with their availability, workload, and timezone information. Use keyboard shortcuts to filter, sort, and interact with the data.
Main Screen Layout:
- Header: Project selection and active roles
- Role Labels: Color-coded labels showing selected roles
- People Grid: Cards showing reviewers with their info
- Help Bar: Quick reference of available shortcuts
Keyboard Shortcuts
Essential Actions
| Key |
Action |
? |
Show help modal with searchable shortcuts |
q |
Quit application |
Ctrl+R |
Refresh/reload data from server |
Navigation
| Key |
Action |
Tab |
Select next person card |
Shift+Tab |
Select previous person card |
↑↓ or j/k |
Scroll through people list |
Enter |
Open person details modal |
Esc |
Close modal or clear filter |
Filtering
| Key |
Action |
/ |
Filter people by name or username |
p |
Select project |
r |
Select roles (multi-select) |
u |
Toggle unavailable folks (show/fade/hide) |
h |
Toggle work hours filter (all/9-5 local time) |
o |
Order/sort people by various criteria |
Actions
| Key |
Action |
s |
Spin the wheel - pick random available person |
Ctrl+C |
Copy username to clipboard (when card selected) |
Features Guide
Project Selection (p)
- Browse all available GitLab projects
- Press
/ to filter projects by name
- Navigate with
↑↓ or j/k
- Press
Enter to select, Esc to cancel
Role Selection (r)
- Multi-select roles (reviewer, maintainer, by specialty)
- Press
Space to toggle role selection
- Press
a to select all, n to deselect all
- Press
/ to filter roles by name
- Press
Enter to apply, Esc to cancel
Sorting Options (o)
Choose from 12 sort options:
- Name (A→Z or Z→A)
- Review Count (ascending or descending)
- Assign Events - 7 days (ascending or descending)
- Assign Events - 30 days (ascending or descending)
- Local Time (ascending or descending)
- Timezone (ascending or descending)
Availability Modes (u)
Cycle through three modes:
- Show All - Display everyone
- Fade Unavailable - Dim unavailable people
- Hide Unavailable - Filter out unavailable people
Work Hours Filter (h)
Toggle between:
- All - Show people regardless of their local time
- 9-5 - Only show people within 9am-5pm local time
Spin the Wheel (s)
Pick a random person from the currently filtered list. Great for:
- Finding available reviewers
- Load balancing review assignments
- Quick random selection
Person Detail View
When you select a card and press Enter, you'll see:
- Full name and username
- All roles with project assignments
- Departments
- Status emoji and message
- Local time with timezone offset
- Activity sparklines (7-day and 30-day trends)
- List of pending MR reviews (clickable links)
Press Ctrl+C to copy username, Enter/Esc/q to close.
Tips
- Use the help modal (
?) - It's searchable! Type to filter shortcuts by keyword
- Combine filters - Use project + roles + availability + work hours together for precise filtering
- Name filter (
/) works independently of other filters for quick searches
- Empty states provide helpful hints when no results are found
- Refresh (
Ctrl+R) updates data without restarting the app
Development
This project uses mise for managing Go versions and task automation.
Running from Source
With mise:
mise run run
Or with standard Go commands:
go run main.go
Available Tasks
mise run test # Run tests
mise run test:cover # Run tests with coverage
mise run build # Build binary
mise run lint # Run all linters
mise run lint:fix # Run linters with auto-fix
mise run fmt # Check code formatting
mise run fmt:fix # Fix code formatting
See .mise.toml for the complete list of available tasks.
License
MIT License - see LICENSE file for details.