Terminal-based interface for managing docker-compose projects across git worktrees.
Flotte manages git worktrees with isolated Docker environments:
- Creates worktrees in a configurable directory with a configurable prefix
- Each worktree gets isolated Docker volumes and offset ports
- Volumes can be cloned from main to avoid re-seeding databases
/path/to/
myproject/ # main repo (port 3000)
myproject_worktrees/
feature-x/ # worktree (port 3100)
bugfix-y/ # worktree (port 3200)
The main repo must have:
-
A
docker-compose.ymlwith named volumes (volumes are read dynamically) -
A
.envfile with base port configuration:COMPOSE_PROJECT_NAME=myproject NGINX_PORT=3000 RAILS_PORT=3001 MYSQL_PORT=3306 # ... other ports
The COMPOSE_PROJECT_NAME determines Docker volume naming and is used when cloning data to new worktrees.
git clone <repo-url>
cd flotteThen either:
uv tool install ./flotteOr:
./install.shCreate ~/.config/flotte/config.yaml:
theme: onedark
projects:
- name: My Project
path: /var/www/my-project
worktree_path: /var/www/
worktree_prefix: "my-project"
ride_command: ""Required fields:
name- Project display namepath- Path to main git repoworktree_path- Directory where new worktrees are createdworktree_prefix- Prefix for worktree directory names (use""for no prefix)
Optional fields:
theme- Color theme:onedark(default) oronelightride_command- Command for "Go Ride" button (receivesPROJECT_PATHandPROJECT_NAMEenv vars)
flotte| Key | Action |
|---|---|
n |
New worktree |
d |
Delete worktree |
s |
Start services |
x |
Stop services |
r |
Refresh status |
R |
Go Ride |
q |
Quit |
? |
Show help |