{"id":28798994,"url":"https://github.com/deadfrostt/modpilot","last_synced_at":"2026-05-08T00:43:08.345Z","repository":{"id":290133831,"uuid":"973473532","full_name":"DeadFrostt/Modpilot","owner":"DeadFrostt","description":"A simple CLI tool to manage Modrinth modpacks: add, remove, update, and sync Minecraft mods for multiple packs using a JSON config.","archived":false,"fork":false,"pushed_at":"2025-06-04T02:51:50.000Z","size":73,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-18T06:03:11.389Z","etag":null,"topics":["fabric","forge","minecraft","minecraft-mod","minecraft-modpack","modpack","modrinth"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DeadFrostt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-27T04:11:54.000Z","updated_at":"2025-06-03T19:27:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"ae0f1319-42f7-40ad-966b-ae532de5fe38","html_url":"https://github.com/DeadFrostt/Modpilot","commit_stats":null,"previous_names":["deadfrostt/modpilot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/DeadFrostt/Modpilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeadFrostt%2FModpilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeadFrostt%2FModpilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeadFrostt%2FModpilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeadFrostt%2FModpilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DeadFrostt","download_url":"https://codeload.github.com/DeadFrostt/Modpilot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DeadFrostt%2FModpilot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260499337,"owners_count":23018289,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fabric","forge","minecraft","minecraft-mod","minecraft-modpack","modpack","modrinth"],"created_at":"2025-06-18T06:02:13.115Z","updated_at":"2026-05-08T00:43:08.339Z","avatar_url":"https://github.com/DeadFrostt.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Modpilot\n\n**Modpilot** is a lightweight Modrinth modpack manager written in Go. Define modpacks as collections of Modrinth slugs in a JSON config, then add, remove, check for updates, update, and sync mods via a simple CLI.\n\n## Features\n\n- Manage multiple modpacks in a single `config.json`\n- Define specific Minecraft versions and loaders for each modpack (**required**)\n- Bulk add/remove of Modrinth slugs\n- Interactive `init` for setting *optional* global defaults (MC version \u0026 loader)\n- Precise version filtering (game versions \u0026 loader compatibility)\n- Checks for updates against Modrinth (`check-updates`)\n- Downloads/updates mods, storing version ID and filename in `state.json` (`update`)\n- Checks for missing local mod files during updates and checks\n- Syncs local mods folder based on `state.json`, removing unexpected JARs (`sync`)\n- Configuration validation on load\n- Verbose logging and automatic confirmation via `--yes`\n- Command aliases for faster workflows\n\n## Prerequisites\n\n- Go 1.18 or later\n\n## Installation\n\nClone the repo and build:\n```pwsh\ngit clone https://github.com/yourusername/modpilot.git # Replace with actual repo URL if available\ncd modpilot\ngo build -o modpilot.exe .\n```\n\nOr download a prebuilt binary for your platform if available.\n\n## Quick Start\n\n1.  Initialize your workspace (sets optional global defaults):\n    ```pwsh\n    .\\modpilot.exe init\n    ```\n2.  Create a new modpack (prompts for required MC version \u0026 loader):\n    ```pwsh\n    .\\modpilot.exe create-pack MyPack\n    ```\n3.  Add mods to the pack:\n    ```pwsh\n    .\\modpilot.exe add-mod MyPack fabric-api sodium iris\n    ```\n4.  List modpacks and their mods:\n    ```pwsh\n    .\\modpilot.exe list-packs\n    .\\modpilot.exe list-mods MyPack\n    ```\n5.  Check for available updates and missing files:\n    ```pwsh\n    .\\modpilot.exe check-updates MyPack\n    ```\n6.  Download/update mods (uses pack's configured version/loader):\n    ```pwsh\n    .\\modpilot.exe update MyPack --yes --verbose\n    # Optionally override version/loader for this run:\n    # .\\modpilot.exe update MyPack -g 1.20.1 -l forge\n    ```\n7.  Remove mods (from config and state):\n    ```pwsh\n    .\\modpilot.exe remove-mod MyPack sodium\n    ```\n8.  Clean up unexpected JARs from the mods folder (based on `state.json`):\n    ```pwsh\n    .\\modpilot.exe sync MyPack --verbose\n    # or use alias:\n    # .\\modpilot.exe clean MyPack\n    ```\n\n## Commands\n\n| Command                      | Alias(es)        | Description                                                                 |\n|------------------------------|------------------|-----------------------------------------------------------------------------|\n| `init`                       |                  | Initialize config, setting optional global defaults                         |\n| `create-pack [name]`         |                  | Create a new modpack, prompting for its required settings                   |\n| `delete-pack [name]`         |                  | Delete a modpack from config (doesn't delete state or files yet)            |\n| `list-packs`                 | `lp`             | List all modpacks and their settings                                        |\n| `list-mods [pack]`           | `lm`             | List all mods configured for a modpack                                      |\n| `add-mod [pack] [slugs...]`  |                  | Add one or more Modrinth slugs to a modpack's config                        |\n| `remove-mod [pack] [slugs...]`|                 | Remove one or more slugs from a modpack's config and state                  |\n| `check-updates [pack]`       |                  | Check Modrinth for newer versions and check for missing local files         |\n| `update [pack]`              | `update-pack`, `upd` | Check \u0026 download new/missing versions for a modpack, updating state         |\n| `sync [pack]`                | `sync-pack`, `clean` | Remove JARs from the modpack's directory that aren't listed in `state.json` |\n\nGlobal flags: `-c, --config`, `-s, --state`, `-m, --mods-dir`, `-y, --yes`, `-g, --mc-version` (override), `-l, --loader` (override), `-v, --verbose`.\n\n## Configuration (`config.json`)\n\n```json\n{\n  \"default_mc_version\": \"1.21.5\", // Optional: Used as default during 'create-pack'\n  \"default_loader\": \"fabric\",   // Optional: Used as default during 'create-pack'\n  \"modpacks\": {\n    \"MyPack\": {\n      \"mc_version\": \"1.21.5\", // Required: Minecraft version for this pack\n      \"loader\": \"fabric\",   // Required: Mod loader for this pack\n      \"mods\": [             // Required: Array of Modrinth slugs\n        \"fabric-api\",\n        \"sodium\"\n      ]\n    },\n    \"AnotherPack\": {\n      \"mc_version\": \"1.20.1\",\n      \"loader\": \"forge\",\n      \"mods\": []\n    }\n    // ... more packs\n  }\n}\n```\n\n- `default_mc_version` (optional): Suggested MC version when creating new packs.\n- `default_loader` (optional): Suggested loader when creating new packs.\n- `modpacks`: Map where each key is a pack name.\n  - `mc_version` (**Required**): Minecraft version specific to this pack.\n  - `loader` (**Required**): Mod loader specific to this pack (e.g., \"fabric\", \"forge\", \"quilt\", \"neoforge\").\n  - `mods` (**Required**): Array of Modrinth slugs for this pack.\n\n*Validation*: The tool checks that `mc_version` and `loader` are present for each pack when loading the config.\n\n## State (`state.json`)\n\nKeeps track of the last-downloaded version ID and filename for each mod in a pack. This file is used by `update`, `check-updates`, and `sync`.\n\n```json\n{\n  \"MyPack\": {\n    \"fabric-api\": {\n      \"version_id\": \"abcdef12\",\n      \"filename\": \"fabric-api-0.100.0+1.21.5.jar\"\n    },\n    \"sodium\": {\n      \"version_id\": \"xyz789uv\",\n      \"filename\": \"sodium-fabric-mc1.21.5-0.5.9.jar\"\n    }\n  },\n  \"AnotherPack\": {\n    // ... mods for this pack\n  }\n}\n```\n\n- Each key under the pack name is the mod slug.\n- `version_id`: The Modrinth version ID that was last downloaded/checked.\n- `filename`: The actual filename of the JAR file that was downloaded for that version.\n\n## Mods Directory\n\nBy default, JARs are downloaded to `\u003cmods-dir\u003e/\u003cpackName\u003e/`. The default `\u003cmods-dir\u003e` is `mods` in the current directory. Override the base directory with the `--mods-dir` flag.\n\nExample: `mods/MyPack/fabric-api-0.100.0+1.21.5.jar`\n\n## Aliases\n\n- `modpilot` (alias `modpm`, `mp`)\n- `list-packs` (`lp`)\n- `list-mods` (`lm`)\n- `update` (`update-pack`, `upd`)\n- `sync` (`sync-pack`, `clean`)\n// Note: check-updates does not have an alias currently\n\n## Contributing\n\nContributions welcome! Open issues or submit pull requests on GitHub.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeadfrostt%2Fmodpilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeadfrostt%2Fmodpilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeadfrostt%2Fmodpilot/lists"}