deniz.in

Markets

Weather

Loading weather

· via dev.to (home feed)

gitsmith unifies GitLab and GitHub review and CI workflows in one terminal UI

An open-source Rust terminal UI called gitsmith wraps the glab and gh CLIs to put issues, MR/PR review, diffs and live CI logs for GitLab and GitHub on a single keyboard-driven screen.

gitsmith unifies GitLab and GitHub review and CI workflows in one terminal UI

A new open-source project called gitsmith aims to collapse the daily routine of checking merge requests, reading diffs and watching CI pipelines into a single terminal screen, regardless of whether a repository lives on GitLab or GitHub. According to a post on dev.to by the tool's author, gitsmith wraps the official glab and gh command-line clients rather than talking to the forges' APIs with its own credentials.

One interface over two forges

Run gitsmith inside a git repository and it inspects the remote to decide whether glab or gh should handle the session, the post explains. Launched outside a repository, it asks which forge to use, lists your projects and drops you in. The main view is organised into eleven tabs covering Issues, MRs/PRs, Pipelines, Runners, Releases, Tags, Branches, Commits, Todos, Milestones and Members. The tab bar can be reordered and individual tabs hidden.

State is handled too: closed issues appear beneath open ones, so an item can be reopened without opening a browser, and protected branches are grouped above the rest.

Diff viewing and pipeline drill-down

The author says the side-by-side diff viewer received the most development attention. Built on syntect, it renders syntax-highlighted comparisons with line numbers, a file header that stays pinned, and a file list that tracks your scrolling. Pressing v on a merge request, or Enter on a commit, opens the viewer, and bracket keys hop between files.

Pipelines get their own hierarchy. Enter a pipeline to list its jobs; enter a job to get a log view that follows the newest output. Severity is colourised, with ERROR lines in red and WARN lines in yellow, timestamps dimmed, and the CI system's own ANSI colours passed through unchanged. Bridge jobs lead directly into the downstream pipelines they trigger.

Write actions, with confirmations

gitsmith is not read-only. The post lists the ability to approve, merge and close merge and pull requests; close, reopen and comment on issues, with comment bodies composed in $EDITOR; retry or cancel pipelines and individual jobs; create new MRs/PRs, issues, pipelines and tags; and add members through a role picker. Every destructive action sits behind a yes/no confirmation prompt.

No new credentials to manage

Because the tool shells out to glab and gh, it inherits whatever authentication those CLIs already have, so there are no tokens or OAuth flows to configure. To discover configured hosts, gitsmith reads glab's config.yml and gh's hosts.yml, checking $GLAB_CONFIG_DIR, $XDG_CONFIG_HOME, ~/.config and platform-specific locations. The author stresses that only host names are read and the tokens in those files are never touched. A keypress switches between GitLab and GitHub, or between self-hosted instances, without a restart, and another keypress triggers a fuzzy search across your repositories on the current host.

Implementation and installation

gitsmith is written in Rust, roughly 10,500 lines across a small number of focused modules, with the UI built on ratatui and syntax highlighting handled by syntect using its pure-Rust regex backend, which means cargo install needs no C toolchain. Lists fetch 100 rows per page and keep pulling data in the background up to 500 rows, working around the 20 to 30 row limits of default API responses. Nine built-in themes, from Gruvbox and Dracula to Tokyo Night and Everforest, can be browsed with a live preview.

Installation options include a curl-driven shell script that downloads a prebuilt binary for macOS or Linux, with a specific version pinnable (the README's example uses v0.2.2), or the standard cargo install gitsmith --locked route, or building from source. The prerequisites are simply an authenticated glab for GitLab work and/or an authenticated gh for GitHub work. The project is MIT-licensed and the author invites contributions, bug reports and feature ideas.

Why it matters

Many developers straddle both forges, and even those loyal to one spend the day hopping between a web UI, a CLI and an editor, with each switch costing context. By reusing the authentication and API access of glab and gh instead of building its own integration layer, gitsmith keeps setup cost close to zero while offering the diff reading and live log tailing that usually pull you into a browser. For CI-heavy teams, keeping job logs in the same terminal as the code being fixed is the quiet win. As a young single-author project it will need community traction to mature, but the scope — review, issues and pipelines in one keyboard-first surface — targets a genuine daily pain point.

  • #open-source
  • #terminal
  • #developer-tools
  • #rust
  • #git

Related posts