A terminal UI for managing multiple AI coding agents with git worktree isolation.
Website: https://grove.ziim.dev/
Grove allows you to run multiple AI coding agents simultaneously, each working on its own git branch in an isolated worktree. Monitor their progress, attach to their terminal sessions, and integrate with your existing tools.
Agent List with Preview Panel
Task List View
Settings Panel
- Multi-Agent Management: Run multiple AI agents in parallel, each in its own tmux session
- Multiple AI Providers: Supports Claude Code, Opencode, Codex, and Gemini CLI
- Git Worktree Isolation: Each agent works on a separate branch in an isolated worktree
- Real-Time Monitoring: See live output, detect status (running, waiting, error), track token usage
- Git Provider Integration: GitLab, GitHub, and Codeberg support with MR/PR and pipeline status
- Project Management Integration: Asana, Notion, ClickUp, Airtable, and Linear task tracking
- Dev Server Management: Start, restart, and monitor development servers per agent
- Session Persistence: Agent sessions persist across restarts with tmux
- Customizable Keybinds: All keyboard shortcuts can be personalized
- System Metrics: Monitor CPU and memory usage while agents work
| Feature | Grove | Manual tmux + worktree | git-worktree-manager |
|---|---|---|---|
| Multi-agent TUI | Yes | No | No |
| AI agent detection | Yes | No | No |
| Task management integration | Yes | No | No |
| Git provider integration | Yes | No | No |
| Dev server management | Yes | No | No |
| Session persistence | Yes | Manual | No |
| Customizable keybinds | Yes | No | No |
-
tmux
# macOS brew install tmux # Ubuntu/Debian sudo apt install tmux # Fedora sudo dnf install tmux
-
Git (version 2.5+ with worktree support)
-
An AI coding CLI - at least one of:
- Claude Code (
claude) - Opencode (
opencode) - Codex (
codex) - Gemini CLI (
gemini)
- Claude Code (
- GitLab, GitHub, or Codeberg account with API token
- Asana, Notion, ClickUp, Airtable, or Linear account with API token
brew install ZiiMs/grove/grovecurl -fsSL https://raw.githubusercontent.com/ZiiMs/Grove/main/install.sh | bashThe installer will:
- Detect your platform and architecture
- Download the latest release binary
- Install to
~/.local/bin(or specify with--bin-dir) - Optionally install tmux if missing
# Install to custom directory
curl -fsSL https://raw.githubusercontent.com/ZiiMs/Grove/main/install.sh | bash -s -- --bin-dir /usr/local/bin
# Install specific version
curl -fsSL https://raw.githubusercontent.com/ZiiMs/Grove/main/install.sh | bash -s -- --version 0.2.0
# Skip dependency installation
curl -fsSL https://raw.githubusercontent.com/ZiiMs/Grove/main/install.sh | bash -s -- --no-depscargo install grove-aigit clone https://github.com/ZiiMs/Grove.git
cd Grove
cargo build --release
cp target/release/grove ~/.local/bin/# Navigate to any git repository
cd /path/to/your/project
# Run grove
grove
# Or specify a repository path
grove /path/to/your/projectGrove uses a two-level configuration system:
User preferences stored globally:
[global]
ai_agent = "claude-code" # claude-code, opencode, codex, gemini
log_level = "info"
worktree_location = "project" # project or home
[ui]
frame_rate = 30
tick_rate_ms = 250
output_buffer_lines = 5000
[performance]
agent_poll_ms = 500
git_refresh_secs = 30Project-specific settings stored in your repo (can be committed):
[git]
provider = "gitlab" # gitlab, github, codeberg
branch_prefix = "feature/"
main_branch = "main"
[dev_server]
command = "npm run dev"
port = 3000
auto_start = falseNote: Git provider settings (owner, repo, project IDs) are auto-detected from your git remotes. You only need to configure them manually if auto-detection fails.
Grove reads API tokens from environment variables. Set these in your shell profile:
# GitLab
export GITLAB_TOKEN="glpat-your-token"
# GitHub
export GITHUB_TOKEN="ghp_your-token"
# Codeberg
export CODEBERG_TOKEN="your-token"export ASANA_TOKEN="your-asana-token"
export NOTION_TOKEN="your-notion-token"
export CLICKUP_TOKEN="your-clickup-token"
export AIRTABLE_TOKEN="your-airtable-token"
export LINEAR_TOKEN="your-linear-token"GitLab: User Settings → Access Tokens → Create token with api scope
GitHub: Settings → Developer settings → Personal access tokens → repo scope
Asana: Developer Console → Create new token
Notion: My integrations → New integration
ClickUp: Settings → Apps → API Token
Airtable: Personal access tokens
Linear: Settings → API → Personal API keys
All keybinds are customizable in ~/.grove/config.toml. Defaults:
| Key | Action |
|---|---|
j / ↓ |
Move to next agent |
k / ↑ |
Move to previous agent |
g |
Go to first agent |
G |
Go to last agent |
| Key | Action |
|---|---|
n |
Create new agent |
d |
Delete selected agent |
Enter |
Attach to agent's tmux session |
N |
Set/edit custom note |
s |
Request work summary |
y |
Copy agent/branch name |
| Key | Action |
|---|---|
c |
Copy cd command to worktree |
m |
Send merge main request |
p |
Push changes |
f |
Fetch remote |
| Key | Action |
|---|---|
o |
Open MR/PR in browser |
a |
Assign task to agent |
A |
Open task in browser |
t |
Toggle task list |
e |
Open worktree in editor |
| Key | Action |
|---|---|
R |
Refresh all status |
? |
Toggle help overlay |
L |
Toggle logs view |
S |
Toggle settings |
/ |
Toggle diff view |
q |
Quit |
- Press
nto create a new agent - Enter a branch name
- Grove will:
- Create a new git branch
- Create a git worktree for isolated work
- Start a tmux session
- Launch your configured AI agent
Press Enter to attach to an agent's tmux session. Detach with Ctrl+B then D.
Install tmux using your package manager (see Prerequisites).
Run Grove from within a git repository, or specify a path as an argument.
- Verify the token is set:
echo $GITLAB_TOKEN - Check logs with
Lkey - Test the token directly with curl
Press R to force refresh all agent statuses.
Sessions are stored in ~/.grove/sessions/. Delete the relevant file to start fresh.
grove/
├── src/
│ ├── main.rs # Entry point, event loop
│ ├── lib.rs # Module exports
│ ├── agent/ # Agent model, status detection
│ ├── app/ # State, config, actions
│ ├── asana/ # Asana API client
│ ├── notion/ # Notion API client
│ ├── clickup/ # ClickUp API client
│ ├── airtable/ # Airtable API client
│ ├── linear/ # Linear API client
│ ├── git/ # Git operations, worktree
│ ├── gitlab/ # GitLab API client
│ ├── github/ # GitHub API client
│ ├── codeberg/ # Codeberg API client
│ ├── storage/ # Session persistence
│ ├── tmux/ # tmux session management
│ └── ui/ # TUI components
└── Cargo.toml
Grove is built with:
Thanks to Anthropic, OpenAI, and Google for their AI coding assistants.
MIT


