Parallel Steam Workshop Downloads.
Zero Collisions. Zero Drama.
A high-performance Steam Workshop downloader, mod manager, and folder healer. Built with isolated SteamCMD worker staging, a sleek dark gamer localhost Web UI, automatic update tracking with zip rollback backups, and one-click packaging for non-technical gamers.
Interactive Web UI Simulator
Experience the exact localhost dashboard that powers the Workshop Controller without installing a thing.
Mod Folder Healer & Metadata Repair Engine
Resolves messy mod folders named with numeric IDs, unzipped third-party archives, or missing Steam metadata files. Automatically parses local About.xml, extracts official Workshop IDs, and generates PublishedFileId.txt & .lastupdated.
| Original Folder Name | Identified Mod Title | Resolved Workshop ID | Repair Action |
|---|
๐ฎ Game Profiles
Configure multiple games with custom Steam App IDs and target mod directories.
โก Concurrency & Staging
Fine-tune parallel downloads without causing SteamCMD lockfile collisions.
Everything Modding Needs, Nothing It Doesn't
Designed to replace fragile browser scripts, broken third-party downloaders, and manual folder juggling.
Collision-Free Parallel Downloads
Download up to 8 workshop items simultaneously. Each worker operates in an isolated staging environment, completely bypassing Valve's notorious appworkshop_<appid>.acf file-lock crashes.
Intelligent Folder Healer & Repair
Tired of unzipped folders named 2009463077? The healer parses local About.xml, detects Workshop IDs, queries Steam API, generates missing PublishedFileId.txt, and safely renames folders.
Smart Update Scanner & Zip Backups
Scans all installed mods, compares timestamps against live Steam Workshop metadata, and provides 1-click batch updating with automatic rollback backups stored in backups/.
Multi-Game & Multi-Folder Profiles
Switch instantly between RimWorld, Stellaris, Cities: Skylines, Project Zomboid, Garry's Mod, Don't Starve Together, or any custom Steam App ID from the top navigation dropdown.
Persistent Thumbnails & Tag Filters
Never suffer broken images again. Local cache persists titles, high-res previews, and dynamic game-version tags (e.g. 1.5, 1.6, Framework) directly in data/workshop_cache.json.
Single Executable Standalone Shipping
Built with PyInstaller packaging scripts for Windows and Linux. Gamers do not need Python, Node.js, or external tools installedโjust double click and play.
How Isolated Worker Staging Works
Why standard SteamCMD fails with parallel downloadsโand how Workshop Controller solves it permanently.
โ Race Conditions & Lock Violations
When multiple SteamCMD instances download concurrently to the same game root, they all attempt to read and write to steamapps/appworkshop_<appid>.acf simultaneously.
- Corrupted download caches and zero-byte truncated files
- OS write-lock error: "File is locked by another process"
- Silent background download aborts without user alerts
โ 100% Collision-Free Worker Isolation
Each worker process executes in its own private temporary staging root (temp_workers/worker_N/) with an independent ACF manifest before cleanly moving the finished mod.
- 0 file lock collisions regardless of concurrency count (1โ8)
- Atomic file moves to destination mod directory once verified
- Automated zip backup creation before overwriting prior versions
Launch in Seconds on Any OS
Choose your platform below to get the Steam Workshop Downloader Controller up and running.
Clone or Download the Repository
Download the latest release zip or clone via Git:
git clone https://github.com/someonenameguy/Workshop-Controller.git
cd Workshop-Controller
Double-Click the Portable Launcher
Simply run the included batch launcher. It will automatically check dependencies and start the controller:
run.bat
Enjoy the Localhost Dashboard
Your browser will automatically open to http://127.0.0.1:8080. SteamCMD will be auto-downloaded if not found.
Clone & Enter Directory
git clone https://github.com/someonenameguy/Workshop-Controller.git
cd Workshop-Controller
Make Executable and Run
chmod +x run.sh
./run.sh
Set Up Virtual Environment & Install Dependencies
python3 -m venv .venv
source .venv/bin/activate # Or .venv\Scripts\activate on Windows
pip install -r requirements.txt
Launch Controller Server
python3 main.py
Package Standalone Binary with PyInstaller
Produces a zero-dependency portable folder with an embedded Python runtime:
# On Windows (Command Prompt / PowerShell):
packaging\build_windows.bat
# On Linux or macOS:
chmod +x ./packaging/build_linux.sh
./packaging/build_linux.sh
Output standalone binary is generated in dist/RimWorldWorkshopController/.
Popular Games Ready Out of the Box
Workshop Controller comes with pre-configured Steam App IDs and mod directory conventions.
RimWorld
App ID: 294100Full support for About.xml parsing, version tags (1.4/1.5/1.6), and folder healer renaming.
Stellaris
App ID: 281990Paradox mod folder support with automatic descriptor and archive verification.
Cities: Skylines
App ID: 255710Asset and mod package support with high-speed parallel SteamCMD downloads.
Project Zomboid
App ID: 108600Mod.info metadata reading, workshop ID mapping, and direct mods directory placement.
Garry's Mod
App ID: 4000Direct download of GMA workshop archives into addons directories.
Don't Starve Together
App ID: 322330Direct mod folder placement and automatic modinfo.lua discovery.
Hearts of Iron IV
App ID: 394360Total conversions and submod downloads with zip archive backups.
Any Steam Workshop Game
Custom App IDSimply enter any Steam App ID and target folder path in the Settings tab to manage any game!
Frequently Asked Questions
For the vast majority of Workshop-enabled games (such as RimWorld, Stellaris, Cities: Skylines, etc.), SteamCMD supports anonymous downloading via login anonymous. You do not need a Steam account or ownership. If a specific game requires ownership, you can configure your Steam credentials in the Settings tab.
Valve designed SteamCMD with a single global state file: appworkshop_<appid>.acf. If two SteamCMD instances attempt to download simultaneously to the same root, they collide on this file with write lock errors. Workshop Controller solves this completely by giving every concurrent worker its own private, isolated staging directory.
The Healer inspects loose folders (such as numeric folders from manual downloads or unzipped archives) for metadata files like About.xml or modinfo.lua. It parses the mod title and author, locates the official Steam Workshop ID, queries the Steam API for metadata, generates missing PublishedFileId.txt and .lastupdated files, and renames the folder cleanly.
Whenever you trigger an update for an existing mod, the controller creates a compressed .zip archive in the backups/ directory stamped with the exact date and timestamp before any files are replaced. You can restore prior versions at any time.
Yes! Simply run packaging\build_windows.bat on Windows or ./packaging/build_linux.sh on Linux. The script executes PyInstaller and bundles the FastAPI server, frontend assets, and embedded Python into a single portable folder.