Skip to main content

Git Worktree Workspace Orchestrator

Project description

Grove logo

Grove (gw)

grove /ɡrōv/ noun — a small group of trees growing together.

Why?

Monorepos solve cross-project work, but not everyone has one. You've got separate repos, separate CI, separate deploys — and that's fine until you need to work across them.

One feature across three services means git worktree add three times, tracking three branches, jumping between three directories, cleaning up three worktrees when you're done. It's annoying.

Grove gives you the multi-repo worktree workflow that monorepos get for free. One command, one workspace, all repos on the same branch.

Install

Homebrew (Go — recommended)

brew install nicksenap/grove/grove-go

Homebrew (Python)

brew install nicksenap/grove/grove

From source (Go)

cd go && go build -o gw . && mv gw /usr/local/bin/

From source (Python)

uv tool install .

Migrating from Python to Go

If you have the Python version installed via Homebrew, uninstall it first — both versions install a gw binary:

brew uninstall grove
brew install nicksenap/grove/grove-go

Upgrading

brew upgrade nicksenap/grove/grove-go

Then add shell integration to your .zshrc (or .bashrc):

eval "$(gw shell-init)"

This enables gw go to change your working directory and auto-cds into new workspaces after gw create.

Usage

# Setup — register one or more directories containing your repos
gw init ~/dev ~/work/microservices
gw add-dir ~/other/repos
gw remove-dir ~/old/repos
gw explore                                             # deep-scan for repos (2–3 levels)

# Workspaces
gw create my-feature -r svc-a,svc-b -b feat/login     # create workspace
gw list                                                # list workspaces
gw list -s                                             # list with git status summary
gw status my-feature                                   # git status across repos
gw sync my-feature                                     # rebase all repos onto base branch
gw go my-feature                                       # cd into workspace
gw run my-feature                                      # run dev processes (TUI)
gw add-repo my-feature -r svc-c                        # add a repo to existing workspace
gw remove-repo my-feature -r svc-a                     # remove a repo from workspace
gw rename my-feature --to new-name                     # rename a workspace
gw doctor                                              # diagnose workspace health issues
gw delete my-feature                                   # clean up (worktrees + branches)

# Presets — save repo groups for quick workspace creation
gw preset add backend -r svc-auth,svc-api,svc-worker
gw preset list
gw preset remove backend
gw create my-feature -p backend                        # use a preset instead of -r

All interactive menus support type-to-search filtering, arrow-key navigation (single-select), or arrow + tab (multi-select) with an (all) shortcut.

Documentation

Go rewrite

Grove is being rewritten in Go. The Python version works but has real distribution pain — Python version conflicts, pipx/uv packaging quirks, and slow startup (~300ms import overhead). The Go binary is a single static executable with instant startup and zero dependencies.

Status

The Go version covers the core workflow. What's missing are the TUI features.

Command Go Notes
init, add-dir, remove-dir Done
explore Done Deep scan with remote URL caching
create Done Parallel fetch, rollback, hooks
delete Done Parallel teardown, hooks
list, status Done Including -s summary and PR status
sync Done Parallel rebase, conflict handling
go Done Including --close-tab for Zellij
add-repo, remove-repo Done
rename, doctor, stats Done
preset Done
shell-init Done
mcp-serve Done JSON-RPC server for Claude Code
hook Done Claude Code hook handler
run Partial Inline prefix output, no split-pane TUI
dash Not yet Planned as separate plugin/binary

285 tests passing (226 unit + 59 e2e).

Requirements

  • Go version: No dependencies — single static binary
  • Python version: Python 3.12+ (installed automatically by Homebrew)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gw_cli-0.12.17.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gw_cli-0.12.17-py3-none-any.whl (74.5 kB view details)

Uploaded Python 3

File details

Details for the file gw_cli-0.12.17.tar.gz.

File metadata

  • Download URL: gw_cli-0.12.17.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gw_cli-0.12.17.tar.gz
Algorithm Hash digest
SHA256 4275b1e36db4b45842e877a1ae965546d2cfc12d16d15ccee162c439256d6b76
MD5 b1d57f82e9414162111b7d7c47b49321
BLAKE2b-256 e9c74a31ab009676c49ebfb5626b11304d4511cf6252c01f28bf7d1ea903b44b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gw_cli-0.12.17.tar.gz:

Publisher: release.yml on nicksenap/grove

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gw_cli-0.12.17-py3-none-any.whl.

File metadata

  • Download URL: gw_cli-0.12.17-py3-none-any.whl
  • Upload date:
  • Size: 74.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gw_cli-0.12.17-py3-none-any.whl
Algorithm Hash digest
SHA256 73e1a1b2a41a2a30cbffcc6f623164f260466b1b4d944db7c46e6034079371da
MD5 7a1c49f35d5ba97c471a768ca42ef0cb
BLAKE2b-256 b93c218a1469d616af98f714faeaae83ead5a5abea096a9dd9d2f03ffca9548f

See more details on using hashes here.

Provenance

The following attestation bundles were made for gw_cli-0.12.17-py3-none-any.whl:

Publisher: release.yml on nicksenap/grove

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page