lucy
The Minecraft server package manager.
Lucy: a package manager for Minecraft servers
A Go based command line tool that brings an npm style workflow to installing and managing Minecraft server mods and plugins.
What Lucy does
Lucy is a package manager for Minecraft servers written in Go, and it gives server operators an npm style experience for handling mods and plugins across several ecosystems. The README lists support for Fabric, Forge, Neoforge, Spigot and Paper plugins, and MCDReforged. Rather than downloading jars by hand and tracking dependencies in a spreadsheet, a user runs a few commands to declare what the server needs and let Lucy resolve the rest. The project is still under active development and the author marks it as incomplete, with APIs and behavior subject to change, so it is not yet recommended for production use. Two install paths exist: a Go install from the module path for a stable toolchain, and a Homebrew tap with the --HEAD flag for users who want the latest commit. The goal is plain: make server component management reproducible and scriptable instead of a manual file copy exercise. The README carries a warning that a DeepWiki summary of the project is stale, and the author invites interested users to join a QQ group or send an email to follow updates and contribute. Those notes set honest expectations about the project's early stage. By modeling the server as a manifest plus a lock file, Lucy makes a server setup something a team can commit to version control and rebuild identically on another machine, which is the same practice application developers already expect from package managers. By modeling the server as a manifest plus a lock file, Lucy makes a server setup something a team can commit to version control and rebuild identically on another machine, which is the same practice application developers already expect.
Core commands
The command set covers the full life cycle of a server setup. lucy init creates the manifest and lock file in the current directory and preserves any existing server, while lucy add appends a package and resolves dependencies, with flags to force past warnings or include optional upstream dependencies. lucy remove deletes a package and prunes the unused transitive dependencies from the lock file, which keeps the project lean. lucy install reads the lock file when it is current and falls back to the manifest when it is stale. Each add accepts a version such as stable or beta and a platform like fabric or forge, so a single command pins exactly what the operator intends. The force flag skips version, dependency, and platform warnings, while the optional flags toggle optional upstream dependencies. The planned but not yet implemented commands include doctor for environment diagnosis, export for config or client generation, and upgrade for moving installed packages forward. Global flags such as --debug, --log-file, --print-logs, --no-style, and --json-compact control logging and output formatting across all of these commands. Because the manifest and lock file are plain text, a server admin can review a proposed change in a pull request before it ever touches a running instance, which fits teams that review infrastructure as code. Because the manifest and lock file are plain text, a server admin can review a proposed change in a pull request before it ever touches a running instance, which fits teams that review infrastructure as code.
Status, search, and troubleshooting
Once a server is described, several inspection commands help operators understand and fix it. lucy status reports the detected game version, server core, platform, runtime activity, risk signals, and installed packages, with JSON and long output options for tooling. lucy search queries across data sources and can sort by relevance, downloads, or newest, while lucy info shows metadata, authors, and version history for a package. lucy tree prints the dependency tree and can probe a running server with the --live flag, and it accepts a depth limit, while lucy leaves lists packages with no dependents so the operator knows what is safe to remove. The lucy cache subcommand manages the local download cache and the slug to package ID mappings, with list and clear actions. When a mod causes crashes, lucy bisect runs a binary search over installed mods, letting the operator start a session, mark each midpoint as good or bad, check status, and reset when finished. These commands turn a messy server folder into something inspectable and recoverable without guesswork. The bisect workflow in particular saves hours that would otherwise go to removing mods one at a time and restarting the server after each change. The bisect workflow in particular saves hours that would otherwise go to removing mods one at a time and restarting the server after each change until the faulty one is isolated.
Editorial conclusion
Lucy is distributed under the Apache-2.0 license and is built in Go, with both a go install path and a Homebrew tap available to users.
Community notes