A Terminal UI for managing Git worktrees
Project description
forestui
A terminal UI for managing Git worktrees, inspired by forest for macOS by @ricwo.
forestui brings the power of Git worktree management to the terminal with a beautiful TUI interface built on Textual, featuring deep integration with Claude Code.
Features
- Repository Management: Add and track multiple Git repositories
- Worktree Operations: Create, rename, archive, and delete worktrees
- TUI Editor Integration: Opens TUI editors (vim, nvim, helix, etc.) in tmux windows
- Claude Code Integration: Track and resume Claude Code sessions per worktree
- Multi-Forest Support: Manage multiple forest directories via CLI argument
- tmux Native: Runs inside tmux for a cohesive terminal experience
Requirements
- Python 3.14+
- tmux
- uv (for installation)
- gh (optional, for GitHub integration)
Installing
Quick Install (recommended)
Installs uv automatically if not present. No Python installation required.
curl -fsSL https://raw.githubusercontent.com/flipbit03/forestui/main/install.sh | bash
Install via uv
If you already have uv installed:
uv tool install forestui
Updating
forestui auto-updates on startup. To manually update:
uv tool upgrade forestui
Usage
# Start with default forest directory (~/forest)
forestui
# Start with a custom forest directory
forestui ~/my-projects
# Show help
forestui --help
Keyboard Shortcuts
| Key | Action |
|---|---|
a |
Add repository |
w |
Add worktree |
e |
Open in editor |
t |
Open in terminal |
o |
Open in file manager |
n |
Start Claude session |
y |
Start Claude session (YOLO mode) |
h |
Toggle archive |
d |
Delete |
s |
Settings |
r |
Refresh |
? |
Show help |
q |
Quit |
TUI Editor Integration
When your default editor is a TUI editor (vim, nvim, helix, nano, etc.), forestui opens it in a new tmux window named edit:<worktree>. This keeps your editing session organized alongside forestui and any Claude sessions.
Supported TUI editors: vim, nvim, vi, emacs, nano, helix, hx, micro, kakoune, kak
Multi-Forest Support
forestui stores its state (.forestui-config.json) in the forest directory itself, allowing you to manage multiple independent forests:
forestui ~/work # Uses ~/work/.forestui-config.json
forestui ~/personal # Uses ~/personal/.forestui-config.json
User preferences (editor, theme, branch prefix) are stored globally in ~/.config/forestui/settings.json.
Configuration
Settings are stored in ~/.config/forestui/settings.json:
{
"default_editor": "nvim",
"branch_prefix": "feat/",
"theme": "system"
}
Press s in the app to open the settings modal.
Development
# Clone and enter the repo
git clone https://github.com/flipbit03/forestui.git
cd forestui
# Install dev dependencies
make dev
# Run checks
make check
# Format code
make format
# Run the app
make run
See CLAUDE.md for AI-assisted development guidelines.
Compatibility with forest (macOS)
forestui is designed to coexist with forest for macOS:
- Both apps can share the same
~/forestdirectory for worktrees - Each app maintains its own state file:
- forest:
.forest-config.json(stored in~/.config/forest/) - forestui:
.forestui-config.json(stored in the forest folder itself)
- forest:
- Worktrees created by either app work seamlessly with both
Key difference: forestui stores its state inside the forest folder (~/forest/.forestui-config.json) rather than in a global config directory. This design enables multi-forest support - you can run forestui ~/work and forestui ~/personal with completely independent state for each.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file forestui-0.9.7.tar.gz.
File metadata
- Download URL: forestui-0.9.7.tar.gz
- Upload date:
- Size: 136.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4fc925a6f736e90b085502513d25db44f551241f2dea9621e4548f803c0fd3b
|
|
| MD5 |
65544d467d7b0689f5039a8727b2d5d7
|
|
| BLAKE2b-256 |
a8aec74321844b0e14298244cc0ca389d716f391ea27c91d325118eac8ec051f
|
Provenance
The following attestation bundles were made for forestui-0.9.7.tar.gz:
Publisher:
publish.yml on flipbit03/forestui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
forestui-0.9.7.tar.gz -
Subject digest:
f4fc925a6f736e90b085502513d25db44f551241f2dea9621e4548f803c0fd3b - Sigstore transparency entry: 877318715
- Sigstore integration time:
-
Permalink:
flipbit03/forestui@15d26f0273f86e725e683b1266033084a0128f1d -
Branch / Tag:
refs/tags/v0.9.7 - Owner: https://github.com/flipbit03
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15d26f0273f86e725e683b1266033084a0128f1d -
Trigger Event:
release
-
Statement type:
File details
Details for the file forestui-0.9.7-py3-none-any.whl.
File metadata
- Download URL: forestui-0.9.7-py3-none-any.whl
- Upload date:
- Size: 43.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f2dc6868ab5501601bbdc9362ca1426fcf762bc322ddc01961613044d4bf693
|
|
| MD5 |
6981929f442864b2d1c2d042004f02f6
|
|
| BLAKE2b-256 |
fbe13f69fc6b1680fe3a75e625aa19b694126522a008f6ff6f7c631de32b9563
|
Provenance
The following attestation bundles were made for forestui-0.9.7-py3-none-any.whl:
Publisher:
publish.yml on flipbit03/forestui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
forestui-0.9.7-py3-none-any.whl -
Subject digest:
4f2dc6868ab5501601bbdc9362ca1426fcf762bc322ddc01961613044d4bf693 - Sigstore transparency entry: 877318748
- Sigstore integration time:
-
Permalink:
flipbit03/forestui@15d26f0273f86e725e683b1266033084a0128f1d -
Branch / Tag:
refs/tags/v0.9.7 - Owner: https://github.com/flipbit03
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@15d26f0273f86e725e683b1266033084a0128f1d -
Trigger Event:
release
-
Statement type: