Initialize
mwt initScan the workspace and create `mwt.yaml` from real Git repos.
multi worktree
`mwt` gives independent repos a shared worktree workflow while keeping every repository, branch, merge, and failure mode visible.
$ mwt create feature-auth
created backend -> worktrees/feature-auth/backend
created frontend -> worktrees/feature-auth/frontend
created infra -> worktrees/feature-auth/infra
$ mwt status feature-auth
backend feature-auth clean +2/-0
frontend feature-auth dirty +1/-0
infra feature-auth clean +0/-0The model
Each source repository remains canonical. `mwt` records those repos in a local config file, creates real Git worktrees under a common directory, and runs standard Git commands inside each repo.
A multi-worktree name such as `feature-auth` becomes one branch per repository. The name is shared; the history is still independent.
workspace/
mwt.yaml
repos/
backend/
frontend/
infra/
worktrees/
feature-auth/
backend/
frontend/
infra/Config
`mwt init` discovers non-nested Git repositories and writes their relative paths, current branches, and remotes. `mwt sync` repeats that scan, adding new repos and removing entries whose directories are gone.
worktree_root: ./worktrees
base_branch: main
repos:
backend:
path: ./repos/backend
branch: main
remotes:
origin: git@github.com:org/backend.gitCommands
mwt initScan the workspace and create `mwt.yaml` from real Git repos.
mwt syncRefresh paths, branches, and remotes after repos are added or removed.
mwt clone git@github.com:org/workspace.gitClone a config repo, then initialize every repository it describes.
mwt fetch mainFetch every canonical repo and check each one out to a common branch.
mwt create feature-xCreate one real Git worktree per configured repository.
mwt status feature-xShow branch, clean state, ahead/behind counts, and short status.
mwt foreach feature-x -- go test ./...Execute the same command inside every named worktree.
mwt snapshot feature-xPrint the exact commit in each repo before a risky operation.
mwt merge feature-x --dry-runValidate all repos before merging. Cross-repo merges are not atomic.
One last thing
Create a repository for `mwt.yaml` and share it with the team. Use it to track all company repositories, the most important ones, or a single project that spans several repos.
After cloning the shared config, use `mwt clone URL [DIR]` to add repositories to the workspace. `mwt` syncs the config and checks out the base branch, so each person gets the same multi-repo map and can create parallel worktrees without losing the shared project shape.
$ git clone git@github.com:org/workspace-config.git
$ cd workspace-config
$ mwt clone git@github.com:org/backend.git repos/backend
$ mwt clone git@github.com:org/frontend.git repos/frontend
repos/
backend/
frontend/
infra/Install
Tagged releases publish archives, checksums, a changelog, and a Homebrew cask. The binary also includes a `version` command so you can check exactly what was installed.
$ brew tap towebuorg/tap
$ brew install --cask mwt
$ mwt version