A terminal interface for browsing GitHub — repos, issues, pull requests, and notifications — built with Rust, Ratatui, and the gh CLI.

Run ghx to browse your repositories. Run it inside a git repo to jump straight to that repo’s issues.

Features

  • Repository browser — browse your repos with fuzzy search/filter, configurable source (user, org, or starred)
  • Repo detail screen — description, stars, language, license, topics, and a rendered README preview
  • Issues & pull requests — tabbed view with sub-tab toggle between issues and PRs, plus fuzzy filtering via nucleo
  • PR CI status — visual check indicators inline: ✓ pass, ✗ fail, ● pending
  • Detail view — full issue/PR body rendered as markdown, with labels, metadata, and comment threads. Scrollable.
  • Notifications — dedicated tab for GitHub notifications with mark-as-read support
  • Context mode — detects the current repo via gh and skips straight to its issues
  • Open in browser — press o to open the current item on github.com
  • mdr integration — press r to read issue/PR body in the full mdr markdown reader
  • Clone repo — press c to clone the selected repo to ~/repos
  • Configurable themes — 9 built-in TOML themes with an interactive picker (t), plus user themes from ~/.config/ghx/themes/
  • Help overlay — press ? for a keybinding reference

Key Bindings

KeyAction
j / k / arrowsNavigate up/down
g / GJump to top / bottom
Ctrl-f / Ctrl-bPage down / up
EnterSelect / drill down
Esc / BackspaceGo back
Tab / Shift-TabNext / previous tab
/Search / filter
oOpen in browser
rRead body in mdr (detail view)
cClone selected repo
mMark notification as read
tTheme picker
?Help
q / Ctrl-cQuit
Home (Repos / Notifications tabs)
  → Select repo → Repo Detail (Overview / Issues / PRs tabs)
    → Select issue/PR → Detail view (body + comments)

Context mode: run ghx inside a git repo to skip the repo list and land directly on that repo’s issues.

Requirements

Architecture

Ratatui TUI with a synchronous event loop and non-blocking data loading via worker threads and mpsc channels. All GitHub data flows through gh CLI subprocess calls with JSON output — no direct API tokens or REST calls. The UI is a screen stack: each drill-down pushes a new screen, Esc pops back. Fuzzy filtering uses nucleo-matcher. Themes are TOML-based with 9 built-in themes compiled into the binary and user overrides from ~/.config/ghx/themes/.

Code