This guide walks through the full lifecycle of a worktree — from task description to merge — explaining what happens at each step.
Prerequisites
Before starting, make sure you have:
- Open Orchestrator installed (
owt versionworks) - A git repository to work with
- tmux installed
- An AI coding tool installed (Claude Code, Pi, OpenCode, or Droid)
Step 1: Describe Your Task
Navigate to your project and describe what you want done:
cd ~/projects/my-app
owt new "Implement login form with email and password"What happens: Branch name generation
Open Orchestrator parses your task description and generates a branch name. You see a confirmation prompt:
Task: Implement login form with email and password
Branch: implement-login-form
Accept? [Y/n/edit]:Press Enter to accept, or type edit to customize the branch name. The branch name is derived from your task — no need to come up with naming conventions.
Step 2: Watch the Setup
After you confirm, Open Orchestrator runs through the full setup sequence:
Creating worktree...
Branch: implement-login-form
Path: ../my-app-implement-login-form
Detecting project type...
Detected: node (npm)
Installing dependencies...
Running: npm install
Done.
Setting up environment...
Copied .env
Copied CLAUDE.md (paths adjusted)
Creating tmux session...
Session: owt-implement-login-form
Launching AI agent...
Tool: claude-code
Task: "Implement login form with email and password"
Ready. Worktree is active.Here is what each step does:
- Branch naming — The branch name is derived from your task description. You confirm or edit before anything is created.
- Worktree creation — A new git worktree is created in a sibling directory (e.g.,
../my-app-implement-login-form/). This is a full copy of your repo on a new branch — completely isolated from your main working directory. - Project detection — Open Orchestrator inspects the repo for
package.json,requirements.txt,Cargo.toml,go.mod, orcomposer.jsonto determine the project type. - Dependency installation — The appropriate package manager runs (
npm install,pip install -r requirements.txt,cargo build, etc.) so the worktree is immediately ready. - Environment setup —
.envfiles andCLAUDE.mdare copied into the new worktree with paths adjusted. - tmux session — A dedicated tmux session is created for this worktree, named
owt-<branch-name>. - AI agent launch — Your configured AI tool (Claude Code, Pi, OpenCode, or Droid) is launched inside the tmux session with your task description as the initial prompt.
Step 3: Navigate via the Control Plane
While the AI agent works in the background, launch the Control Plane:
owtYou see a Textual decision surface showing all your worktrees grouped by what needs attention. The new worktree appears with a working status light, meaning the AI agent is actively coding.
+---------------------------+---------------------------+
| main | implement-login-form |
| Branch: main | Branch: implement-login.. |
| Status: - | Status: working |
+---------------------------+---------------------------+Use arrow keys to navigate and Enter to jump into a worktree's tmux session.
Step 4: Send Additional Instructions
You can send follow-up instructions to the AI agent without entering the tmux session:
owt send implement-login-form "Add form validation — email must be valid, password minimum 8 characters"The message is sent to the AI agent's tmux pane. You stay in your current terminal.
You can also chain multiple tasks:
owt send implement-login-form "After the form is done, add unit tests for the validation logic"Step 5: Review the Work
When you want to see what the AI has produced, jump into the session:
owt switch implement-login-formOr press Enter on the worktree in the Control Plane.
You are now inside the tmux session with the AI agent. You can:
- Review the code changes the AI has made
- Ask the AI follow-up questions directly
- Make manual edits alongside the AI
Returning to the Control Plane
Press Alt+s to return to the Control Plane. This is a global tmux keybinding that works from inside any worktree session.
Press Alt+c to create a new worktree without leaving tmux.
Step 6: Merge When Done
Once you are satisfied with the work, run the two-phase merge:
owt merge implement-login-formWhat happens: Two-phase merge
- Phase 1 — Merge: The branch is merged into your base branch (typically
main). - Phase 2 — Verify: The merge result is checked for conflicts or issues.
- Cleanup: On success, the worktree directory, git branch, and tmux session are all removed automatically.
Merging implement-login-form into main...
Phase 1: Merge complete
Phase 2: Verification passed
Cleaning up...
Removed worktree: ../my-app-implement-login-form
Deleted branch: implement-login-form
Closed tmux session: owt-implement-login-form
Done.Working With Multiple Worktrees
The real power of Open Orchestrator shows when you run multiple worktrees in parallel:
# Kick off three tasks at once
owt new "Implement login form with email and password"
owt new "Add rate limiting to the API endpoints"
owt new "Write integration tests for user registration"
# Monitor all three from the Control Plane
owt
# Send follow-ups to any of them
owt send rate-limiting "Also add per-IP rate limits"
# Merge them as they complete
owt merge login-form
owt merge rate-limiting
owt merge integration-testsEach worktree is fully isolated — different branch, different directory, different AI agent session. No conflicts until merge time.
Using Templates
For common task types, use templates to get sensible defaults:
owt new "Fix the pagination off-by-one error" --template bugfix
owt new "Add dark mode support" --template feature
owt new "Patch the XSS vulnerability" --template hotfixTemplates configure the worktree setup (branch prefix, AI tool settings, etc.) based on the type of work.
Next Steps
- Learn about Git Worktrees and how isolation works
- Explore the Send/Receive Pattern for multi-agent orchestration
- View all Command Options