wspace is a small, git-native CLI that manages a multi-repo Wazoo workspace
without Git submodules. It keeps the working rules in one place and makes them
enforceable from the terminal.
Design principles:
- Thin over custom. Prefer plain
gitporcelain/plumbing and well-known directory conventions over bespoke state files. The workspace layout is encoded in a singlerepos.jsonmanifest. - Conservative mutation. Commands that write or move state (update,
worktree, env) refuse to touch dirty repositories, feature branches, missing
repos, or unmanaged checkouts.
updateonly fetches and fast-forwards clean default branches; it never resets, rebases, stashes, or rewrites history. - Machine-readable output.
check --jsonemits structured results for tools; plain output is for humans. - Exit code contract.
wspace checkexits0when the workspace is clean and1when any repository is dirty, diverged, missing, or otherwise not in sync.
wspace check— read-only baseline check. ReportsCLEAN,DIRTY,FEATURE_CLEAN,DIVERGED,UNKNOWN,MISSING, andUNMANAGEDstates.wspace init— clone missing repositories from the manifest. Prints a warning that fresh clones lack gitignored files and repo-specific setup.wspace update— fetch remotes and fast-forward only clean default branches.wspace worktree add <repo> <feature> [<commit-ish>]— create a git worktree underworktrees/<repo>/<feature>/, branching from the repo's default-branch baseline (origin/<default>) or an explicit<commit-ish>. Attaches an existing branch of the same name with a warning.wspace worktree list [--stale] [--json]— list worktrees across all repositories.--stalefilters to linked worktrees whose branch is fully merged into the default branch (or missing), i.e. safe removal candidates.wspace worktree remove <repo> <feature>— remove a worktree, then prune and tidy the now-emptyworktrees/<repo>/directory.wspace env sync— copy local environment files from a gitignoredsecrets/vault into checkouts and worktrees.wspace sync— alias forwspace init.wspace validate— validate the manifest without touching any repository.
Install from JSR as the wspace binary:
deno install -g --name wspace jsr:@wazoo/workspaceOr build a local binary:
deno task buildRequires a Deno runtime (v2+). The wspace binary has no runtime dependencies.
deno task ciRuns deno fmt --check, deno lint, deno check, and deno test (includes
integration tests against real local git repositories).