A desktop app for monitoring GitHub Pull Requests, CI status, and repository health across multiple repositories and organizations. Built with Rust and iced.
Features
- PR Dashboard — View open PRs across repos and entire organizations in one place
- CI Status — See pass/fail/running status per PR with links to check details
- Security & Quality — Monitor code scanning and Dependabot alerts per repo
- Filters — Show all PRs, only yours, PRs you're reviewing, or PRs by a specific user
- Search — Filter PRs by title, author, repo, number, or label
- Sorting — Click column headers to sort by repo, number, title, author, CI status, age, or size
- Double-click to open — Double-click any PR to open it in the browser
- Auto-refresh — Automatic polling with configurable interval
- Incremental loading — PRs appear as each repo responds, no waiting for all to finish
- OAuth login — Authenticate via GitHub's Device Flow (like
gh auth login) - Organization support — Monitor all repos in a GitHub organization
- Cross-platform — Runs on macOS, Windows, and Linux
Installation
Homebrew (macOS)
Or install as a macOS app (.dmg with Dock icon):
Download
Pre-built binaries are available on the Releases page:
| Platform | Format |
|---|---|
| macOS (universal) | .dmg |
| macOS (x86_64 / aarch64) | .tar.gz |
| Linux (x86_64) | .tar.gz, .deb |
| Windows (x86_64) | .zip, .msi |
From source
# Clone
# Build and run
macOS .app bundle
This builds a proper Gituqueiro.app with the icon in the Dock.
Requirements (building from source)
- Rust 1.75+
- System dependencies:
- Linux:
libwayland-dev libxkbcommon-dev - macOS / Windows: none
- Linux:
Getting Started
1. Authenticate with GitHub
Open the app and click the Settings tab (top-right).
You have two options:
Option A: Personal Access Token
- Go to github.com/settings/tokens and create a token with these scopes:
repo(full access to private repos)read:org(read org membership)
- Paste the token in the GitHub Token field
- Click Save & Connect
Option B: OAuth Device Flow
- Create a GitHub OAuth App:
- Go to GitHub > Settings > Developer settings > OAuth Apps > New OAuth App
- Set the callback URL to
http://localhost(not used) - After creation, go to the app settings and enable Device Flow
- Copy the Client ID and paste it in the OAuth App Client ID field
- Click Login with GitHub
- A code will appear (e.g.
WDJB-MJHT) and your browser will open to GitHub - Enter the code in the browser and authorize
- The app will automatically detect the authorization and connect
Tip: You can also set the
GITHUB_TOKENenvironment variable and the app will use it automatically on startup.
2. Add Repositories
In the Settings tab, scroll to Monitored Sources:
- Individual repos: Type
owner/repo(e.g.torvalds/linux) and click + Add - Organizations: Type the org name (e.g.
my-org) and click + Add to monitor all repos in that organization. Archived and disabled repos are automatically excluded.
3. Monitor PRs
Switch to the Pull Requests tab. PRs load incrementally as each repo responds.
- Use the sidebar filters to narrow down:
- All PRs — everything across all repos
- My PRs — PRs you authored
- Review Requested — PRs where you're a reviewer
- By User — PRs by a specific GitHub username
- Use the search box to filter by title, author, repo, number, or label
- Click column headers to sort (click again to reverse)
- Double-click a PR to open it in the browser
- Click the CI status (OK/X/~) to open the checks page
PR indicators
| Indicator | Meaning |
|---|---|
OK |
All CI checks passed |
X |
One or more checks failed |
~ |
Checks are running or pending |
? |
No CI checks found |
[DRAFT] |
Draft PR |
| Age color: green | Less than 7 days old |
| Age color: yellow | 7-30 days old |
| Age color: red | Over 30 days (stale) |
| Size: XS/S/M/L/XL | Based on lines changed |
4. Security & Quality
Switch to the Security & Quality tab to see per-repo health:
- Code scanning alerts (with severity)
- Dependabot alerts (with severity)
- Open and stale PR counts
- Click alert links to view details on GitHub
5. Connection Status
The bottom-left of the sidebar shows your connection status:
- Green dot + username: connected
- Yellow dot: authenticating
- Red dot: not connected
Double-click the connection status to jump to Settings.
Development
# Run with hot-reload (debug mode)
# Run all checks (format + lint + test)
# Run tests
# Format code
# Lint
# Generate icons from SVG
# Build macOS .app
Project Structure
src/
main.rs # Entry point, window icon setup
app.rs # Iced UI: sidebar, tabs, settings, PR list, health dashboard
config.rs # Persistent config (~/.config/gituqueiro/config.json)
lib.rs # Library exports
github/
mod.rs
types.rs # GitHub API + app data types
client.rs # GitHub API client, incremental fetch
oauth.rs # OAuth Device Flow
tests/
integration_tests.rs # Wiremock-based integration tests
icons/
icon.svg # Vector source
icon.icns # macOS
icon.ico # Windows
icon.png # 1024x1024
icon-*.png # All sizes
scripts/
build-icons.sh # SVG -> PNG/ICO/ICNS
build-app.sh # macOS .app bundle
License
MIT