Grove is a macOS desktop app that sits alongside your editor as a narrow sidebar. It manages git worktrees per workspace with custom setup/teardown scripts, opens them in your IDE in one click, and monitors any Claude Code sessions running in those directories — surfacing their status on the dashboard with sound/badge notifications.
- Worktree management: Create and remove worktrees per workspace, with git diff stats, custom setup and teardown scripts, live logs, and quick actions (rebase on branch, checkout branch, start fresh from new branch)
- Main repo tracking: The main working tree is always visible as a card alongside worktrees and tracked the same way (git diff, Claude sessions, editor badge)
- Claude Code monitoring: Auto-detect Claude Code sessions in worktree directories and the main repo, display live status, and notify with sound and dock badge. Multi-session badge with per-status hover breakdown when several sessions run in one directory
- Open in IDE: Pick your editor (Zed, VS Code, Cursor, etc.) and open any worktree or workspace root in one click. Cards show an "active" badge when the editor window is currently open, and you can close it from the card's context menu. Tracking can be turned off for editors that share a single window across folders
- Context-menu bulk actions: Remove all worktrees, close all editor windows for a workspace, sync main checkout (reset main working tree to HEAD), copy branch name
- Sidebar mode: Dock the window to the side of the screen, keep it always on top, and open your IDE in the remaining space
- Customizable: Theme, notification sounds, dock badge, system tray icon, per-workspace scripts and git settings
- Auto-update: One-click update from GitHub releases
⬇️ Download Grove 0.3.4 for macOS
- Click the download link above (or grab it from the Releases page)
- Double-click the DMG to open it
- Drag
Grove.apponto theApplicationsfolder shortcut - Launch Grove from Applications or Spotlight
Grove is signed and notarized by Apple, so it launches without any security warnings. On first run, a few items need your attention:
- Claude Code hooks — Grove installs a hook script at
~/.grove/hook.shand merges required hooks into~/.claude/settings.jsonautomatically on startup. Grove relies on these hooks to track session state — keep them enabled. - AppleEvents permission — Grove will prompt you the first time it tries to control your editor (e.g. opening a worktree in Zed/VSCode). Click OK on the native dialog.
- Accessibility permission — required only for Sidebar mode ("Dock to edge"). Enable it manually via System Settings → Privacy & Security → Accessibility. A direct link is available in Grove's settings.
- Storage: All data lives in
~/.grove/— workspace configs inprojects/<name>/config.json, worktrees inprojects/<name>/worktrees/ - Worktree lifecycle: Creating a worktree runs
git worktree addthen your setup script. Deleting runs your teardown script thengit worktree remove - Git diffs: Captured by polling
git diff HEAD --shortstaton each worktree every 10 seconds. Untracked (non-ignored) files are also counted — listed viagit ls-files --others --exclude-standardand line-counted with a(path, mtime, size)cache so repeated polls stay cheap. Each poll-time git call runs under a 5s timeout; untracked scans are capped at 500 files per worktree and skip line counting for files over 1 MiB - Claude monitoring: On startup, Grove installs a hook script (
~/.grove/hook.sh) and merges hooks into~/.claude/settings.json. These hooks make Claude write session state (working, permission, question, done) as JSON files in~/.grove/sessions/. Grove polls that directory every 2 seconds to update the dashboard - Sounds: Notification sounds (
.aiff) are embedded in the binary via Go'sembedpackage and extracted to a cache on first use - Auto-update: The frontend checks the GitHub Releases API for newer versions; the backend fetches the DMG pinned to the target tag, verifies the Apple Developer ID signature and Gatekeeper before copying into
/Applications/, and writes all install output to~/.grove/update.logfor diagnostics
| Section | Setting | Default | Description |
|---|---|---|---|
| Display | Theme | Forest | 35 built-in DaisyUI themes (Forest default) |
| Display | Keep window on top | On | Keep Grove above other windows |
| Display | Dock to edge | On | Snap to screen edge at full height, open editors in remaining space |
| Display | IDE width | 100% | Share of the remaining space taken by the editor when docked (1–100%) |
| Notifications | Play sound | When done or needs input | Never, when done or needs input, or only when needs input |
| Notifications | "Done" badge duration | 30 minutes | How long the done badge persists: instant, 1–60 min, or until clicked |
| Notifications | Show menu bar icon | Off | System tray icon to show/hide Grove |
| Editor | Default editor | Zed | macOS app name (e.g. Zed, Visual Studio Code, Cursor) |
| Editor | Track active editor windows | On | Show "active" badge on cards whose folder is open in the editor; turn off for editors with a single shared window |
| Setting | Default | Description |
|---|---|---|
| Repository path | — | Absolute path to the git repo this workspace tracks (read-only) |
| Branch new worktrees from | origin/main | Start point for new worktrees |
| Delete local branch | On | Clean up the branch after deleting a worktree |
| Setup script | — | Shell command to run after creating a worktree |
| Teardown script | — | Shell command to run before removing a worktree (archiveScript in config.json) |
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and quality checks
- Submit a pull request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions




