Workset is a Go CLI for managing multi-repo workspaces with linked Git worktrees by default. It captures intent ("these repos move together") and keeps multi-repo work safe, explicit, and predictable. It also includes a Wails desktop app in wails-ui/workset.
- Workspaces first: treat related repos as a single unit of work.
- Linked worktrees by default: branch work happens in isolated directories without duplicating repos.
- Repo defaults: remote + default branch come from aliases or global defaults.
- Templates: reusable repo sets that expand into workspace config.
- Safe defaults: no destructive actions without explicit flags.
- Desktop app: GUI for workspace management, terminals, and GitHub workflows.
Workset is in active development. Current commands focus on workspace creation, repo add, status, and groups/templates. Branch/worktree workflows are next.
Warning
This project is under active development; interfaces and behavior may change without notice.
Install (recommended):
brew tap strantalis/homebrew-tap
brew install worksetUpgrade (Homebrew):
brew update
brew upgrade --cask worksetInstall (npm):
npm install -g @strantalis/workset@latestAlternative (Go install):
go install github.com/strantalis/workset/cmd/workset@latestCreate a workspace and add repos:
workset new demo
workset repo add git@github.com:your/org-repo.git -w demo
workset status -w demoTemplates:
workset group create platform
workset group add platform repo-alias
workset group apply platform -w demoSessions (tmux/screen/exec):
workset session start demo -- zsh
workset session attach demo
workset session show demo
workset session stop demo- Workspace: a directory with
workset.yamland.workset/state. - Repo sources: local paths stay put; URL clones land in
~/.workset/repos(configurable). - Worktrees: worktrees live under
<workspace>/<repo>by default. - Repo defaults: aliases and global defaults supply the remote + default branch.
- Templates: global repo sets applied into a workspace.
Docs are built with MkDocs + Material. The site config is mkdocs.yml, markdown content lives in docs/, and the published site is workset.dev (see docs/desktop-app.md and docs/architecture/terminal.md for the GUI and terminal internals).
Local dev (requires uv):
make docs-serve- Branch create/checkout + worktree management
- Fetch/pull/exec across repos
- Scoped status and JSON output
