Mods / Rustique: Vintage Story Mod Manager - Windows

Tags: #QoL #Utility
Authors: theysa, violet_revenant
Side: Both
Created: May 9th at 12:29 AM
Last modified: Jun 25th at 8:46 PM
Downloads: 818
Follow Unfollow 55

Latest release:
rustique-windows-0.5.9.zip


Rustique

The complete Mod Manager for Vintage Story!

For Linux, WindowsMac (On Github!)

 

Written in Rust; fitting, right?

 

Support me with Ko-fi

Hiya! 

 

I've created a new mod manager for Vintage Story as I felt there was a need for a fast AF solution that handles dependencies.

 

Platforms:

THIS VERSION IS FOR WINDOWS 

This version is identical to the linux version, other than it works on Windows and has a different default mod path.

 

Linux Version: Linux

 

 

MAC builds on GITHUB!

I'm prob not going to make a new mod page for the mac builds, but they will always be updated at the same time as the linux build.

https://github.com/Tekunogosu/Rustique/releases



!!Caution!!: This is Alpha software. Back up your mods just in case and expect things to blow up on occasion. Expect extra verbosity and annoying messages. :3

 

~DISCORD~

I created a discord to make it easier to get in touch with me about bugs or suggestions you might have. This will also be the best place to get dev builds if you want to do some testing. These builds will be the ones between the versions released here on the mod site.

 

https://discord.gg/mXXVTgQgzs

How to use? (Windows):

 

  1. Download the zip from the mod website and extract the file wherever you want.
  2. Use Powershell to navigate to where you extracted Rustique
  3. Then you can run it like any other terminal program: .\Rustique.exe -V

 

 

NOTE: Check out the help command to see a full list of what Rustique can do. Below I show the long form of the flags, but there are shorter versions of each one as well.

Basic update routine

 

  • $ .\Rustique.exe sync   (compile a local JSON data structure of installed mods and synchronize with the VS Mods server to check currently available versions)
  • $ .\Rustique.exe list --updates    OR     .\Rustique.exe list    (the `--updates` flag shows only installed mods that are known to have updates available)
  • $ .\Rustique.exe update --all   (update everything, including dependencies)

 

It's as easy as that! I know it seems like a lot, 3 commands and all.. But the point of Rustique is to give you full controll and flexibility when managing your mods. This means you pick how and when you update your mods.

 

Installing missing dependencies

 

Tired of having to seek out all the dependencies for the cool new mod you just found? Rustique can handle that as well!

 

  • .\Rustique.exe sync     (You need to sync first so Rustique knows whats already on the system.)
  • .\Rustique.exe install --missing-dependencies

 

And that's it! This command will recursively download all missing dependencies for all currently installed mods and the dependencies for those. It's nice and fast!

 

Install a new mod with Rustique

 

Rustique has the ability to install new mods for you, provided you know the mod ID. This can be obtained from the URL bar on the mod page on the website.

NOTE: Not all mods show their mod ID in the url bar!

 

Example:

https://mods.vintagestory.at/alchemy  -- alchemy is the mod ID for this mod. As you can see, the ID appears in the URL bar. That ID can then be used with Rustique to install it and any dependencies it might have.

 

Example of a mod without a mod ID:

https://mods.vintagestory.at/show/mod/23518   -  This mod shows a number, but that number is actually something called an "ASSET ID": this will not work to download the mod! If the VS Mods API is updated to enable us to install by numeric ID (e.g. 23518), Rustique will be updated to handle it.

 

So, with 'alchemy' ID known, let's see how to install a new mod:

  • $ .\Rustique.exe install alchemy

 

It's that easy! Any dependencies will automatically be downloaded as well.

If you don't want to deal with the CLI for download, feel free to manually install mod. Rustique will be able to find and manage that without any issues. Just sync and update.

What about non-default mod locations?

 

With version v0.2.0 you can set the default mod directory through Rustique itself.

 

The following will set the default, so you dont have to type it everytime

.\Rustique.exe config set -m /path/to/your/mods

.\Rustique.exe list

 

You can still use .\Rustique.exe -m /path/to/mods  to run rustique on any dir you want, as -m takes priority.

 

There are other features to modify and you can check them out with .\Rustique.exe help config   (Not all functionality is implemented just yet)

 

