EML AdminTool v2.3.0 and EML Lib v2.1.0: Profiles are here!
Today, we are releasing EML AdminTool v2.3.0 and EML Lib v2.1.0. Both updates share a common headline: full support for Profiles — easily the most requested feature since EML v2.0.0 was released.
What are Profiles?
A Profile is an independent Minecraft instance, with its own files, modloader, version, server IP and port. Think of it as running several completely separate Minecraft setups from a single launcher: one profile for your vanilla survival server, another for a modded experience, yet another for a private beta — all managed from the same EML AdminTool dashboard, all reachable from the same launcher.
This feature has been at the top of the community wishlist for a long time. AdminTool v2.2.0 introduced the foundations back in March, including the automated migration engine and the default profile UI. Today, the system is fully operational.
EML AdminTool v2.3.0
Full profile management
Admins can now create, rename and delete profiles directly from the dashboard. Each profile holds its own:
- Server IP and port
- Modloader and Minecraft version
- File set (managed through Files Updater)
Per-user access control
Profiles ship with a permission system: from the user management panel, admin can assign each user access to one or more specific profiles. A user without permission to a profile cannot manage its files.
Files Updater: per-profile uploads
The Files Updater page now exposes a profile selector. Every file upload is scoped to a specific profile, keeping each instance’s file tree completely isolated.
New /api/profiles endpoint
A new public endpoint exposes the list of profiles to the launcher, which EML Lib v2.1.0 now consumes directly.
Security fix in the upload pipeline
This release also patches a critical vulnerability in the file upload process that could have allowed unauthenticated requests to write files to the server. If you are running a previous version of AdminTool, upgrading is strongly recommended.
How to upgrade
Navigate to the Settings tab in your dashboard and click Run update. The migration scripts will automatically update your database schema to support the new profile structure. No data will be lost.
EML Lib v2.1.0
Fetching profiles
const profiles = await new Profiles(EML_ADMINTOOL_URL).getProfiles() Profiles.getProfiles() retrieves the list of available profiles from your AdminTool instance. You can then present them to the user and pass the chosen one to the launcher config.
Launching with a specific profile
const config: Config = {
root: './launcher',
profile: selectedProfile
// ...
} The new Config.profile field tells EML Lib which instance to target when checking files, selecting the modloader and connecting to the server.
Storage modes: isolated vs shared
When using Profiles, you can control how game files are stored on the user’s machine:
isolated— each profile gets its own directory, fully separated from the others. Ideal when profiles use different mods or Minecraft versions.shared— all profiles share the same base directory. It reduces disk usage by sharing common files across profiles, but requires to disable the cleaner to prevent accidental deletion of shared files.
Deprecations and fixes
Config.serverIdis deprecated in favor ofConfig.root, which better reflects its purpose and avoids confusion with the new profile system.Config.cleaning.cleanis deprecated in favor ofConfig.cleaning.enabledfor clarity.- The cleaner now works correctly under all conditions where it previously failed silently.
- The downloader now validates file paths to prevent directory traversal attacks.
Full release notes are available on GitHub: EML AdminTool v2.3.0 — EML Lib v2.1.0