// minecraft instance manager
/$$
| $$
/$$$$$$ | $$ /$$$$$$
/$$__ $$| $$ /$$__ $$
| $$$$$$$$| $$| $$ \ $$
| $$_____/| $$| $$ | $$
| $$$$$$$| $$| $$$$$$/
\_______/|__/ \______/
Every setup gets
its own folder.
Most launchers don't manage modpacks — vanilla, Legacy Launcher, Shiginima just point at one .minecraft. Prism, PolyMC, MultiMC use profiles. Elo works at the content layer: points your .minecraft at different mod sets. Switching is a relink, not a multi-GB copy. No launcher lock-in.
install
curl -fsSL https://github.com/3nderXP/elo/releases/latest/download/install.sh | bash
Needs bash, curl and jq. Never asks for sudo, never touches your package manager, and never writes to .minecraft before you tell it to.
Minecraft instance manager
Active instance: cool-mine
elo
↑↓ move↵ selectesc back
This is the real menu, and the real output it produces. Type elo, press enter, and drive it with the arrow keys.
A launcher manages the game. Elo manages what is inside the folder.
Two different jobs. Elo never installs Java, picks versions, or manages launcher profiles. It works on the content your launcher already reads.
- Works with your launcher
- Most launchers don't manage modpacks — vanilla, Legacy Launcher, Shiginima just point at one folder. Prism, PolyMC, MultiMC use profiles. Elo works at the content layer, so you keep your launcher and just swap folder contents. Your
.minecraftstays put; only folders inside become links. - Owns content, nothing else
- Mods, resource packs, shaders, config and saves. Java, Minecraft versions, accounts and the game itself stay entirely your launcher's business.
- Switching is a relink
- Changing setups moves five symlinks. No copying, no duplicated worlds, no waiting on gigabytes to finish duplicating.
- Knows if a file is still original
- Every managed file is verified by SHA-512, so a mod you edited by hand is reported as modified instead of being silently replaced.
- Refuses instead of overwriting
- A name collision, an unknown symlink or a mismatched hash stops the command and tells you what it found.
- Same engine, two front-ends
- The guided menu and the command line call the same handlers, with the same checks and the same exit codes.
Or script it
The menu isn't a separate product. Every entry is a real command, so anything you click also fits in a cron, modpack script, or Makefile.
$ elo init --minecraft-path "$HOME/.minecraft"
$ elo instances create cool-mine --version 1.21.1 --loader fabric
$ elo addons install cool-mine sodium
$ elo instances activate cool-mine
$ elo status
Commands that change something ask first. --yes is the deliberate opt-out for automation, and --dry-run shows you the whole plan before a single file is written.
Relink, don't copy
Elo keeps every setup under ~/.elo. The active one appears inside your .minecraft via links Elo created and owns.
~/.elo/instances/
~/.elo/
├── config.conf
├── state.conf
├── backups/original/
└── instances/
└── cool-mine/
├── instance.conf
├── addons.conf
├── mods/
├── resourcepacks/
├── shaderpacks/
└── config/
~/.minecraft/
~/.minecraft/
├── mods → cool-mine/mods
├── resourcepacks → cool-mine/…
├── shaderpacks → cool-mine/…
├── config → cool-mine/…
└── saves → cool-mine/…
# originals moved once to
# backups/original/
- createPick a name, a Minecraft version and a loader: fabric, neoforge, forge, quilt or vanilla. Or import a
.mrpackyou already have. - activateSafe mode moves your real folders into the backup once, then puts links in their place.
- switchChanging the active instance only moves links. Nothing is copied between instances.
- resetRemoves Elo's links and hands your originals back. A link that does not match what Elo created is never deleted.
Your Minecraft folder is your data
Elo never destroys what it can't put back. Every destructive path has a reversible counterpart, and the reversible one runs by default.
- Your original folders are moved aside once, and never overwritten.
- Symlinks Elo does not own are reported, never removed.
- Every managed addon is verified by SHA-512 before it is reused and before it is removed.
- A file that already exists with a different hash stops the install as a collision, instead of being overwritten.
- Removing a modified file requires you to name it explicitly with
--file. - Commands that change something ask first.
--yesis the only way past that, and you have to type it. uninstall --purgerefuses paths like/and$HOME.- Uninstalling keeps
~/.eloby default, so your instances survive.
Minecraft: ~/.minecraft Active instance: cool-mine FOLDER LINK ORIGINAL STATE mods cool-mine absent ok resourcepacks cool-mine absent ok shaderpacks cool-mine absent ok config cool-mine backed_up ok saves cool-mine backed_up ok
Five managed folders, each one accounted for. backed_up means your original data is still in ~/.elo/backups/original, ready for elo instances reset. The interactive menu renders the same table through Gum, where a folder can also come back as broken link, divergent link, missing link, instance mismatch, external symlink, real directory or unmanaged.
Bring your own Minecraft folder
Elo doesn't install Minecraft, Java, loaders, or launcher profiles. Set up the version and loader you want, then point Elo at it.
- systems
- Linux and macOS. Native Windows is not supported.
- dependencies
bashcurljqtarsha256sumorshasum. Gum is downloaded privately by the installer and removed with Elo.- install path
~/.local/share/elofor releases,~/.local/bin/elofor the command.- minecraft — linux
~/.minecraft- minecraft — macos
~/Library/Application Support/minecraft- providers
- Modrinth, the only one so far. One
.minecraftdirectory at a time.
If ~/.local/bin is not in your PATH, add export PATH="$HOME/.local/bin:$PATH" to your shell configuration, then run elo --help to confirm.
Quick answers
Do I have to replace my launcher?
No, and that is the point. Most launchers don't manage modpacks — the vanilla launcher, Legacy Launcher, Shiginima and others just point at one .minecraft. Prism, PolyMC and MultiMC do, but via profiles. Elo works at the content layer: it points your existing .minecraft at different mod sets, so switching between a heavy modpack and a clean world is a relink, not a multi-GB copy. No launcher lock-in, no profile migration.
What happens to the mods folder I already have?
On first activation in safe mode, your real folders are moved to ~/.elo/backups/original and replaced with links that Elo owns. The backup happens at most once and is never overwritten. elo instances reset puts everything back.
A file with that name already exists. Will it be overwritten?
No. If the existing file has exactly the expected name and SHA-512 hash, Elo reuses and records it. Otherwise the install stops with collision. Run elo addons list <instance> and decide explicitly.
Something looks wrong. Where do I start?
Run elo status. It reports missing, broken, divergent and externally managed links. Use elo instances reset only after reading that diagnosis.
Can I use it in scripts?
Yes. Commands are grouped and stable, --dry-run previews any change and --yes enables deliberate automation. Output is human-oriented; there is no JSON mode.
Does it need root?
No. The installer never uses sudo and never changes your system package manager. Update and uninstall work without privileges.
Point at your folder and go
install
curl -fsSL https://github.com/3nderXP/elo/releases/latest/download/install.sh | bash
Then run elo init --minecraft-path "$HOME/.minecraft" followed by elo. On macOS use "$HOME/Library/Application Support/minecraft".