Modpacks

 

Mod packs are in! The wiki goes into detail on its usage, should check it out.

 

Note for windows, to use the modpack feature you will have to run powershell as admin. Rustique creates symlinks of the mods installed with modpacks and that can only be done with admin rights. I didn't realize this until after I implemented the feature.. so yea. sorry about that. The project is open source, so if you don't trust running it as admin, I totally understand and the code is there to review if you need.

Missing Features

 

There are several features that are still being worked on. This is an Alpha version, but it's stable and what is there works very well. If you do find any bugs or confusing behavior, please report them on the github page. You can leave a message here too, but I will see them faster on github.

 

  • Smart Version Pinning & Management:

    • Version pinning is in! 0.3+ now has this functionality. See 'Rustique config help set' for more info

 

  • Configurations
    • Configuration is in!! Not all functionaly is complete as of yet.

 

  • Searching
    • Search is in! Checkout Rustique help search for more info!

 

  • Wiki/Documentation
    • Wiki is up! Still being worked on but check it out here: https://github.com/Tekunogosu/Rustique/wiki

 

 

  • Mod Removal
    • This was added in 0.5.0!

 

  • GUI
    • There is a GUI planned. I will not be working on that until the cli version is feature complete. But it will happen

 

  • Localization
    • Localization is planned. This will prob take a while to get implemented and I will need volunteers as I only speak english.

Known Issues

 

  • Rustique doesn't handle non-zip files from the mod site atm. Rustique will continue but that file will most likely not be downloaded.
  • Some messages are noisy. This is expected and will eventually be cleaner and more user friendly.

 

Special thanks

 

  • MothHelix : For breaking things and doing extra testing!
  • EDKE : For reporting bugs on github & mac testing!

Mod Version Downloads Release date Changelog Download
0.5.9 117 Jun 25th at 8:46 PM rustique-windows-0.5.9.zip

Version 0.5.9-alpha

  • Added requested [-p, --pinned] to the list command to show only pinned mods. Thanks propaneko for the suggestion!
0.5.8 24 Jun 24th at 5:12 PM rustique-windows-0.5.8.zip

Version 0.5.8-alpha

  • Fixed bug with pinning game versions where it expected a 'v' but the modDB updated their game versions to not include the prepended 'v'.
0.5.7 17 Jun 23rd at 6:28 PM rustique-windows-0.5.7.zip

Version 0.5.7-alpha

  • Fixed bug where rustique was replacing spaces in the mod directory with underscores, "_", which caused downloads to fail as the path didn't exist.
0.5.6 50 Jun 20th at 8:10 AM rustique-windows-0.5.6.zip

 

This update is really only for unix, but github actions builds it for everything anyway.

Version 0.5.6-alpha

  • Unix only Rustique can now be used with the 1-click-install from the mod-db. Thanks @coolcoder613eb!
  • Use Rustique misc -o to install the needed files for the 1-click-install to work.
0.5.5 116 Jun 5th at 7:59 PM rustique-windows-0.5.5.zip

 

This version brings some changes to the windows default mod location. Previously I was going off data I got off the wiki, which was outdated on whatever page I looked at, that mentioned %appdata%/Vintagestory/Mods was the default. I discovered that the preferred default location is the same as the Unix versions, VintagestoryData/Mods.

For Windows users. The first time you run Rustique after this update you will be prompted to update your default mod location IF its still set to the old location. Don't worry, rustique will take care of everything and make it nice and simple. IF you have modpacks enabled, make sure you run Rustique with admin rights so it can manage the modpacks.

This update also brings some new flags to list so you can export as csv now and change which columns show on the fly.

Version 0.5.5-alpha

  • WINDOWS ONLY: Changed the default path for Windows to %appdata%/VintagestoryData/Mods. Originally it was %appdata%/Vintagestory/Mods, which is technically works, but the preferred location is VintagestoryData. I was looking at an old wiki page when getting this information initially.
  • WINDOWS ONLY: Because of the change to the default mod path for windows, Rustique will now ask if you want to move the mods when you first run Rustique. This will not affect your game in any way, just where the mods get loaded from.
  • Added new flags to list, --columns: Lets you show only specific columns, --export: Change the output format, currently only for csv, --file-path: save the output to a file instead of printing to stdout.
