Skip to main content

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.

forestui screenshot

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 ~/forest directory 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)
  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

forestui-0.9.5.tar.gz (128.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

forestui-0.9.5-py3-none-any.whl (43.2 kB view details)

Uploaded Python 3

File details

Details for the file forestui-0.9.5.tar.gz.

File metadata

  • Download URL: forestui-0.9.5.tar.gz
  • Upload date:
  • Size: 128.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for forestui-0.9.5.tar.gz
Algorithm Hash digest
SHA256 491a35cbc7b39ebdafd69fc14a3d8fd81030b2d037ef5acbcb7ac128e8373013
MD5 5cd669e15d416f484888e74126375090
BLAKE2b-256 1f795281b0a65f5a3f4590922996b5a141befd9df8af0b61a24ec42ff5be9a3e

See more details on using hashes here.

Provenance

The following attestation bundles were made for forestui-0.9.5.tar.gz:

Publisher: publish.yml on flipbit03/forestui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file forestui-0.9.5-py3-none-any.whl.

File metadata

  • Download URL: forestui-0.9.5-py3-none-any.whl
  • Upload date:
  • Size: 43.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for forestui-0.9.5-py3-none-any.whl
Algorithm Hash digest
SHA256 43daeab7a8e63e4abb0b1ca4d0df49ab367ac0eec0b00930dc69df6d2ebc33ce
MD5 ee0f44810dd33a754ab2c39c8fbfde60
BLAKE2b-256 7e1dabc07ff13926f201f27b4b41d4460245657fb852f1749f7716d3b6a0453d

See more details on using hashes here.

Provenance

The following attestation bundles were made for forestui-0.9.5-py3-none-any.whl:

Publisher: publish.yml on flipbit03/forestui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page