multiversectl GitHub

multiversectl

Run your whole multi-repository stack as many times as you need, side by side, on one machine. Every copy gets its own branch, its own containers and its own hostnames.

Install Quick start GitHub

Apache 2.0. One binary for Linux and macOS, no daemon of its own.

two universes, one machine
$ multiversectl ls
universe 1  ·  acme-u1  ·  5 running
APP  BRANCH      URL
api  feat/login  http://api-u1.10-0-0-5.traefik.me
web  feat/login  http://app-u1.10-0-0-5.traefik.me

universe 2  ·  acme-u2  ·  5 running
APP  BRANCH      URL
api  main        http://api-u2.10-0-0-5.traefik.me
web  main        http://app-u2.10-0-0-5.traefik.me

What it is

multiversectl runs several complete copies of a multi-repository project, called universes, on one machine — numbered, or named after the branch they check out — so each branch or agent gets a whole environment without port collisions. It namespaces instead of virtualizing: one git worktree per repository, one container-runtime project per app, and one shared reverse proxy that routes by hostname. A new universe is a worktree and a compose up, seconds on the daemon and image cache you already use.

One workspace fanning out into three universes behind one proxy A workspace manifest on top. Three universes below it, numbered 1 to 3, each with its own app and api hostnames. A single shared reverse proxy at the bottom routes every hostname to its universe. workspace multiverse.yaml universe 1 worktrees containers app-u1 api-u1 no host ports universe 2 worktrees containers app-u2 api-u2 no host ports universe 3 worktrees containers app-u3 api-u3 no host ports one shared reverse proxy routes by hostname: *-uN.<domain>
One manifest, any number of universes, one proxy.

Where to go