0.5.4 52 Jun 2nd at 12:44 AM rustique-windows-0.5.4.zip

 

This release is thanks to Spawn from the discord for figuring out we need a good way to install modpack dependencies!

Version 0.5.4-alpha

  • Added progress bars for mod api fetches and downloading of mod files. Will possible add more in other sections at a later time.
  • Added new flag; Rustique modpack install --missing-dependencies mpkid. This helps download mods for a modpack that you install manually.
0.5.3 45 May 31st at 5:12 PM rustique-windows-0.5.3.zip
 
If you have version 0.5.2, you can update with `Rustique self --update`.
 

Version 0.5.3-alpha

  • Fixed regression bug where sync would not lowercase the modid after making the API calls for the mods. This caused the sync file to create a new entry that didn't have the required information to update these types of mods.
0.5.2 15 May 31st at 5:57 AM rustique-windows-0.5.2.zip

 

This is a needed update to fix self updating.

Version 0.5.2-alpha

  • Fixed invalid type error with api call when checking for update for rustique.
0.5.0 9 May 31st at 12:36 AM rustique-windows-0.5.0.zip

 

Yes, another HUGE update. This one bringing an updater!! Going forward the app will check if there is a new update by checking the github releases. By default it will check everytime you run the command, but you can disable that check in the config.

NOTE: Existing Rustique users will need to ENABLE checking for updates with Rustique config set --check-for-updates true. This is because if the value is missing from the config "which it is for existing users", it gets set to false. New users will have this set to true by default.

Version 0.5.0-alpha - Self Updating.. Update!

  • Rustique now has a self update!! Rustique will update in place. Check out Rustique help self to see the commands. (You can check for updates and perform an update)
  • Fixed list --updates showing all mods instead of only ones that need updates. This fixes issue #12.
  • list now runs sync automatically if the sync file is missing from an installed modpack. This raised an error before.
  • Added --with-mpk to the base Rustique flags as a shortcut to handling modpack mods. You'll be able to use the base commands, list,update,install, on the packpack mods dir. Rustique -w tmmv update -a -- this will update all the individual mods in the tmmv modpack.
  • You can use mod-id@version with install and delete commands to install or delete that version
  • Mod backups have been implemented! It's disabled by default, you can turn it on with Rustique config set --backup-mods true. You can also choose where they are stored with Rustique config set --backup-mods-dir /path/to/dir
  • You can now delete mods! Checkout Rustique help delete
  • Modpack delete has been implemented as well. See Rustique modpack help delete
0.4.3 52 May 27th at 4:47 PM rustique-windows-0.4.3.zip

This release fixes some regression bugs with API calls.

0.4.1 18 May 27th at 4:27 AM rustique-windows-0.4.1.zip

I recommend updating to this version as it does fix a critical error with sync

Version 0.4.1-alpha

 

  • Fully switched to the tokio-async library, swapped from synchronous zip lib to async-zip. This shows a slight increase in performance when using Rustique on a lot of mods at once.
  • modpack create now sets your own mods up in a way that will let you enable/disable them.
  • Added modpack local list to view your locally created modpacks. Enable/disable work like normal.
  • A flag for modpack create --ignore-modpacks was added to let you choose to ignore enabled modpacks. Its set to false by default so you can create new modpacks out of existing ones.
  • A flag for modpack create --copy-mods was added for choosing to copy the mods made by the command instead of moving them. By default when you create a modpack, the mods are moved into the ~/.config/rustique/modpacks/installed/yourpack folder. If you set --copy-mods, the orignal mods will stay in place and a copy will be created into the installed dir.
  • All integer api_arg values are now i64 instead of u32. The api changed how game versions are handled and now show a large negative i64 value.
  • Fixed bug with the sync command where if a malformed mod-id is found, sync would prematurely exit... Thought this was fixed, but maybe I unfixed it??
0.4.0 39 May 26th at 4:24 AM rustique-windows-x86_64.zip

Finally!!! Modpacks took a lot of work to implement, but its here!. There are still more things to test, so please report any bugs you run into.

**_NOTE FOR WINDOWS:_** In order to use modpacks with rustique, you will need to run powershell as admin to use the `Rustique modpack enable modid`. Rustique uses symlinks under the hood to manage the modpacks, and apparently only admins can do that.. go figure.

