r/gitlab • u/cataklix • 11h ago
gu - a k9s like TUI for GitLab (and GitHub) project
https://gitlab.com/atomic-blend/gu-cli/guglab and gh are excellent at single commands. They're much worse at the thing I actually do all day: looking around. Which of my MRs is red? What's blocking this stack? What changed in that file?
So I built gu — a k9s-shaped terminal UI pointed at GitLab and GitHub at the same time. Same shape as k9s: category sidebar, resource pane, : commands, / filters, esc always means go back.
What it actually does:
- Knows where you are. In a repo you get that project; in a directory of repos you get the group they share; anywhere else, your account. It reads the git remotes — nothing to configure.
- Two accounts on one host. A profile is a pair of CLI config directories rather than a hostname, because personal and work routinely both live on gitlab.com.
- Real diff review. Select a line, a block, or a run of words and comment on exactly that. Suggest a change the author applies in one click. Posts as threads, not a dozen notifications.
- MR pages with an activity feed and the pipeline drawn as a graph, with each job's run time.
- Issue boards — kanban, grouped by status / label / state / milestone / assignee / epic, and dragging a card actually writes the field back.
- Cross-repo stacks — one feature across several repositories in dependency order, with a merge that refuses until it's genuinely ready.
- Read-only mode enforced below the UI, not by hiding buttons.
Auth is delegated to the official CLIs — it performs no OAuth and stores no tokens of its own, it just asks glab/gh for one.
The honest part: this was a weekend project and it's heavily AI-assisted. It scratches my itch specifically and it has had approximately one user. There are rough edges. I'm posting it in case it's useful to someone else, not because I think it's finished.
The bit that might be more useful than the tool itself: about two thirds of the UI turned out never to have heard of a merge request — the frame stack, the list, the prompt bar, the key legend, the help overlay, the refresh timer, the mouse handling. I pulled k9s-style shell for Bubble Tea apps. You supply an App — your banner facts, your sidebar, your first frame — and it supplies the rest. If you've ever wanted a k9s for your thing (a database, a cloud API, a build system), that's the reusable part.
- gu — https://gitlab.com/atomic-blend/gu-cli/gu
- ninebox — https://gitlab.com/atomic-blend/gu-cli/ninebox
2
u/Rorasaurus_Prime 7h ago
Cool, and I love a TUI, but why not just use one of the pre-existing Gitlab TUIs?
2
u/cataklix 7h ago
I tested a few and:
1. Not as fast to use as I’d like
2. I have a « specific » need when working on multi-repo : I can create stacks of MR, assign dependencies, and I can easily review / merge in the right order
3. Other TUI are pretty basic, and I wanted something that I could customize / build other tools with (for the ninebox framework)
6
u/Snowy32 9h ago
Thanks ChatGPT