Workspace manager for tracking, syncing, and developing many git projects across multiple machines.
One TOML registry, one daemon per machine, per-feature worktrees with explicit cross-machine metadata. Project pushes are a deliberate user action; the daemon never pushes branches behind your back.
curl -fsSL https://raw.githubusercontent.com/kuchmenko/workspace/main/install.sh | shOr build from source:
git clone git@github.com:kuchmenko/workspace.git
cd workspace
just install # binary lands at ~/.local/bin/wsmkdir ~/dev && cd ~/dev
ws auth login # GitHub device flow (or `--pat` for a token)
ws setup # TUI: pick repos, organize into groups
ws sync # clone everything, ff-pull main worktrees
ws daemon register ~/dev # add this workspace to the daemon's registry
ws daemon start # background reconciler — keeps things freshFor per-feature work:
ws worktree add myapp feat/auth-refactor # new worktree on a literal branch
# (edit, commit)
ws worktree push myapp feat/auth-refactor # explicit publish + metadata stampFor everyday navigation, run bare ws in a terminal — it opens a
TUI launcher across every workspace + worktree the daemon knows
about. See Agent TUI.
- Getting started — install, first-time setup, adding more repos, authentication.
- Worktrees —
ws worktree add/list/push/rm, branch naming, cross-machine handoff, recovering frombranch-orphanand re-registering legacywt/<machine>/*. - Daemon and sync — what each reconciler
tick does, conflict catalog,
ws doctor, multi-machine flow. - Aliases — short shell aliases for projects and groups.
- Agent TUI — bare
wsopens a Bubble Tea launcher; keys, search, worktree creation, Claude sessions. - Architecture — internals: data model, on-disk layout, daemon contract, conflict invariants.
- Command reference — every command, every flag.
- Auto-push project branches. Pushes are explicit
(
ws worktree pushor plaingit push). - Run
merge,rebase,reset,force, orpushinside a project repo from the daemon. The worst the daemon does is record a conflict and stop. - Synthesize a
wt/<machine>/<topic>namespace. Branches use repo-native names from the first commit; pre-0.7.0wt/<machine>/*checkouts continue to function and can be re-registered viaws worktree add.
Pre-1.0; breaking changes happen between minor versions when the design pressure is real. Single-user tool by design — the multi-machine sync model assumes one human, several machines.