Metastack
A meta-repository workspace CLI. Orchestrates a fixed list of sibling git repos from a single workspace root.
metastack turns a directory into a workspace that owns and operates a known set of git repos. You declare which repos belong to the workspace in metastack.yaml; metastack handles cloning them, running git operations across all of them, executing arbitrary commands in each, and verifying the toolchain a contributor needs.
Why a workspace tool
Some products span several repos (a CLI, a daemon, an update server, a Homebrew tap). Operating them by hand means a lot of cd ../foo && git pull && cd ../bar && git pull. metastack formalizes the relationship between the repos so any contributor can clone the whole workspace, verify their tools, and run cross-cutting commands without remembering which repo lives where.
How it works
Each workspace has a metastack.yaml at its root. Two top-level keys:
repos:— the managed repos.namebecomes the directory underrepos/;urlis<owner>/<repo>forgh repo clone.checks:— toolsmetastack doctorverifies before you start working (e.g.gh,git,go,docker), each with an optionalmin_versionfloor.
Subcommands all read metastack.yaml and act on the listed repos. metastack pull runs git pull --ff-only in each; metastack status prints branch + ahead/behind + working-tree state per repo; metastack exec -- <cmd> runs an arbitrary shell command in each. The CLI walks up from the current directory to find metastack.yaml, so you can run any verb from anywhere inside the workspace.
paas-meta and metastack-meta use it to manage their respective sub-repos.
Where to go next
- Getting started — install, scaffold a workspace, add repos, verify your toolchain.
- CLI reference — every verb, with flags and behavior.
- Configuration — the
metastack.yamlschema and a worked example.