Cross-Platform โ€ข Zero-Dependency Shipping โ€ข Python 3.10+

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.

๐ŸชŸ Windows (.bat / .exe) ๐Ÿง Linux (.sh / binary) ๐ŸŽ macOS ๐Ÿ“ฆ Valve SteamCMD Ready
1 - 8x
Parallel Concurrency
Isolated staging prevents file-lock collisions
1-Click
Mod Folder Healer
Repairs numeric IDs, About.xml & PublishedFileId
Auto
Update Scanner
Instant cloud diff with zip rollback backups
Multi-Game
Profile Presets
RimWorld, Stellaris, Cities: Skylines & custom
TRY IT IN YOUR BROWSER

Interactive Web UI Simulator

Experience the exact localhost dashboard that powers the Workshop Controller without installing a thing.

http://127.0.0.1:8080 โ€” Steam Workshop Downloader Controller
SIMULATOR ACTIVE
Workshop Controller
RimWorld (AppID: 294100)
SteamCMD Ready
Showing 6 of 6 mods
Quick test:
Active Workers (3 of 4 Concurrency): 24.6 MB/s Aggregate
Download Tasks

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.

Auto-generate .zip backup
Creates instant rollback archive in backups/ before updating mods
Auto-bootstrap SteamCMD
Auto-downloads official Valve binary if missing on initial launch
Live Subprocess Stream (WebSockets)
ENGINEERED FOR POWER & SIMPLICITY

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.

Isolated Staging 1 - 8x Workers

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.

Manifest Healing Auto-Rename

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/.

Zero Data Loss 1-Click Batch

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.

Universal Support Custom App IDs

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.

Offline Cache Smart Tagging

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.

Zero Dependencies Portable .exe / .sh
UNDER THE HOOD

How Isolated Worker Staging Works

Why standard SteamCMD fails with parallel downloadsโ€”and how Workshop Controller solves it permanently.

Standard SteamCMD (Naive Approach)

โŒ 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
Workshop Controller Isolated Pool

โœ… 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
Browser Web UI
Vanilla JS + CSS
FastAPI Backend
REST + WebSockets
Worker Pool
temp_workers/1..N
Mods Folder
Atomic Deployed
GET STARTED NOW

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:

Command Prompt / PowerShell
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
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

Bash Terminal
git clone https://github.com/someonenameguy/Workshop-Controller.git
cd Workshop-Controller

Make Executable and Run

run.sh
chmod +x run.sh
./run.sh

Set Up Virtual Environment & Install Dependencies

Python 3.10+ Environment
python3 -m venv .venv
source .venv/bin/activate  # Or .venv\Scripts\activate on Windows
pip install -r requirements.txt

Launch Controller Server

main.py
python3 main.py

Package Standalone Binary with PyInstaller

Produces a zero-dependency portable folder with an embedded Python runtime:

Build Script
# 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/.

MULTI-GAME READY

Popular Games Ready Out of the Box

Workshop Controller comes with pre-configured Steam App IDs and mod directory conventions.

RimWorld

App ID: 294100

Full support for About.xml parsing, version tags (1.4/1.5/1.6), and folder healer renaming.

โœ“ Fully Verified

Stellaris

App ID: 281990

Paradox mod folder support with automatic descriptor and archive verification.

โœ“ Fully Verified

Cities: Skylines

App ID: 255710

Asset and mod package support with high-speed parallel SteamCMD downloads.

โœ“ Fully Verified

Project Zomboid

App ID: 108600

Mod.info metadata reading, workshop ID mapping, and direct mods directory placement.

โœ“ Fully Verified

Garry's Mod

App ID: 4000

Direct download of GMA workshop archives into addons directories.

โœ“ Fully Verified

Don't Starve Together

App ID: 322330

Direct mod folder placement and automatic modinfo.lua discovery.

โœ“ Fully Verified

Hearts of Iron IV

App ID: 394360

Total conversions and submod downloads with zip archive backups.

โœ“ Fully Verified

Any Steam Workshop Game

Custom App ID

Simply enter any Steam App ID and target folder path in the Settings tab to manage any game!

โœจ Universal Support
GOT QUESTIONS?

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.