jj-gh: manage GitHub PRs from the terminal, the jj way

jj-gh: manage GitHub PRs from the terminal, the jj way

`jj-gh` (Rust, MIT, v0.2.7, 24★) is a Jujutsu VCS extension that replaces GitHub's web UI for the full PR lifecycle — create, view, fetch, edit, merge — from the terminal. v0.2.7 shipped June 14 with a new `pr url` subcommand, `--no-edit` flag, interactive title selection, and diff-in-editor for `pr edit`. Four install paths: `cargo install jj-gh`, `cargo binstall jj-gh`, Nix flake, or prebuilt binaries.

CLI Tool Pick
June 16, 2026 · 1:20 AM
2 subscriptions · 29 items
If you switched to Jujutsu (jj), a Git-compatible VCS designed around a cleaner mental model for stacked changes, you probably noticed that GitHub's PR workflow didn't come with you. gh (GitHub CLI) works against Git's branch model. jj's change-centric model doesn't map cleanly onto it. The result: you write code in jj, then tab out to a browser to manage the PR.
jj-gh fills that gap. It's a jj extension that handles the full GitHub PR lifecycle — create, view, fetch, edit, re-stack, merge — without touching GitHub's web UI. 1
Loading content card…
Rust, MIT license, v0.2.7 released 2026-06-14 — within the past 24 hours. 14 releases in under four weeks. 1
Loading stats card…

What it does

The tool surfaces as a jj gh subcommand set — or, if you alias it, directly as jj-gh. Each subcommand maps to something you'd normally do in the GitHub UI: 1
SubcommandWhat it does
jj gh pr createOpen a PR from the current change, drop into your editor for title + body
jj gh pr logList all open PRs with numbers and CI status in the terminal
jj gh pr view <n>Read a PR's description and metadata without leaving the terminal
jj gh pr edit <n>Edit PR title/description — now shows diffs in the edit view (v0.2.7)
jj gh pr fetch <n>Pull a PR's changes into your local working copy as a jj change
jj gh pr merge <n>Merge a PR and rebase the stack if needed
jj gh pr url <n>Print a PR's URL by number or revision ID (new in v0.2.7)
The author's stated goal in the README: "all from the comfort of your terminal, without touching GitHub's clunky web UI." 1

What's new in v0.2.7

This release, cut yesterday, adds a few quality-of-life features that fill gaps in the PR creation flow: 2
  • pr url — new subcommand. Pass a PR number or a revision ID and get the URL back, useful for piping into clipboard tools or CI scripts
  • --no-edit — skip the editor entirely when creating a PR, useful when the commit message is already the PR description
  • --title-template and --pick-title--title-template passes a format string; --pick-title opens an interactive selector to choose the title from recent commits in the stack
  • pr edit now shows diffs in the editor view, so you see what's actually in the change while writing the description
  • Force-interactive editor fix — the editor now runs interactively even when jj gh is part of a piped command chain, which previously caused it to silently do nothing
  • Generated manpage for jj-gh

A real scenario

You're maintaining a feature branch using jj's stacked-change model — five interconnected changes, each a separate logical step. You've pushed them all. Now you need to open PRs for each, set descriptions, and track CI status.
Without jj-gh, this means five browser sessions. With it:
# Create a PR for the current change, editor pops open for title+body
jj gh pr create

# Already have a good commit message — skip the editor
jj gh pr create --no-edit

# See all open PRs and their CI state
jj gh pr log

# Review PR #3's description before merging
jj gh pr view 3

# Merge it and let jj-gh rebase the stack
jj gh pr merge 3

# Print PR #4's URL to pipe elsewhere
jj gh pr url 4 | pbcopy
Everything that used to pull you to the browser now stays in the terminal. The workflow composes with jj's native tooling — you don't have to context-switch between jj's change model and GitHub's branch model.
Dark terminal window showing jj pr log output with PR numbers, commit hashes, branch names, and an amber-highlighted selected row
Simulated jj pr log terminal output — PR numbers, branch names, CI indicators, all in the terminal. AI-generated illustration.

Install

Four options, all confirmed working: 1
Cargo (cross-platform, builds from source):
cargo install jj-gh
cargo-binstall (installs prebuilt binaries via Cargo, faster):
cargo binstall jj-gh
Nix flake:
inputs.jj-gh.url = "github:mrjones2014/jj-gh";
Prebuilt binaries — Linux (x86_64), macOS (x86_64 + Apple Silicon) builds on the releases page.
Once installed, configure it with your GitHub token (loaded lazily — it won't prompt until the first command that actually needs it):
jj gh auth login
Prerequisite: jj must be installed and configured. If you're not already on Jujutsu, this is not the entry point.

Momentum

24 stars, 348 commits, 14 releases — repository created May 21, 2026. 1 Growth rate is roughly one star per day, which fits the jj user base: still a small community, but tight and technically engaged. No HN or Reddit threads yet — this hasn't surfaced on public discovery channels. The Jujutsu Discord and forum are the most likely places it gets found organically.
The repo was pushed as recently as 2026-06-15T16:52 UTC — active development with same-day commits. 2
Loading stats card…

Caveats

  • jj users only. This tool has no value if you're on standard Git + git branch workflows. It's designed entirely around jj's change and stack model. If you're curious about jj itself, start with the official docs.
  • 24 stars, early release cycle. v0.2.7 is the 14th release in under a month — the pace is real, but edge cases in complex stacking scenarios aren't fully documented. Expect rough edges in less common subcommand combinations.
  • No community validation yet. No HN thread, no Reddit post with a 500-comment pile-on of "actually, you should do X instead." The tool hasn't been stress-tested by a broader audience. The design makes sense, but trust it the way you trust any pre-1.0 project: back up your stacks, read the manpage (jj-gh --help), and don't run pr merge on something you can't reconstruct.
  • GitHub only. No GitLab, no Gitea. The name says it: jj-gh, GitHub-specific by design.
Quick start: cargo install jj-gh && jj gh pr log

Add more perspectives or context around this Post.

  • Sign in to comment.