A Rust TUI for checking and updating Minecraft mods from official host metadata, with a focus on Modrinth and optional CurseForge support.
mod-updater runs on Linux, macOS, and Windows.
- Scans a configured Minecraft
modsdirectory for.jarfiles - Resolves updates against Modrinth using official API metadata
- Optionally uses CurseForge when an API key is configured
- Uses strict Minecraft-version matching logic
- Verifies downloaded files before keeping them
- Provides a keyboard-driven TUI for reviewing and applying updates
- Network access
- Rust toolchain (
cargo,rustc)
Install Rust with rustup if needed.
Clone and install from source:
git clone https://github.com/TheFirstHero6/Minecraft-Mod-Updater
cd mod-updater
cargo install --path .Then run:
mod-updatergit clone https://github.com/TheFirstHero6/Minecraft-Mod-Updater
cd mod-updater
cargo build --releaseBinary output:
- Linux/macOS:
target/release/mod-updater - Windows:
target/release/mod-updater.exe
By default, the app looks for mod-updater/config.toml in your platform config directory:
- Linux:
~/.config/mod-updater/config.toml - macOS:
~/Library/Application Support/mod-updater/config.toml(platform-resolved) - Windows:
%APPDATA%\\mod-updater\\config.toml(platform-resolved)
Example config:
mods_dir = "/absolute/path/to/your/minecraft/mods"
minecraft_version = "1.21.1"
loaders = ["fabric"]
user_agent = "yourname/mod-updater/0.1.0 (you@example.com)"
# Optional
curseforge_api_key = ""
concurrency = 8
[download]
backup = true
dry_run = false
verify_after_download = truemods_dir- Required
- Must point to the exact
modsdirectory for the Minecraft instance you are updating
minecraft_version- Defaults to
1.21.1if omitted - Should be set to the exact Minecraft version your instance is running, for example
1.21.11
- Defaults to
loaders- Required
- Valid values include
fabric,forge,neoforge, andquilt
user_agent- Strongly recommended for Modrinth
- Example:
yourname/mod-updater/0.1.0 (you@example.com)
curseforge_api_key- Optional
- Only needed if you want CurseForge fallback support
[download].verify_after_download- Recommended to keep enabled
- Rejects incompatible downloads and restores from backup when possible
These can be used in addition to config:
MOD_UPDATER_MODS_DIR(fallback formods_dir)CURSEFORGE_API_KEY(fallback forcurseforge_api_key)MOD_UPDATER_ASCII(optional; force ASCII spinner/icons in TUI)
Basic run:
mod-updaterOverride config values from the command line:
mod-updater \
--mods-dir /path/to/mods \
--minecraft-version 1.21.11 \
--loaders fabric \
--user-agent "yourname/mod-updater/0.1.0 (you@example.com)"Available CLI flags:
--config--mods-dir--minecraft-version--loaders--user-agent--curseforge-api-key
j/Down: move selection downk/Up: move selection upd: download update for selected rowr: refresh and rescan?: toggle helpq/Esc: quit
For best results:
- Set
minecraft_versionto the exact version your instance runs - Set the correct loader in
loaders - Keep
verify_after_download = true - Use a proper
user_agentso Modrinth requests are well-formed
Run the app in debug:
cargo runRun tests:
cargo testRun lint checks:
cargo clippy --all-targets