Fast and multi-source CLI program for managing Minecraft mods and modpacks from Modrinth, CurseForge, and GitHub Releases
Fast and multi-source CLI program for managing Minecraft mods and modpacks from Modrinth, CurseForge, and GitHub Releases
Check out ferium's sister projects ferinth and furse. They are Rust wrappers for the official Modrinth and CurseForge APIs respectively.
Ferium is a fast and feature rich CLI program for downloading and updating Minecraft mods from Modrinth, CurseForge, and GitHub Releases, and modpacks from Modrinth and CurseForge. Simply specify the mods you use, and in just one command you can download the latest compatible version of all the mods you configured.
Use the CLI to easily automate your modding experience
Download mods from multiple sources, namely Modrinth, CurseForge, and GitHub Releases
Download modpacks from multiple sources, namely Modrinth and CurseForge
Your results may vary depending on your internet connection.
It downloads my modpack Kupfur with 79 mods in 15 seconds:
https://github.com/gorilla-devs/ferium/assets/60034030/cfe2f0aa-3c10-41ca-b223-367925309ea9
It downloads MMTP, a very large modpack with around 400 mods, in just under a minute:
https://github.com/gorilla-devs/ferium/assets/60034030/857e8d27-372d-4cdd-90af-b0d77cb7e90c
Upgrade all your mods to the latest compatible version in one command, ferium upgrade
Download and install the latest version of your modpack in one command, ferium modpack upgrade
Create multiple profiles and configure different mod loaders, Minecraft versions, output directories, and mods for each
Ferium executables from GitHub Releases do not require any external dependencies at runtime.
If you compile from source on Linux, using GCC to build will result in binaries that require GCC to be available at runtime.
On Linux, the regular versions require some sort of desktop environment to be available that offers an XDG Desktop Portal to show the folder picker.
The nogui versions do not need this as they won't have a GUI folder picker, making these variants suitable for server use.
[!IMPORTANT] Linux users! Use the
noguiversions (or compile with--no-default-features) if you do not have a desktop environment (like GNOME, KDE, XFCE, etc.)
Have knowledge/experience maintaining packages? Consider helping with adding and maintaining ferium for your favourite package manager.
Installation method GUI file dialogue No GUI Install pre-built binaries from GitHub Releases ferium-gui-bin ferium-bin Build from source at the latest tag ferium-gui ferium Build from source using the latest commit ferium-gui-git ferium-git[!NOTE] From-source builds will install the Rust toolchain and GCC.
brew install ferium
winget install GorillaDevs.Ferium
scoop bucket add games
scoop install ferium
pacstall -I ferium-bin
[!NOTE] See the package page for installation instructions:
https://search.nixos.org/packages?show=ferium&channel=unstable
Available on LoaTcHi's overlay
eselect repository enable loatchi
emaint sync -r loatchi
emerge -av ferium
xbps-install ferium
cargo install --locked ferium
[!TIP] Use a tool like cargo-update to keep ferium updated to the latest version!
[!IMPORTANT] You will have to manually download and install every time there is a new update.
~/bin[!NOTE] A lot of ferium's backend is implemented in libium.
It deals with things such as the config, adding mod(pack)s, upgrading, file pickers, etc.
Ferium stores profile and modpack information in its config file. By default, this is located at
$XDG_CONFIG_HOME/ferium/config.json or ~/.config/ferium/config.json on Linux.%APPDATA%/ferium/config/config.json on Windows.~/.config/ferium/config.json on macOS.You can change this in 2 ways; by setting the FERIUM_CONFIG_FILE environment variable,
or the --config-file global flag. The flag takes precedence.
[!CAUTION] Be mindful of syntax when manually editing the config file
You can also set a custom CurseForge API key or GitHub personal access token using the CURSEFORGE_API_KEY and GITHUB_TOKEN environment variables, or the --curseforge_api_key and --github-token global flags respectively.
Again, the flags take precedence.
You can either have your own set of mods in what is called a 'profile', or install a modpack.
ferium profile create and entering the details for your profile.ferium add.ferium upgrade.ferium modpack add <project_id>.ferium modpack upgrade to download and install the latest version of the modpack.ferium scan
This command scans a directory with mods, and attempts to add them to your profile.
The directory defaults to your profile's output directory. Some mods are available on both Modrinth and CurseForge; ferium will prefer Modrinth by default, but you can choose CurseForge instead using the --platform flag.
As long as you ensure the mods in the directory match the configured mod loader and Minecraft version, they should all add properly. Some mods might require some additional tuning. You can also bypass the compatibility checks using the --force flag.
[!TIP] You can specify multiple identifiers to add multiple mods at once
ferium add project_id
project_id is the slug or project ID of the mod. (e.g. Sodium has the slug sodium and project ID AANobbMI). You can find the slug in the website URL (modrinth.com/mod/<slug>), and the project ID at the bottom of the left sidebar under 'Technical information'.
So to add Sodium, you can run ferium add sodium or ferium add AANobbMI.
ferium add project_id
project_id is the project ID of the mod. (e.g. Terralith has the project id 513688). You can find the project id at the top of the right sidebar under 'About Project'.
So to add Terralith, you should run ferium add 513688.
ferium add owner/name
owner is the username of the owner of the repository and name is the name of the repository, both are case-insensitive (e.g. Sodium's repository has the id CaffeineMC/sodium). You can find these at the top left of the repository's page.
So to add Sodium, you should run ferium add CaffeineMC/sodium.
[!IMPORTANT] The GitHub repository needs to upload JAR files to their Releases for ferium to download, or else it will refuse to be added.
If you want to use files that are not downloadable by ferium, place them in a subfolder called user in the output directory. Files here will be copied to the output directory when upgrading.
[!NOTE] Profiles using Quilt will not copy their user mods, this is because Quilt automatically loads mods from nested directories (such as the user folder) since version
0.18.1-beta.3.
ferium modpack add project_id
project_id is the slug or project ID of the modpack. (e.g. Fabulously Optimized has the slug fabulously-optimized and project ID 1KVo5zza). You can find the slug in the website URL (modrinth.com/modpack/<slug>), and the project id at the bottom of the left sidebar under 'Technical information'.
So to add Fabulously Optimized, you can run ferium modpack add fabulously-optimized or ferium modpack add 1KVo5zza.
ferium modpack add project_id
project_id is the project ID of the modpack. (e.g. Fabulously Optimized has the project ID 396246). You can find the project ID at the top of the right sidebar under 'About Project'.
So to add Fabulously Optimized, you should run ferium modpack add 396246.
[!WARNING] If your output directory is not empty when setting it, ferium will offer to create a backup.
Please do so if it contains any files you would like to keep.
Now after adding all your mods, run ferium upgrade to download all of them to your output directory.
This defaults to .minecraft/mods, where .minecraft is the default Minecraft resources directory. You don't need to worry about this if you play with Mojang's launcher and use the default resources directory.
You can choose to pick a custom output directory during profile creation or change it later.
If ferium fails to download a mod,
No open issues yet, or sync has not completed.