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
Metadata
Release files for forestui 1.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| forestui-1.3.1.tar.gz | 151.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| forestui-1.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 205.2 kB
Release files / forestui-1.3.1.tar.gz
| Download URL | forestui-1.3.1.tar.gz |
|---|---|
| Size | 151.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
065a4a5df29810b1d1a6cdfd92917181b45c0ed5d7f2917185cd72410ae5433c
|
|
BLAKE2b-256 checksum How to use checksums |
1f5d10736e326b939014074e49fdc6fc2188fa8408c3d9bbc741a70ec7c7c297
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Aug 14, 2026.
Transparency logRelease files / forestui-1.3.1-py3-none-any.whl
| Download URL | forestui-1.3.1-py3-none-any.whl |
|---|---|
| Size | 54.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9dab3d14a47f8f2011f78d1a931a213615ef219963dddcb3fe77d39a40d6ff24
|
|
BLAKE2b-256 checksum How to use checksums |
b34099063d12cde8711c7bdfe96ea1a7e1453a6b40bf111e2160c2cfda4f4860
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Aug 14, 2026.
Transparency log