# ivar vs git worktree scripts (gwq, gtr)
> gwq and gtr manage git worktrees per repository; ivar coordinates real worktrees across repos on one branch. As of 2026-10-06.
Source: https://ivar.run/compare/ivar-vs-git-worktree-scripts

gwq and gtr make worktrees fast inside one repository. `ivar` uses the same git worktrees, then coordinates them across repositories: one feature branch, one view directory, and writes guarded to the repos you promote (kernel-enforced on Linux; see [Limitations](/docs/reference/limitations)).

## At a glance

Claims about gwq and gtr are as of 2026-10-06 and come from the sources at the bottom.

| | gwq | gtr | `ivar` |
|---|---|---|---|
| What it manages | worktrees, like `ghq`; `-g` covers worktrees of all repos | worktrees, each repo independent ("Repository-scoped") | a feature across repos |
| Language, license | Go, Apache-2.0 | Bash, Apache-2.0 | Rust, Apache-2.0 |
| Agent workflow | parallel agents, tmux, per-repo setup | PR-to-worktree with `git gtr pr 123` (needs `gh`) | session per feature in Claude Code, OpenCode or OMP |
| Common branch across repos | not documented | not documented | the same branch name in every promoted repo |
| Pull request creation | not documented | `git gtr pr` starts from an existing PR; it does not create one | one per promoted repo, at deliver, via `gh`, on GitHub |

## What a worktree manager does well

gwq lists, opens, removes and shows the status of worktrees across all your repos with `-g`, and its README covers parallel agents, tmux and setup per repo. gtr keeps each repo's worktrees independent, creates a worktree from an existing PR with `git gtr pr 123`, and cleans up worktrees of closed PRs with `git gtr clean`.

## What changes with three repos

gwq's `-g` lists and navigates worktrees across repos and has per-repo setup. gtr is repository-scoped. A shared branch across repos and pull request creation are not documented for either. `ivar` makes those a feature.

## What `ivar` adds on top

- A versioned hall: `ivar sync` brings a fresh checkout in line with `ivar.json`.
- A feature: one branch name across the repos you promote.
- Promote: repos you have not promoted are guarded (kernel-enforced on Linux; see [Limitations](/docs/reference/limitations)).
- A setup script per repo, harness config, and a plan with approval gates.
- Deliver: one pull request per repo, via `gh`, on GitHub.

## When a script is enough

One repo, one developer, no agent. A worktree manager is lighter than a hall and does that job well.

## Migrating

`ivar` does not hide the worktrees. They are real git worktrees, and `git worktree list` keeps working.

## Using them together

Using them together is not documented for gwq or gtr.

## FAQ

### Does gwq or gtr create a pull request?

Not documented for gwq. gtr creates a worktree from an existing PR and does not create the PR.

### Does `ivar` replace git worktree?

No. It creates ordinary git worktrees and coordinates them across repos.

### Are the worktrees in `ivar` real?

Yes. Each repo is a bare clone with one worktree per branch under `.ivar/repos/<repo>/`.

Back to [all comparisons](/compare), or see [ivar with Claude Code](/docs/with/claude-code) for a harness walkthrough.

## Sources

- [gwq](https://github.com/d-kuro/gwq), v0.1.2, accessed 2026-10-06.
- [git-worktree-runner (gtr)](https://github.com/coderabbitai/git-worktree-runner), v2.11.1, accessed 2026-10-06.