Check out the wiki for more details on how to use modpacks: [Rustique Wiki](https://github.com/Tekunogosu/Rustique/wiki)


# Version 0.4.0-alpha

 

  • Implemented modpack functions! Create, Install, Enable/Disable, List, Info
  • The modpack functionality has a lot to it. See the wiki for usage examples
  • There are now builds for Intel and Arm based Macs! I used Github Actions, so it *should* work. Its untested though..
  • Various bug fixes and tweaks
0.3.1 108 May 17th at 9:19 PM Rustique-0.3.1.zip

This version had a bit more packed into it than I originally intended, sorta got carried away :3

This version fully implements version pinning AND the info command. At some point I will have a wiki created to show how to use Rustique as its starting to get more and more complex.

Version 0.3.1-alpha

 

  • Version pinning is live! You can now pin a specific mod version and/or a specific game version. There are some situations where you get weird results by setting both or mods not having an game version that matches at all. Please report any situations where you encounter errors.
  • You can now enable the following columns for the list display table; Pinned Version, Game Version.
  • To pin a specific version of a mod use `Rustique config set -w mod-id -P 1.2.3`
  • To pin a specific game version use `Rustique config set -p 1.20.8`
  • The "Latest Version" in list command will now show (pinned) if a version has been pinned.
  • Columns with numbers displayed should now be right aligned.
  • The Info command is now live. See `Rustique help info ` to see how it use it.
0.3.0 54 May 14th at 6:00 AM Rustique-0.3.0-windows.zip

Version 0.3.0-alpha

  • Implemented search! Checkout Rustique help search on how to use it
  • You can now change what information to display with search via the config file!
  • You can modify the display table for the list and search command via Rustique! Checkout ./Rustique config help table. A wiki page will be going up for this as there is a lot to it.
  • If the config.toml file is malformed, the malformed config is backed up and a new config will be created with a nice message.

 

This was another large update. Implementing the search command and handling the table styling from the config file took a lot of work and I'm pretty happy with how it turned out.

The following commands are now live
./Rustique search
./Rustique config table [set,list,reset,del]

Search is pretty straight forward and there may be some bugs, so please let me know if you find any.

The table config is a bit complex at first site, so I will be making a wiki page to document how to use it here shortly.

0.2.5 48 May 10th at 5:11 PM Rustique-0.2.5-windows.zip

Version 0.2.5-alpha

 

  • Fixed display issue where dependencies were being duplicated when viewing `list`
  • Fixed issue where the config folder for rustique was being created in the wrong place on linux.

Version 0.2.4-alpha

 

  • You can now reset config values with `Rustique config del [OPT]`, see `Rustique config help del`
  • You can now list all config values with `Rustique config list`
0.2.3 54 May 9th at 12:32 AM Rustique-0.2.3-windows.zip

Release of the windows version!!!

 

Please let me know if this doesn't work for some reason

Version 0.2.3-alpha

 

  • Fixed invalid missing dependencies column when you use  list -u

Version 0.2.2-alpha

 

  • Fixed version parsing error for versions that show up as NULL from the api. This was just a display issue, didn't actually affect the usage of Rustique

Version 0.2.1-alpha

 

  • Using -v now shows the correct mod directory that Rustique is looking at
  • Added compiler flags to make the Rustique binary smaller and reduced features from used libraries. (saves a few MBs from the executable)
  • Added misc command for generating auto complete for the shells zsh,bash,fish,powershell. `./Rustique help misc`

 


24 Comments (oldest first | newest first)

💬 theysa , Jul 6th at 5:37 PM

mo_mo Heya, Rustique can actually manage its own "profiles" using the modpack feature. With modpacks, you can create as many local packs as you want and freely switch between them for different saves. As such, I wouldn't be adding support for Mod Organizer.

 

You can check out the modpack guide here https://github.com/Tekunogosu/Rustique/wiki/Modpacks

💬 mo_mo, Jul 6th at 2:56 PM

Any chance of adding mod update support for Mod Organizer 2? Rustique doesn't recognize the mods since they're nested in a folder.

💬 theysa , Jun 29th at 6:10 PM

tkdestroyer2 its a false positive. Rustique doesn't do anything malicious. You'll have to whitelist it so it doesn't get flagged. Sadly, the only real way to avoid this is to get a verification cert from microsoft and that would be too expensive for what this is. 

 

If you are concerned about it, feel free to check over the source code, its completely open source.

💬 tkdestroyer2, Jun 29th at 5:38 PM

Version 0.5.9 is being quarantined by Windows Defender.

💬 theysa , May 27th at 3:12 AM

Mairujyat The modapi is busted right now, so sync/updating everything that needs versioning info is broken. 

 

Basically all versioning information from the API is showing numbers instead of text, so the parsing library cant turn the api call into a form that's usable. I've submitted a bug report to the VS peoples, so hopefully they fix that soon. And what I mean by numbers is its showing a number like 12923743973873 insteald of 0.3.1.

 

Sadly there is nothing I can do about this. Rustique requires the versions to be functional in order to operate correctly.

💬 Mairujyat, May 27th at 3:05 AM

theysa Running into a similar issue as Churburby, ran into it on the previous version as well as current version; it collects info on all the mods, then outputs for all the mods "error decoding response body."

💬 theysa , May 27th at 2:50 AM

HEADS UP: At the time of writing this comment, the mod API is broken. The versions for all mods are showing up as a huge number instead of text. This breaks Rustique, so if you try to sync and you get an error message that says: error decoding response body then this is why. I've already posted an issue on their github for the modapi, so hopefully they get that fixed soon.

💬 theysa , May 21st at 9:31 PM

AcidMarxist Interesting, well I'm glad its working now at least. Def strange and I havn't seen that yet. Thanks for reporting that, I'll keep on eye on things. Sounds like it might be a weird edge case I haven't seen yet.

💬 AcidMarxist, May 21st at 8:09 PM

theysa

I was using the latest version! It was just the sync command that wasn't giving me any output, but it didn't seem to actually mess with anything. I've used it about 3 times since then to update mods and I run the sync command each time and it seems to work fine so I haven't been too worried about it. I went ahead and tried it just now before posting this comment, and it looks like it actually is printing an output for me and is working exactly as intended. I have no clue why it wasn't giving an output those first few times, but it seemingly worked itself out.

💬 theysa , May 21st at 12:18 AM

Churburby Do you use discord?  and if so, would you be able to join the rustique discord server? That way we can talk in real time so I can get some more information.

 

💬 Churburby, May 20th at 11:48 PM

theysa

 

Spoiler!

 


2025-05-20T23:45:36.203867Z INFO main ThreadId(01) ModID: healovertime
2025-05-20T23:45:36.203872Z INFO tokio-runtime-worker ThreadId(03) Fetching mod: moreanimals
2025-05-20T23:45:36.204785Z INFO tokio-runtime-worker ThreadId(07) Fetching mod: healovertime
vintage-symphony-assets Api Error: fetch_mod (json) [vintage-symphony-assets] - They may have provided the wrong mod_id or the api is not responding. Retry, if it fails you will need to manually update the mod.: error decoding response body
2025-05-20T23:45:38.063051Z INFO main ThreadId(01) Unable to parse version NULL for Some(String("ndlwoodentorchholder_1.3.1.zip"))
2025-05-20T23:45:38.064248Z INFO main ThreadId(01) Unable to parse version NULL for Some(String("ExpandedFoods_1.2.2 (Modded).zip"))
2025-05-20T23:45:38.064380Z INFO main ThreadId(01) Unable to parse version NULL for Some(String("ExpandedFoods_1.2.1 (Vanilla).zip"))
2025-05-20T23:45:38.064887Z INFO main ThreadId(01) Unable to parse version NULL for Some(String("ExpandedFoods_1.2.0 (Vanilla).zip"))

Did so and appeared to collect info for almost all mods then printed the only error above

💬 theysa , May 20th at 3:33 PM

eerino You're most welcome! I hope you are able to get rustique compiled and it all works out for you. Let me know if you run into any issues.

💬 theysa , May 20th at 3:32 PM

Churburby Hmm interesting. That error message is saying its having API issues, like its getting invalid responses when trying to contact the api site. The first message about fatspoilage version is because they use some weird versioning that I will look into.

 

Can you run the sync again with -v enabled and send me the output?

 

So the command would be `Rustique -v sync` It'll show a lot of output, so best option to get it to me would be to join the rustique discord and past it there, or use a site like pastebin to upload all the text and paste the link here.

 

Thanks for reporting your errors, its really important to find any edge cases!

💬 Churburby, May 20th at 1:20 PM

I'm getting an error when syncing.

 

Spoiler!
2025-05-20T13:16:39.176833Z WARN main ThreadId(01) Could not parse version: for fatspoilage.zip
This mod may not update correctly..
combatoverhaul Api Error: fetch_mod (json) [combatoverhaul] - They may have provided the wrong mod_id or the api is not responding. Retry, if it fails you will need to manually update the mod.: error decoding response body

The above "error decoding response body" repeats for every mod 

💬 eerino, May 20th at 1:13 PM

@theysa Thank you so much!

💬 theysa , May 20th at 1:46 AM

AcidMarxist Ahh ok. You don't have to have the program in your VintagestoryData folder, your default folder just needs to be pointed at the directory where your mods are. But im glad you figured it out. I just want to make sure, you are using the latest 0.3.1 version correct? I ask because you mentioned it wasn't showing you doing anything, but every command should have some sort of output. Regardless, as long as its working for you and you don't have to deal with updating your mods by default :3

💬 AcidMarxist, May 20th at 12:14 AM

theysa 

I genuinely think I was just confused about the initial installation process. I put Rustique.exe in a random folder somewhere and I was having a hard time getting any of the commands in powershell to work UNTIL I put it in my VintageStoryData folder and then set the default folders like the mod description says. Once I got it in the Data folder and set the default location it worked fine. It seemed pretty obvious to me once I figured it out. Beyond that, it was a little difficult to tell if it was actually doing anything when I was inputting the sync command but then the next command went through and it started showing me progress bars and all that good stuff. I think it was user error on my part that was causing the confusion more than anything. 

💬 theysa , May 19th at 6:49 PM

AcidMarxist Glad its working out for you! If you don't mind me asking, what issues were you experiencing initially? I want to make this program work as flawlessly as possible, so any info helps.

💬 AcidMarxist, May 19th at 5:25 PM

This is fantastic. It took a little troubleshooting to actually get it setup initially, but once I got it going it worked like a dream. 

💬 theysa , May 19th at 2:30 AM

Guar I decided today to add a download command to Rustique so you can at least download the latest versions without having to do to the website. You can get that version on my github page. There wasn't enough in this minor release to put it here on the mod site, because I try not to update too frequently here. It wont extract and update the game files for you, but it will download the latest version so its easier on you. :3

Rustique v0.3.2-alpha

💬 theysa , May 18th at 4:40 PM

Guar Glad you like it! I wasn't able to find any mod manager that I liked either, which is why I made Rustique. Plus the other ones were slow... 

 

Anyway, I would like to use Rustique to manager servers as well, at least the installation and maybe running the exectuable, I'm just not sure how I'm going to go about this yet. The end goal of the project is to have a GUI which will be able to manage different versions of the game but that will prob be a bit out before I get to that point. I don't think its against TOS or anything, but VS doesn't have an api to download new versions of game easily, so its a bit more involed. It can be done though. So to answer your question, yes it's possible.

I'll be looking into this actually after I have modpack stuff finished, which I'm working on right now. So keep an eye/follow the project as I update pretty frequently.

💬 Guar, May 18th at 9:33 AM

I love this! Been looking for a tool like this for a while but couldn't find any that I actually liked! Works super well for me to update mods on my Linux server from my Windows pc!

 

Got a question that I suppose could be out of scope for this kind of tool, but do you see it possible to create an updater for Vintage Story server? I mean in general really, not asking you to create it or so.

Perhaps it's against TOS or in other ways troublesome, but I always find it a little bit too time consuming to update my Linux server in those periods when updates drop so quickly after another.

💬 theysa , May 17th at 11:39 PM

eerino

Rustique does work on mac, but you have to compile it yourself. @EDKE left a guide on how to do so on the linux version, check it out here: https://mods.vintagestory.at/rustique the information is at the top of the description.

 

💬 eerino, May 17th at 11:23 PM

Why'd I buy a Mac? WHY!?!?

*sigh*
(it was considerably cheaper for the same specs. worth leaving everything I was familiar with- compared to not affording a pc at all.
 (edit comment delete)