● MIT licensed · written in Rust

Stop alt-tabbing to GitHub

Quinjet is a fast, live, keyboard-first Git interface for the terminal. Stage files, read syntax-highlighted diffs, and open any pull request with its full conversation, reviews and live GitHub Actions logs.

$brew install pulkitxm/tap/quinjet
Star on GitHub

Also on apt, Winget, cargo and a one-line script. All install options ↓

The Quinjet Changes view: staged, unstaged and untracked file groups on the left, a side-by-side syntax-highlighted TypeScript diff on the right
The Changes view. VS Code's source-control grouping, a side-by-side diff with syntax highlighting, and per-file stage actions you can click or type.

The part nothing else does

The whole pull request, including the CI that failed

Press 3, type a PR number, press Enter. You get the description, every comment and review thread with its inline replies, every pushed commit and force push, and every check run. Select a check and its steps fold open to the log lines that step produced, tailing while the job is still running.

The Quinjet Pull Requests view: 72 GitHub Actions check runs listed on the left, an expanded check run log on the right
A real pull request on this repository: all 72 check runs on the left, one job's steps folded open on the right with the log each step produced and how long it took. No startup prefetch and no repository-wide listing; a lookup is the first time Quinjet talks to GitHub at all.

Why it feels different

Nothing waits on Git

  • Rendering and key handling never invoke Git. Background work is coalesced into fixed mailboxes, so a slow fetch can never make the interface stutter.
  • Index-first, lazily patched. Quinjet enumerates paths and renders stable headers immediately, then loads only the file you are looking at.
  • Caches keyed by identity. A finished job's log and a file's patch are keyed by the commits that describe them, so they can never go stale and never need invalidating.
  • Every button has a verb. Anything the interface can do, the CLI can do: quinjet pr checks 12 --watch blocks until CI settles, and --json works everywhere.
  • Destructive things ask first. Cherry-pick and revert preview what they would do and change nothing until --yes.
  • Bounded by construction. Capped subprocess pipes, a 128 MiB cache ceiling, virtualized file trees, and no shell-concatenated Git commands.

Everything else

Built for people who live in a terminal

Diffs

Unified or side by side

Draggable panes, compact hunks by default, full file context on t. Syntax highlighting for Rust, TypeScript, Python, Go and hundreds more.

Staging

Click it or type it

Visible per-file and per-group stage actions, multi-file checkboxes, and revert or remove behind a confirmation every time.

History

One branch at a time

Paginated history scoped to the branch you chose, with a view-only picker that never checks anything out.

Themes

Twelve palettes, light and dark

Catppuccin, Dracula, Gruvbox, Nord, Rosé Pine, Tokyo Night and more, each following your system appearance at startup.

Stashes

Named, partial, previewable

Staged-only, untracked-inclusive, preview, apply, pop, drop and clear, from a manager or the command palette.

Mouse

Scroll, click and drag

Natural wheel scrolling in whichever pane is under the pointer, draggable dividers, and m to hand the mouse back to your terminal.

Install

Pick your package manager

Git is required at runtime. A true-color terminal and a current Nerd Font are recommended. The Pull Requests view also needs the GitHub CLI with an authenticated account.

Homebrew

$ brew install pulkitxm/tap/quinjet

Script

$ curl -LsSf https://quinjet.pulkit.page/install.sh | sh

Winget

> winget install --id Pulkitxm.Quinjet --exact

Cargo

$ cargo install quinjet

apt (Debian / Ubuntu)

$ curl -fsSL https://quinjet.pulkit.page/apt/quinjet.asc \
    | sudo tee /etc/apt/keyrings/quinjet.asc >/dev/null
$ echo "deb [signed-by=/etc/apt/keyrings/quinjet.asc] \
    https://quinjet.pulkit.page/apt stable main" \
    | sudo tee /etc/apt/sources.list.d/quinjet.list
$ sudo apt update && sudo apt install quinjet

Then

$ cd any/git/repository
$ quinjet

or the shortcut it installs
$ q