⚠️ This tool is purposely built for myself and how I develop things at Grafana Labs (e.g. using Graft)
Run multiple Claude Code sessions in parallel on a single repo, each isolated in its own git worktree.
- Sessions survive terminal restarts and are automatically resumed.
- Jump into any project's shell, preview live changes with Graft, or commit and push from a single command.
- Fully isolated from your personal tmux — tulip runs its own tmux server.
tulip.mov
- tmux
- Claude Code
curl -fsSL https://raw.githubusercontent.com/dgzlopes/tulip/main/install.sh | bashtulip # open the TUI
tulip reset # wipe all projects, sessions, and worktrees| Key | Action |
|---|---|
n |
New project |
d |
Delete selected project and worktree |
↑↓ / j k |
Navigate |
↵ |
Open project action menu |
? |
Help |
q |
Quit |
| Dot | Meaning |
|---|---|
| grey | No uncommitted changes |
| green | Uncommitted changes in worktree |
| red | Worktree error (e.g. missing path) |
| Icon | Meaning |
|---|---|
| 🐝 (green) | Yarn watch is running |
| 🐝 failed (red) | Watch exited unexpectedly |
Interact with projects by ID or branch name from any terminal:
tulip <id|branch> # interactive picker (arrow keys)
tulip claude <id|branch> # attach to the Claude session
tulip shell <id|branch> # open a shell in the worktree
tulip graft <id|branch> # start yarn watch for live preview (switches active graft)
tulip graft-debug <id|branch> # attach to the graft watch output
tulip vscode <id|branch> # open the worktree in VS Code
tulip publish <id|branch> <msg> # stage all, commit (signed), and pushThe ↵ action menu also provides: difit (visual diff, requires difit) and open-pr (open PR in browser).
MIT