Parallelize work with worktrees
Friday is one session per branch and PR. To work on a second feature without disrupting the first, launch another Friday session in its own git worktree with friday --wt. The two sessions run side by side with separate threads, separate merge queues, and separate working directories.
This recipe is for shipping different features at the same time. For shipping one feature faster by splitting it across threads, use Work in parallel inside a single session. For the underlying mechanism, see Worktrees.
When to use it
- You have a Friday session in flight on feature A and want to start feature B without exiting.
- You want to keep one session reviewing a PR while another session writes the next one.
- You want to try a risky change in isolation while your main checkout stays untouched.
If you only want to ship the current feature faster, stay in one session and spawn parallel threads. See Work in parallel.
Recipe
1. Launch a second Friday session in a worktree
From a fresh terminal at your repo root:
friday --wt
Friday creates a sibling worktree at <repo>.worktree.YYYYMMDD-HHMMSS and switches into it. It also creates a branch named worktree-branch-<5 char hex> (e.g. worktree-branch-a3f9c) and checks it out for the session.
To base the new worktree on a specific branch:
friday --wt main
friday --wt feature/some-other-branch
Local branches are checked first, then remote.
The original session keeps running in its own worktree (or in your main checkout) untouched.
2. Rename the branch if you want a meaningful name
worktree-branch-a3f9c is fine for throwaway work but unhelpful on a PR. Before opening the PR, rename it:
! git branch -m my-real-feature-name
3. Build the feature
From here, work the same way as a single-session feature: describe what you want, watch the thread, review, accept, push, open a PR. See Build a feature and open a PR for the full happy path.
4. Close out the session
When you exit Friday, the worktree directory is removed automatically. Any uncommitted edits are auto-committed first with the message WIP: auto-commit from worktree cleanup, so nothing is lost. The branch (renamed or auto-generated) stays in your git history and your PR stays open.
If you only want to drop the worktree without exiting Friday, use git directly from your main checkout: git worktree list to see them, git worktree remove <path> to delete one.
What you'll see
- Two terminal windows running Friday, each with its own Dispatch, ThreadList, and current branch indicator.
git worktree listshows the sibling worktree alongside your main checkout.- The two sessions don't share threads or merge queues. A thread spawned in session A is invisible to session B.
- Per-thread worktrees (under
~/.friday/workspaces/...) are still created inside whichever session spawned them. The--wtworktree is the session's working directory; threads inside it nest their own worktrees the same way.
When not to use it
- You want to ship one feature faster. Use Work in parallel inside a single session instead. Multiple worktree sessions add coordination cost; multiple threads in one session don't.
- You want to experiment without a branch at all. See Cowboy mode.
- You want stacked PRs off one branch. See PR stack.
Read next
- Build a feature and open a PR: the single-session workflow each
--wtsession runs. - Work in parallel: one feature, multiple threads, one session.
- Worktrees: the underlying mechanism and full flag reference.
- Dispatch, threads, and subagents: the agent model.