Skip to main content

Modsmith

Modpacks from your terminal: find, install and update Minecraft modpacks, mods, resource packs and shaders for the official launcher.

CI PyPI Python 3.12+ Alpha MIT license

Website · Documentation · English · 简体中文


Modsmith prepares the game files and adds an installation to the official Minecraft launcher. It does not sign in or start the game: you choose the installation in the launcher and play.

Modpacks in one command

Install a pack from Modrinth, CurseForge or a file, with its mod loader and Minecraft.

Add what you like

Add mods, resource packs and shaders, with the mods they need.

Updates that keep your changes

Update a pack and what you added, and see what changed in each release.

See before it happens

Every change is shown first and waits for your yes. --dry-run only shows it.

Ready in the launcher

Each instance gets its own installation, with the pack's icon, in the official launcher.

Bring your own

Take over an installation you made in the launcher, and the mods you put in it.

Installation

Modsmith needs Python 3.12 or newer. Install it from PyPI as a tool with uv:

uv tool install modsmith-cli

Or with pipx:

pipx install modsmith-cli

Then check that it works:

modsmith --version

Coming from 0.1.0? It was installed under another name, so remove it first with uv tool uninstall modsmith-app or pipx uninstall modsmith-app. Your instances and settings stay where they are.

Quick start

Find a modpack, install it, and play it from the official launcher:

modsmith search "fabulously optimized" --type modpack
modsmith install fabulously-optimized --name fo

Add a mod and a shader pack, then see what the instance holds:

modsmith add fo iris
modsmith add fo complementary-reimagined --type shader
modsmith show fo

Keep it up to date:

modsmith update fo

When you have only one instance, you can leave its name out.

Commands

Command What it does
install Install a modpack as a new instance
create Start an empty instance, with or without a mod loader
import Manage an installation you made in the official launcher
list List your instances
show List the mods, resource packs and shaders in an instance
add / remove Add projects with what they need, or remove them
enable / disable Turn files on or off without removing them
pin / unpin Keep a project at its release, or let it update
adopt Recognise files you put in an instance yourself
update Update the pack and what you added
move / delete Rename, move or delete an instance
search / info Find projects and look at their releases
loaders List a mod loader's versions
config Show and change settings

Every command explains itself with --help, examples included.

Recipes

Use CurseForge

CurseForge needs an API key, which you can get for free from the CurseForge console. Save it once:

modsmith config set curseforge_api_key '<key>'

In PowerShell, keep the single quotes: $ starts a variable inside double quotes. Then name CurseForge projects with curseforge::

modsmith install curseforge:all-the-mods-9 --name atm9
modsmith add atm9 curseforge:jei
Install files that must be downloaded by hand

Some CurseForge authors block downloads by other tools. Modsmith lists those files with a link to each. Download them into one folder, then run the same command again:

modsmith install curseforge:all-the-mods-9 --name atm9 --from Downloads/atm9-files
Choose optional files

When a pack has optional files, Modsmith asks which ones you want. To decide on the command line instead:

modsmith install fabulously-optimized --optional shaders --optional zoom
modsmith install fabulously-optimized --all-optional

Your choice is remembered, and update keeps it.

Start from nothing
modsmith loaders fabric 1.21.1
modsmith create survival --minecraft 1.21.1 --loader fabric
modsmith add survival sodium lithium

Without --loader-version, the recommended version is used.

Take over an existing installation

Give the installation its own game directory in the official launcher, start it once, then:

modsmith import "My Fabric world"

Modsmith reads its Minecraft and loader versions, and recognises the mods in it so they can be updated.

Use it in scripts

Without a terminal, Modsmith never asks: it stops and tells you to add --yes. Deleting needs --force as well. For more than that, use the Modsmith Python library directly.

Where things go

What Where
Instances Your user data folder, under Modsmith/instances. Change it with modsmith config set instances_dir <folder>
Settings config.toml in your user config folder. modsmith config path prints it
Launcher installations The official launcher's launcher_profiles.json, one per instance

Set MODSMITH_HOME to keep everything in one folder instead.

Part of Modsmith

The command line is built on the Python library, which does the real work: platforms, modpack formats, mod loaders and instances.

What it is Code
Command line Modpacks from your terminal ModsmithMC/modsmith-cli
Python library Build your own modpack tools ModsmithMC/modsmith-python
Website The project's home ModsmithMC/modsmithmc.github.io

License

Modsmith is released under the MIT License. It is not affiliated with Mojang, Microsoft, Modrinth or CurseForge.

Metadata

Release files for modsmith-cli 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for modsmith-cli 0.1.2
File Size Uploaded Provenance Actions
modsmith_cli-0.1.2.tar.gz 178.7 kB With provenance Details for modsmith_cli-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for modsmith-cli 0.1.2
File Interpreter ABI Platform Actions
modsmith_cli-0.1.2-py3-none-any.whl Python 3 none any Details for modsmith_cli-0.1.2-py3-none-any.whl

Total release size: 231.8 kB

Release files / modsmith_cli-0.1.2.tar.gz

Download URL modsmith_cli-0.1.2.tar.gz
Size 178.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9a03c07a0df6cb7000b3bd0cd0928eb18a873237d3ad277b08db203bd8ebda1b
BLAKE2b-256 checksum
How to use checksums
3c9fd8356b9f0edfaa24a7d55c767dd42b964ec836c6188a04d71786896ef223
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / modsmith_cli-0.1.2-py3-none-any.whl

Download URL modsmith_cli-0.1.2-py3-none-any.whl
Size 53.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
572e560a5f0fbb3118d8e703ee4721c66970c11f6d79abe6a1e57988fcc4b1b2
BLAKE2b-256 checksum
How to use checksums
b9fa575af45935f9eb39cd516e7a2c9c769857bebc2c0544b44570c6c5756934
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for modsmith-cli 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for modsmith_cli-0.1.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page