multiversectl GitHub

Paths and state

What multiversectl writes, where, and which files it generates.

What is written where

PathWhat 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>.ymlGenerated on up: proxy labels, the proxy network, and dropped published ports.
<root>/universes/<universe>/.multiverse-overlay-<app>.ymlWritten from the app's inline overlay:, if it has one.
~/.config/multiversectl/config.yamlThe 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

  1. Worktrees share one object storeEach universe is a git worktree of every repository, so ten universes cost working files, not ten clones.
  2. One runtime project per app, per universeContainers, networks and volumes are namespaced by the runtime itself, so databases and caches never leak between universes.
  3. Routing by hostname, not by portNothing publishes host ports. One shared reverse proxy sends app-u3 and api-u3 to universe 3.
  4. One manifest, versionedThe apiVersion field lets the format evolve without breaking workspaces already written.