Important
This project is under active development and incomplete. Everything may change. Contact 4rcadia.0@gmail.com or join the QQ group to contribute or stay updated.
⭐️ If you like this project, star the repo!
Declare the mods, plugins, and server cores you want. Lucy resolves exact versions and dependencies, writes a lock file, and keeps your managed scope in sync. Point it at an existing directory and it picks up from what's already there — or start fresh, either way.
cd your-server
lucy init # Set up Lucy in this directory
lucy add fabric/lithium@latest # Resolve exact version + dependencies
lucy install # Sync managed scope from the lock file- Declare packages in the manifest. Lucy resolves exact versions and checksums.
lucy installfetches and places them. lucy initdiscovers your runtime, platform, and installed packages, then asks what to manage. Everything else stays untouched.- Lucy builds a graph of your runtime — Fabric, Forge, MCDR, Paper, Velocity — mapping roles, capabilities, and risk levels. This graph powers
lucy status, init discovery, and compatibility resolution.
Warning
Do not install before the first beta unless you plan to test or contribute. Data loss is your responsibility.
go install github.com/mclucy/lucy@latestmkdir my-server && cd my-server
lucy init # Take over this directory
lucy add fabric/fabric-api@latest # Add a mod — dependencies resolve automatically
lucy status # See what's detected
lucy install # Sync managed packages from the lock fileProbe the directory, discover the server environment, and create state files.
lucy init
lucy init --yes --game-version 1.21.4
lucy init --conflict abortCreates lucy.yaml and lucy-lock.yaml in the project root.
| Flag | Description |
|---|---|
-y, --yes |
Skip prompts, accept defaults |
--game-version |
Game version for non-interactive init (default: 1.21) |
-c, --conflict |
preserve (default), abort, or overwrite |
Add mods, plugins, or server cores to the manifest. Lucy resolves exact versions and rewrites the lock file.
lucy add fabric-api
lucy add fabric/lithium@latest
lucy add mcdr/example-plugin@compatible| Flag | Description |
|---|---|
-f, --force |
Skip version, dependency, and platform warnings |
--with-optional |
Include optional upstream dependencies |
--no-optional |
Skip optional dependencies (default) |
Remove packages from the manifest. Prunes unused transitive dependencies from the lock.
lucy remove fabric/lithiumApply the lock file to the managed runtime. Uses exact lock data when current, falls back to manifest intent when stale.
lucy installSearch across sources with filtering and sorting.
lucy search fabric/carpet
lucy search carpet --source modrinth --index downloads --platform fabric| Flag | Description |
|---|---|
-i, --index |
Sort: relevance, downloads, newest |
-c, --client |
Include client-only mods |
-s, --source |
Restrict source: modrinth, curseforge, github, mcdr |
--platform |
Filter: fabric, forge, neoforge, bukkit |
-l, --long |
Show full output |
--json |
Print raw JSON |
Display what Lucy detects in the current directory: game version, server core, platform, topology, runtime activity, risk signals, and installed packages.
lucy status
lucy status --json --longGet metadata, description, authors, and version history for a package.
lucy info fabric/fabric-api@latest --long| Flag | Description |
|---|---|
-s, --source |
Specify source |
-l, --long |
Full output |
--json |
Raw JSON |
Display the dependency tree.
lucy tree --live --depth 2| Flag | Description |
|---|---|
--live |
Probe running server instead of lock file |
--depth |
Limit depth (0 = unlimited) |
--json |
Raw JSON |
List packages with no dependents. Use this to find what's safe to remove.
lucy leaves --live| Flag | Description |
|---|---|
--live |
Probe running server instead of lock file |
--json |
Raw JSON |
lucy cache ls # List cached downloads
lucy cache clear # Clear all cached downloads
lucy cache slugs ls # List slug-to-package-ID mappings
lucy cache slugs clear # Clear slug mappings| Subcommand | Flags |
|---|---|
ls, list |
--json |
clear, rm |
|
slugs ls |
--json |
slugs clear |
Registered but not yet implemented:
| Command | Planned |
|---|---|
doctor |
Diagnose server environment risks |
export |
Export config or generate client |
upgrade |
Upgrade installed packages |
| Flag | Description |
|---|---|
--debug |
Show debug logs |
--log-file |
Print path to logfile |
--print-logs |
Print logs to console |
--no-style |
Disable colored output |
[platform/]name[@version]
Only the name is required. Omit the platform and Lucy infers it from the environment. Omit the version to get @compatible (newest match for your server).
fabric/fabric-api@1.2.3
↑ ↑ ↑
platform name version
@latest is the newest available. @compatible is the default — best-effort match against the detected environment.
Platforms accepted in the manifest: none, fabric, forge, neoforge, mcdr
The type system also knows bukkit, sponge, velocity, and bungeecord for topology detection, but you can't set these as the primary platform yet.
Data sources: modrinth, curseforge, github, mcdr (hangar and spiget are defined but not yet wired into the resolver).
Intent and config live in lucy.yaml. Resolved facts (versions, hashes, install paths, provenance) live in lucy-lock.yaml.
Lucy builds a graph of your server's runtime. Each node (Fabric, Forge, Paper, MCDR, Geyser, Velocity) carries a role, a set of capabilities (fabric_mods, bukkit_plugins, mcdr_plugins), and a risk level. Edges describe how nodes relate: one adapts another, one bridges to another. This graph powers lucy status, init discovery, and compatibility resolution.
Note
Logo and axolotl pixel art are copyright Mojang AB. Original replacements in progress.