{"id":50337390,"url":"https://github.com/m00nk0d3/grove","last_synced_at":"2026-05-29T14:30:57.191Z","repository":{"id":358359036,"uuid":"1238255118","full_name":"m00nk0d3/grove","owner":"m00nk0d3","description":"Worktree and AI agent launcher, PR and Issue tracker","archived":false,"fork":false,"pushed_at":"2026-05-28T20:15:35.000Z","size":17773,"stargazers_count":2,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T21:15:51.831Z","etag":null,"topics":["ai","coding","issues","pr","worktrees"],"latest_commit_sha":null,"homepage":"https://m00nk0d3.github.io/grove/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m00nk0d3.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-14T00:47:31.000Z","updated_at":"2026-05-28T20:04:35.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/m00nk0d3/grove","commit_stats":null,"previous_names":["m00nk0d3/nexus","m00nk0d3/grove"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/m00nk0d3/grove","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m00nk0d3%2Fgrove","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m00nk0d3%2Fgrove/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m00nk0d3%2Fgrove/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m00nk0d3%2Fgrove/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m00nk0d3","download_url":"https://codeload.github.com/m00nk0d3/grove/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m00nk0d3%2Fgrove/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33657690,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","coding","issues","pr","worktrees"],"created_at":"2026-05-29T14:30:56.511Z","updated_at":"2026-05-29T14:30:57.185Z","avatar_url":"https://github.com/m00nk0d3.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# NEXUS — Git Worktree Orchestrator \u0026 AI Agent Hub\n\n\u003e Manage Git worktrees, track GitHub PRs and Issues, launch AI coding agents, and keep tabs on every active session — all from a single terminal interface. No browser. No tab soup. Just vibes.\n\n![Latest Release](https://img.shields.io/github/v/release/m00nk0d3/grove?logo=github\u0026label=latest)\n![Go version](https://img.shields.io/badge/Go-1.25-00ADD8?logo=go)\n![License](https://img.shields.io/badge/license-MIT-green)\n![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey)\n\n\u003c!-- Screenshot placeholder — run `vhs demo.tape` to regenerate --\u003e\n![Grove TUI — 3-pane worktree dashboard](demo/grove.gif)\n\n---\n\n## Why Grove?\n\nModern software development means juggling multiple things at once: several features in flight, a handful of open PRs waiting for review, GitHub issues to reference, and at least one AI agent that swears it can fix everything. Keeping all of that in sync — without losing your mind or your terminal history — is genuinely painful.\n\n**The problems Grove solves:**\n\n- **Context-switching hell.** Stashing changes, checking out branches, losing your editor state, repeating. Git worktrees are the solution, but their CLI is clunky and easy to forget. Grove puts your entire worktree landscape on one screen and lets you jump between them instantly.\n\n- **The five-app shuffle.** Terminal for git, browser for GitHub, another terminal for the agent, Slack for the PR link, repeat. Grove collapses all of that into a single pane of glass: worktrees, PRs, issues, and agent launchers — no browser tab required.\n\n- **AI agents without context.** Spinning up Claude Code or Copilot in the wrong directory (or forgetting which worktree maps to which feature) wastes time and produces wrong answers. Grove launches agents *inside the correct worktree* automatically, so your AI always has the right repo context.\n\n- **\"Which branch had that issue again?\"** Grove links GitHub issues and PRs to their worktrees so you always know what's where. No more `git branch -a | grep vague-memory`.\n\nIn short: if you work on multiple features simultaneously and use AI coding tools, Grove removes the glue work so you can focus on the actual code.\n\n---\n\n## Features\n\n- **3-pane TUI** — worktree list, GitHub context panel, and detail view in one terminal window\n- **Full worktree management** — create, delete, switch shell, lock/unlock, and prune worktrees without leaving the terminal\n- **GitHub sync** — pull requests and issues fetched via the `gh` CLI and kept fresh in the background\n- **Issue hierarchy \u0026 sub-issue branching** — navigate parent/child issue trees and spin up a worktree for any sub-issue in one move, with smart guards so you never branch off a ghost\n- **Active sessions dashboard** — mission control for your worktrees: see exactly what's alive, what's idle, and what's absolutely on fire 🔥\n- **AI agent launchers** — spawn Claude Code, GitHub Copilot, or Aider in the correct worktree directory with a single keypress\n- **Auto-update notifications** — Grove checks for new versions on startup and can update itself; no more `brew upgrade` guilt-trips\n- **Global fuzzy finder** — press `/` or `Ctrl+F` to search across worktrees, issues, PRs, files, branches, and agent history simultaneously; results update in real-time as you type\n- **AI-assisted PR review** — press `Ctrl+R` on any PR to auto-provision a review worktree and pre-seed your AI agent with a structured code-review prompt\n- **9 built-in themes** — Digital Noir, Matrix, Light, Everforest, Tokyo Night, Catppuccin, Kanagawa, Rosé Pine, and One Dark; cycle them live with `t`\n- **In-app help** — press `f1` or `?` at any time for a searchable keybindings and troubleshooting reference\n- **Local persistence** — config lives in `~/.grove/config.toml`; metadata is cached in SQLite so Grove starts fast\n\n---\n\n## Prerequisites\n\n| Requirement | Notes |\n|---|---|\n| [Git](https://git-scm.com/) | Must be in `PATH` |\n| [GitHub CLI (`gh`)](https://cli.github.com/) | Run `gh auth login` before first use |\n| Go 1.25+ | Only needed if building from source |\n| Claude Code | Optional — enable with `claude_enabled = true` |\n| GitHub Copilot CLI | Optional — `gh extension install github/gh-copilot` |\n| Aider | Optional — `pip install aider-chat` |\n\n---\n\n## Installation\n\n### Linux / macOS\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/m00nk0d3/grove/main/install.sh | bash\n```\n\nAuto-detects your OS and architecture, downloads the right binary from GitHub Releases, and installs to `/usr/local/bin`.\n\n### Windows (PowerShell)\n\n```powershell\nirm https://raw.githubusercontent.com/m00nk0d3/grove/main/install.ps1 | iex\n```\n\nDownloads the latest `windows_amd64` release, installs to `%LOCALAPPDATA%\\grove\\`, and adds it to your user `PATH` automatically. Restart your terminal after running.\n\n### go install\n\nWorks on all platforms — requires Go 1.22+.\n\n```bash\ngo install github.com/m00nk0d3/grove/cmd/grove@latest\n```\n\n### Build from source\n\n```bash\ngit clone https://github.com/m00nk0d3/grove\ncd grove\ngo build -o grove ./cmd/grove\n./grove\n```\n\n\u003e Pre-built release archives are also available on the [GitHub Releases page](https://github.com/m00nk0d3/grove/releases) if you prefer to install manually.\n\n---\n\n## Quick Start\n\n1. `cd` into any Git repository\n2. Run `grove`\n3. Grove opens in the **Worktrees** view — use `j`/`k` to navigate the list\n4. Press `i` to switch to the Issues view, select an issue, and press `Enter` to create a new worktree for it\n5. Press `Enter` or `s` to open a shell inside the selected worktree\n6. Press `a`, `c`, `f`, or `Space` to launch an AI agent in that worktree's context\n\n---\n\n## Keybindings\n\n### Navigation\n\n| Key | Action |\n|---|---|\n| `↑` / `↓` or `j` / `k` | Navigate within panel |\n| `←` / `→` or `h` / `l` | Switch between panels / tabs |\n| `Tab` | Cycle panel focus / tab |\n| `Enter` | Open shell in worktree / Select |\n\n### Worktree Operations\n\n| Key | Action |\n|---|---|\n| `Enter` (Issues view) | Create worktree from selected issue |\n| `Enter` (PRs view) | Checkout PR into a new worktree |\n| `Enter` (Worktrees view) | Open / focus shell in worktree |\n| `Ctrl+D` | Delete selected worktree |\n| `s` | Open shell in worktree |\n| `x` | Kill session and close terminal tab |\n\n### AI Agents\n\n| Key | Action |\n|---|---|\n| `a` | Spawn Claude Code (with optional inline prompt) |\n| `c` | Spawn GitHub Copilot (with optional inline prompt) |\n| `f` | Spawn Aider (opens file picker first) |\n| `Space` | Unified agent launcher (shows all agents and availability) |\n| `Ctrl+R` | AI-assisted PR review (PRs view only — auto-provisions worktree + pre-seeded prompt) |\n\n### Views\n\n| Key | Action |\n|---|---|\n| `w` / `W` | Worktrees view |\n| `i` / `I` | Issues view (with sub-issue hierarchy!) |\n| `p` / `P` | PRs view |\n| `t` | Open settings (theme, sync config, AI agents) |\n\n### Global\n\n| Key | Action |\n|---|---|\n| `f1` / `?` | Open help modal |\n| `/` / `Ctrl+F` | Open fuzzy finder (search worktrees, issues, PRs, files, branches) |\n| `g` | Open selected item in GitHub |\n| `r` | Force-refresh GitHub data (bypasses cache) |\n| `PgDown` / `n` | Next page (issues / PRs lists) |\n| `PgUp` | Previous page |\n| `q` / `Esc` / `Ctrl+C` | Quit |\n\n---\n\n## Configuration\n\nGrove reads its config from `~/.grove/config.toml`. The file is created with defaults on first run. All fields are optional.\n\n```toml\n[github]\n# Automatically sync PRs and Issues in the background.\nauto_sync = true\n\n# How often to refresh GitHub data (in minutes).\nsync_interval_minutes = 5\n\n[appearance]\n# UI theme. Options: \"digital-noir\", \"matrix\", \"light\", \"everforest\",\n#            \"tokyonight\", \"catppuccin\", \"kanagawa\", \"rose-pine\", \"onedark\"\ntheme = \"digital-noir\"\n\n[ai_agents]\n# Enable or disable individual agent launchers.\ncopilot_enabled = true\nclaude_enabled  = true\naider_enabled   = false\n\n# Override the binary name/path if it differs from the default.\nclaude_binary = \"claude\"\naider_binary  = \"aider\"\n\n[worktrees]\n# The branch used as the base when creating new worktrees.\nbase_branch = \"main\"\n\n# Where new worktree directories are created, relative to the repo root.\nworktree_root = \"../worktrees\"\n```\n\n---\n\n## Active Sessions\n\nActive sessions are displayed inline in the **Worktrees** view — no separate view needed. See which agents are running, which shells are alive, and which worktrees are just sitting there pretending to be productive.\n\n- **`s`** — open a new shell session in the selected worktree\n- **`x`** — kill the active session for the selected worktree\n\nNo more `ps aux | grep claude` crimes. It's all in one place.\n\n---\n\n## Fuzzy Finder\n\nPress `/` or `Ctrl+F` from anywhere to open the global fuzzy finder overlay. It searches across:\n\n- **Worktrees** — jump directly to any worktree\n- **Issues** — navigate to any GitHub issue\n- **Pull Requests** — navigate to any PR\n- **Files** — open modified/tracked files in `$EDITOR`\n- **Branches** — create a worktree from any local branch\n- **Agent history** — review past agent runs\n\nResults update in real-time as you type. `Enter` dispatches a smart action per result type. `Esc` closes the overlay without acting.\n\n---\n\n## AI-Assisted PR Review\n\nIn the **PRs** view, press `Ctrl+R` on any pull request to trigger an AI-assisted review:\n\n1. Grove auto-provisions a dedicated review worktree for the PR branch\n2. Opens the unified agent launcher pre-seeded with a structured code-review prompt covering correctness, security, performance, maintainability, and breaking changes\n3. Your AI agent starts reviewing with full repository context — no copy-pasting, no browser tab required\n\n---\n\n## Issue Hierarchy \u0026 Sub-Issue Branching\n\nGrove understands GitHub's issue hierarchy (parent issues → sub-issues). In the **Issues** view:\n\n- Browse nested issue trees with indentation so you always know who's the parent\n- Select a sub-issue and press `Ctrl+N` — Grove creates a worktree branching off the parent's branch automatically\n- If the parent issue has no branch yet, Grove will warn you instead of silently creating something broken (we've all been there)\n\n---\n\n## Staying Up to Date\n\nGrove checks for new versions on startup and lets you know when there's something fresher available. No manual `go install` archaeology required. When a new version drops, you'll see a notification and can trigger the self-update from inside the app.\n\n---\n\n## AI Agent Setup\n\n### GitHub Copilot\n\n```bash\n# Install the Copilot CLI extension\ngh extension install github/gh-copilot\n\n# Authenticate (if not already done)\ngh auth login\n```\n\nEnable in config (default: `true`). Trigger in Grove: **`c`**.\n\n### Claude Code\n\nInstall via the official guide: \u003chttps://docs.anthropic.com/en/docs/claude-code\u003e\n\nThe binary must be named `claude` (or set `claude_binary` to its full path). Enable in config (default: `true`). Trigger in Grove: **`a`**.\n\n### Aider\n\n```bash\npip install aider-chat\n```\n\nSet `aider_enabled = true` in `~/.grove/config.toml`. Trigger in Grove: **`f`** for direct launch, or **`Space`** → select Aider in the unified launcher.\n\n---\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---|---|\n| Empty issues / PRs list or \"gh: not logged in\" | Run `gh auth login` and follow the prompts |\n| \"binary not found\" when spawning an agent | Install the missing tool or set `*_enabled = false` in config |\n| No worktrees visible — \"git not in PATH\" | Ensure Git is installed: `git --version` |\n| Deleted worktrees still appear | Run `git worktree prune` in your repo, then press `r` in Grove |\n| Warning banner on startup — config not loading | Check `~/.grove/config.toml` for TOML syntax errors; delete to restore defaults |\n\nFor more detail, press **`f1`** inside Grove and open the **Troubleshooting** tab.\n\n---\n\n## Contributing\n\nContributions are welcome! Here's how to get set up and ship something.\n\n### Developer setup\n\n```bash\n# 1. Clone the repo\ngit clone https://github.com/m00nk0d3/grove\ncd grove\n\n# 2. Verify Go 1.25+ is installed\ngo version\n\n# 3. Install the GitHub CLI and authenticate\ngh auth login\n\n# 4. Build the project\nmake build\n\n# 5. Run tests\nmake test\n\n# 6. Run Grove locally (from inside any Git repo)\ngo run ./cmd/grove\n```\n\nFor a full developer reference including release procedures and configuration details, see [docs/RUNBOOK.md](docs/RUNBOOK.md).\n\n### Workflow\n\n1. **Open an issue first** — before starting anything non-trivial, open an issue so we can align on the approach and avoid wasted effort.\n2. **Branch naming** — use `feat/issue-\u003cnumber\u003e-\u003cshort-description\u003e` (e.g. `feat/issue-42-worktree-lock-ui`).\n3. **Run tests** before pushing:\n   ```bash\n   make test\n   ```\n4. **Commit messages** follow [Conventional Commits](https://www.conventionalcommits.org/) and must include a body explaining *why* the change was made (see `.copilot/` for the project commit guidelines).\n5. **Open a PR** against `main` with a clear description: what changed, why, and how it was tested.\n\n---\n\n## License\n\nGrove is released under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm00nk0d3%2Fgrove","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm00nk0d3%2Fgrove","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm00nk0d3%2Fgrove/lists"}