Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

gr2

gr2 is the workspace layer for multi-repo work. One repository is just git; when a change spans repositories — a feature slice, a release, several agents touching several repos — gr2 gives you a workspace over them, isolated lanes to work in, and one grouped review/PR set for the slice. It is the Python successor to the Rust gr (1.x, called gr1 below); both ship from this repository, and gr2 is the command for the workspace and the slice.

Install

uv tool install --pre gitgrip    # the PyPI package is "gitgrip"; the command is "gr2"
gr2 --version

Without uv, a venv and pip do the same:

python3 -m venv ~/gr2-venv && source ~/gr2-venv/bin/activate
pip install --pre gitgrip
gr2 --version

--pre is required while every gr2 release is an alpha: 1.5.0 and 1.5.1 were pre-alpha builds and are yanked, so without --pre there is nothing to install.

Already installed 1.5.0 or 1.5.1? The install commands above leave it in place, because an installed version already satisfies them. Upgrade explicitly: uv tool upgrade --prerelease allow gitgrip, or pip install --pre -U gitgrip. To run unreleased development code instead, install from a checkout: pip install -e gr2/ from the repository root.

The Rust gr (gr1, 1.x) installs with brew install synapt-dev/tap/gitgrip or cargo install gitgrip. The two do not collide; you can have both installed.

First five minutes

Every command below was run, in this order, in a clean virtualenv against a throwaway workspace of two repositories. Put two clones side by side in one folder, say ~/ws/repo-a and ~/ws/repo-b.

cd ~/ws
gr2 workspace init ~/ws                 # scans the folder; writes .grip/workspace_spec.toml
gr2 workspace materialize ~/ws --yes    # builds the .grip layout and a default unit
gr2 workspace status ~/ws               # what kind of workspace this is
gr2 store init ~/ws                     # the workspace snapshot store (needed before review)

A unit is one worker — you, or one agent — and default is created for you. A lane is one piece of work spanning repos, with its own clones, so two lanes never step on each other:

gr2 lane create ~/ws default feat-x --repos repo-a,repo-b --branch feat/x
gr2 lane enter  ~/ws default feat-x --actor human:you

Both commands print, per repo, the absolute directory you work in:

repo-a: ~/ws/.grip/state/lanes/default/feat-x/repos/repo-a
repo-b: ~/ws/.grip/state/lanes/default/feat-x/repos/repo-b

Edit there — not in your original clones. Stage and commit across the lane's repos:

gr2 add . --repo-path ~/ws/.grip/state/lanes/default/feat-x/repos/repo-a
gr2 commit -m "my change" --workspace-root ~/ws --owner-unit default

commit with the lane flags commits every lane repo that has staged changes and names the repos it skipped. If every repo was skipped it exits non-zero with one sentence naming where it looked — and, when it can see them, where your staged changes actually are. Run one command across every lane repo, then turn the lane into one reviewable object:

gr2 exec run ~/ws default --actor human:you -- pytest -q   # one command, every lane repo
gr2 review create-project ~/ws default feat-x              # prints gr:<sha>: one object to review
gr2 lane current ~/ws default                              # where am I?
gr2 lane exit ~/ws default --actor human:you

exec run and lane exit require --actor. Every group and verb takes --help; gr2 --help lists them all.

What works today, and what is not there yet

Alpha 2 is a working local workspace layer. Verified by running the walk above:

  • workspace (init, materialize, status, migrate-gr1 from a gr1 gripspace), lane (create, enter, exit, current, lease), store (init, snapshot, log, diff, checkout), exec run, repo status, sync status, review create-project.
  • Lanes are independent clones: two lanes, or two agents, never share refs, an index, or a working tree.
  • A lane commit that commits nothing anywhere refuses loudly instead of reporting success.

Not there yet:

  • The full walk with remote PRs (gr2 push, gr2 pr create) is documented in --help but was not exercised in a clean environment for this README; treat those two as alpha.
  • gr2 --help and some verb output still say "prototype" in places; the wording is being cleaned up as verbs land.
  • The Rust gr (gr1) still owns spawn, fleet, and manifest until their gr2 ports land. Everything else — workspace sync, lanes, the multi-repo slice, its review — is gr2's job; if a verb is missing or wrong there, that is a bug worth reporting, not a reason to reach for gr1.

Commands

Group Verbs
workspace init, init-from-topology, materialize, status, convert-clone, detect-gr1, migrate-gr1, migrate-lane-state, bootstrap-gr1
spec show, validate
lane create, enter, exit, current, resolve, bind, lease
(top level) branch, add, commit, push, prune
sync status, run
pr create, status, checks, merge
review open, close, checkout-pr, run, requirements, bind, verify, rebind, create-project
exec status, run
repo status, hooks, hook-run, projection-run
store init, snapshot, log, diff, checkout
target, config, plan, apply stored PR target; config overlays; show/apply the materialization plan

Overlay substrate

gr2 also carries the config-overlay substrate (capture, compose, and materialize configuration layers over a workspace): see docs/OVERLAY-SUBSTRATE.md.

Development

pip install -e "gr2[dev]"    # from the repository root
cd gr2 && pytest             # the gr2 suite (tests + overlay tests)
cd gr2 && ruff check .       # lint, same config as CI

Release files for gitgrip 2.0.0a4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gitgrip 2.0.0a4
File Size Uploaded
gitgrip-2.0.0a4.tar.gz 746.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gitgrip 2.0.0a4
File Interpreter ABI Platform
gitgrip-2.0.0a4-py3-none-any.whl Python 3 none any Details

Total release size: 1.1 MB

Release files / gitgrip-2.0.0a4.tar.gz

Download URL gitgrip-2.0.0a4.tar.gz
Size 746.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4ae2f5bc187daa249c46a7678b09f9d7c36990db3ce16fd106f538680cf03db6
BLAKE2b-256 checksum
How to use checksums
09804f18d17213b1dcf41b4e967e4ce7cdcf979a93259521f76b7017a6cf2eee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / gitgrip-2.0.0a4-py3-none-any.whl

Download URL gitgrip-2.0.0a4-py3-none-any.whl
Size 398.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8855d23ed9f1841f54318083d9050020b71350fcc08a90bcb0cc22bd348c77fc
BLAKE2b-256 checksum
How to use checksums
d0ed74ccba70509616a17836ff504d07a1c566db528a599a2baa8e412b324a8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.0a4 This release

2 release files

1.5.1

2 release files

1.5.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page