Skip to main content

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)

Release files for gw-cli 0.12.17

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

Source distribution (sdist)

Source distribution for gw-cli 0.12.17
File Size Uploaded
gw_cli-0.12.17.tar.gz 1.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for gw-cli 0.12.17
File Interpreter ABI Platform
gw_cli-0.12.17-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / gw_cli-0.12.17.tar.gz

Download URL gw_cli-0.12.17.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
4275b1e36db4b45842e877a1ae965546d2cfc12d16d15ccee162c439256d6b76
BLAKE2b-256 checksum
How to use checksums
e9c74a31ab009676c49ebfb5626b11304d4511cf6252c01f28bf7d1ea903b44b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Apr 3, 2026.

Transparency log

Release files / gw_cli-0.12.17-py3-none-any.whl

Download URL gw_cli-0.12.17-py3-none-any.whl
Size 74.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
73e1a1b2a41a2a30cbffcc6f623164f260466b1b4d944db7c46e6034079371da
BLAKE2b-256 checksum
How to use checksums
b93c218a1469d616af98f714faeaae83ead5a5abea096a9dd9d2f03ffca9548f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Apr 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.12.17 This release

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