Paths and state
What multiversectl writes, where, and which files it generates.
What is written where
| Path | What it is |
|---|---|
<root>/<repo>/ | The shared clone of each repository (set dir to rename it). |
<root>/universes/<universe>/ | A universe: one worktree per repository, plus its state file universe.yaml. |
<root>/universes/<universe>/.multiverse-routes-<app>.yml | Generated on up: proxy labels, the proxy network, and dropped published ports. |
<root>/universes/<universe>/.multiverse-overlay-<app>.yml | Written from the app's inline overlay:, if it has one. |
~/.config/multiversectl/config.yaml | The saved workspaces (root and manifest path each) and which is current (under $XDG_CONFIG_HOME if set). |
The generated files are rewritten on every up; edit the manifest or the compose files, not them.
How it works
- Worktrees share one object storeEach universe is a git worktree of every repository, so ten universes cost working files, not ten clones.
- One runtime project per app, per universeContainers, networks and volumes are namespaced by the runtime itself, so databases and caches never leak between universes.
- Routing by hostname, not by portNothing publishes host ports. One shared reverse proxy sends
app-u3andapi-u3to universe 3. - One manifest, versionedThe
apiVersionfield lets the format evolve without breaking workspaces already written.