A cross-platform mod manager with CLI, TUI, and GUI interfaces. AGM is in very early development and does not have basic features yet.
agm config --nexus-api-key <key>: Sets your Nexus Mods API key.agm config --editor <command>: Sets your preferred text editor (e.g.,nano,vim,code). TheEDITORenvironment variable is used as a fallback.
agm profile list: Lists all available profiles.agm profile add <game_name> [--name <profile_name>]: Creates a new game profile. You'll be prompted for the game's installation path, and the new profile will open in your configured editor.agm profile edit <profile_name>: Opens an existing profile in your editor.agm profile remove <profile_name>: Deletes a profile and its configuration file.
agm install <path_to_zip> --profile <profile_name>: Installs a mod from a.zipfile.- Unpacks the mod into AGM's central storage directory.
- Automatically guesses file placements based on
mimetypes defined in the profile. - Interactively prompts for placement for any files that could not be automatically placed.
- Creates symlinks from the game's directory to the mod files in storage, enabling instant activation.
agm profile listagm profile add <game_name> [--name <profile_name>]agm profile edit <profile_name>agm profile remove <profile_name>
agm preset switch <game> <preset>agm preset list [--profile <game>]agm preset add <game> <name> #list of urls or archivesagm preset edit <game> <name>agm preset remove <game> <preset>agm preset remove <game> -a #--allagm preset disable <game>
agm config --nexus-api-key <key>agm config --editor <command>
agm install <path_to_zip> --profile <profile_name>
Profiles are yaml files that define what the games mod stukture looks like.
game:
name: ExampleGame
path: game/ #path to game dir
layout:
- name: bin
type: dir
sub:
- name: binmod
type: moddir
mime:
- bin
- pkg # tells agm .zip's or pkg's go here
- name: scriptsmod
type: moddir
mime:
- src
- zipgame: <name of game>
mods:
- mod1 # this tells agm that mod1 should be installed by this prerset
- name: mod2you can do name: mod, so other atributes
can be given like url: <url> for automatic game spec download (comming soon)
name: cool mod
url: <url>
files:
- target: <dir/>
point: "@<name>" # from the profiles section eg. scriptmod or binmod
- target: <dir/>
point: <dir/> #with the root being the games dir
- target: <file>
point: <dir/>~/
├── data-dir/
│ ├── storage/
│ │ ├── game1/
│ │ │ ├── modfile
│ │ │ └── moddir/
│ │ └── game2/
│ │ ├── modfile
│ │ └── modfile
│ ├── profiles/
│ │ ├── game1.yaml
│ │ └── game2.yaml
│ └── presets/
│ ├── game1/
│ │ ├── preset1.yaml
│ │ └── preset2.yaml
│ └── game2/
│ └── preset1.yaml
│
└── config-dir/
└── agm.yaml
This normaly should not be touched
games:
- profile: game
presets:
- modpack1
- modpack2
mods:
- mod1
- mod2