Open-source project
mmvanheusden/SteamDepotDownloaderGUI avatar
mmvanheusden/SteamDepotDownloaderGUI

SteamDepotDownloaderGUI: a Tauri front end for pulling older Steam builds

Downgrade Steam games to older versions with ease using DepotDownloader

569 stars37 forksTypeScriptGPL-3.0

At a glance

What is it?
SteamDepotDownloaderGUI wraps DepotDownloader in a Preact and Tauri interface so you can pick an older manifest and download a previous build of a game you own, across Windows, Linux and Steam Deck. The project is explicit that the GitHub repository is the only legitimate download, because the tool takes your Steam credentials.
Who is it for?
SteamDepotDownloaderGUI suits a player who owns a game and needs an earlier build, whether for a save that predates a patch, a mod that broke on an update, or a speedrunning setup, and the fact that the GUI is only the front end means DepotDownloader's own behaviour and its safety documentation are what you should read first. It does not suit you if you want a way to obtain a game you have not bought, and the project's own warning about that is not decorative.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the tool does, and the risk that comes with it

SteamDepotDownloaderGUI is a graphical wrapper for DepotDownloader, designed to make downloading older versions of Steam games easy, and the project description says it lets you downgrade Steam games to older versions with ease.

The interesting part is the caution block on the installation section, and it deserves to be quoted rather than paraphrased. This GitHub repository is the only official place to download this software. If you have paid for this software, or downloaded this from a different place than here, you should reconsider your digital literacy skills, and are at risk of having your Steam account stolen.

That is a strange thing to read in a README, and it is not a joke. The reason is visible in the design: the tool needs to authenticate against Steam's content servers to fetch a specific depot version, which means it handles your Steam credentials, which is exactly the shape of a credential stealer. A fake download of this tool is therefore a plausible and effective attack, and the warning is the author defending users from their own doppelganger.

The functional purpose is legitimate and narrow. Steam games are versioned as depots, and a depot downloader can fetch a specific build of a depot rather than whatever is current. That is what you need when a patch has broken your save, when a mod targets an older engine version, or when you are setting up a speedrunning environment, and the topic tags name the games and the Steam Deck explicitly.

The rule that follows from all this is simple: take the binary from the GitHub releases, and nothing else.

The homepage is at depotdownloader.aphex.cc, and the documentation links at the top of the README point to a tutorial, a safety page and a how-it-works page, alongside a video on downgrading Subnautica.

What a depot is, and why the old build is still fetchable

The mechanism rests on how Steam actually distributes a game, and it is worth understanding because it explains both why the tool works and where its limits are.

A Steam application is not one file. It is a set of numbered depots, and each depot holds a chunk of the game's data. The client receives manifest files that describe which content belongs in which depot and which build of it, and a depot downloader can ask Steam's content servers for a specific build of a specific depot rather than whatever the launcher currently considers current.

That is the whole trick, and it is a legitimate use of the same content delivery infrastructure the launcher uses. The launcher fetches the newest build; this tool asks for a build number you choose. Nothing about it bypasses the ownership check on the account, because the credentials you supply are the credentials that prove you own the game and the download is authorised against your account exactly as a normal install would be.

The practical consequences follow from that. You need the account that owns the game, you need the game to have had a previous build, and the depot you ask for has to be one that still exists on the servers. Games that are shipped as a single consolidated package with no meaningful intermediate builds give you nothing to pick from, and this is why the tool is most useful for the older, larger titles where a patch changed a lot.

The reason people want an old build is almost always a save or a mod rather than the game itself. A patch that changed the save format can make a save unreadable, a mod written against a specific engine version stops working on the next release, and a speedrunner wants the version the category was set on. The topic tags name the games this comes up with, including GTA5, Skyrim and Subnautica.

None of that is the same as obtaining a game you have not bought, and the project separates the two explicitly through the safety and how-it-works pages it links.

Three platforms, and what a Tauri shell means here

The cross-platform support is listed as a simple table, with Windows, Linux and macOS all supported, and the Linux release is the one that matters for the Steam Deck, since the topic list includes the Steam Deck and the installation section has a separate heading for Linux and Steam Deck alongside Windows.

Both platform downloads come from the same place, the latest release on the repository's releases page, with a separate Windows release and a separate Linux release. There is no package manager route, no app store listing and no Homebrew formula, which is a consequence of the design rather than an omission.

The stack explains why the binaries are shaped this way. The package manifest names the project vectum, it is marked private, and it is at version 3.2.1 with the licence recorded as GPL-3.0-only. The build is tsc and vite build for the front end, with separate dev, build and preview scripts and a tauri script for the desktop shell.

The front end is Preact rather than React, with TailwindCSS 4 for styling through the Vite plugin, and the Tauri plugins listed are the ones a file downloader needs: clipboard-manager, dialog for the save path, and opener to hand a finished file to the system. The presence of @xterm/xterm with the add-on fit is the interesting one, because a terminal in the interface is how you watch a depot download progress and pass the credentials the tool needs.

That combination, a Tauri shell around a Rust core, is what gives you a native window with a web front end and a much smaller download than an Electron build, and it is also why the project is a single Rust and TypeScript repository with src-tauri/ holding the desktop side and src/ the interface.

The interface, and the terminal that shows the work

The interface is a Tauri window hosting a Preact application, and the screenshots in the README show the two halves of what it does: the downgrader interface and the downloader running.

The Tauri plugin list is the best guide to what the interface actually does. The dialog plugin is for choosing where the downloaded depot lands. The opener plugin hands a finished file or folder to the operating system, which is how you get to the game directory afterwards. The clipboard manager plugin is there so that a depot identifier can be pasted in rather than typed. And the xterm terminal with its fit add-on is the progress display, because a depot download reports what it is fetching in a stream of text rather than a single percentage bar.

That last point is a real design decision rather than an incidental dependency. A large depot download is long, it can fail partway, and the interesting information is which depot is being fetched and what the server said. Showing a terminal means the tool is not hiding anything behind a spinner, which fits a program whose entire safety argument is that you should be able to see what it is doing with your account.

The rest of the front end is deliberately conventional. TailwindCSS 4 handles the styling through the Vite plugin, and the class sorting requirement in the contribution notes is the visible consequence of that. There is no component library in the dependency list, so the interface is built from the small set of primitives the project needs, and the tailwindcss v4 plugin plus the vite build are the only styling machinery in the tree.

The dev server is vite, the production build is tsc followed by vite build, and the tauri script drives the desktop shell. The dev dependencies cover the expected ground: the Tauri CLI at 2.11.4, the Preact Vite preset, ESLint 10 with typescript-eslint, TypeScript 7, and Vite 8, with an iconify icon component for the icon set.

So the whole application is a web front end in a native shell with a terminal in it, and the parts of the stack that do the real work, DepotDownloader and the Rust side of Tauri, are the parts the project does not implement.

Credits, contributions and the housekeeping a GPL project carries

The credits section names the projects the software makes use of, and the list tells you what you are actually running.

DepotDownloader is the engine, and it is the piece that talks to Steam. Tauri is the application framework. Preact is the front end library. And Hubut Sans is the typeface, under its own licence, which is a detail worth noting because a font licence is a separate thing from a code licence and projects often get that wrong.

The donation options are a PayPal address and a donate button in the interface, and the contribution guidance is short. Every pull request is welcome, with the instruction to clean up the code using:

console
$ pnpm eslint --fix src/

and to sort the Tailwind classes using RustyWind. The class sorting instruction is a small sign of a project that takes visual consistency seriously, since a sorted class list is what makes a diff of a Tailwind-heavy component readable.

The tooling in the manifest is worth a note. The package manager is pinned to pnpm 11.17.0, TypeScript is 7.0.2, Vite is 8.1.5 and the Tailwind plugin is 4.3.3, so this is a project being kept current rather than one left on an old toolchain. The dev dependency list is short because the front end is small, and the ESLint setup uses the flat config with typescript-eslint and the @eslint/js base.

The repository layout is the standard Tauri shape: src/ for the Preact interface, src-tauri/ for the Rust side, an eslint.config.js, a vite.config.ts, a tsconfig.json and a tsconfig.node.json split, a pnpm-workspace.yaml, a .vscode/ directory, a CODE_OF_CONDUCT.md and the LICENSE.

The last push was on 2026-10-12 and the release history shows v3.1.0 and v3.2.0 both in early February 2026 followed by v3.2.1 in July, so the project is active with occasional releases rather than on a schedule.

Editorial conclusion

SteamDepotDownloaderGUI suits a player who owns a game and needs an earlier build, whether for a save that predates a patch, a mod that broke on an update, or a speedrunning setup, and the fact that the GUI is only the front end means DepotDownloader's own behaviour and its safety documentation are what you should read first. It does not suit you if you want a way to obtain a game you have not bought, and the project's own warning about that is not decorative. Before you run it, read the safety and how-it-works pages linked from the repository, and take the releases from the GitHub releases page only, since a binary that asks for your Steam password is exactly the shape of thing that gets bundled into a stealer.

Frequently asked questions

What does SteamDepotDownloaderGUI do?

It is a graphical wrapper for DepotDownloader, designed to make downloading older versions of Steam games easy. It works across Windows, Linux, including the Steam Deck, and macOS, by presenting a GUI over the depot download mechanism.

Where should I download SteamDepotDownloaderGUI from?

Only from this GitHub repository, using the latest release page for the Windows or Linux build. The README warns that if you paid for the software or downloaded it elsewhere, you are at risk of having your Steam account stolen, because the tool handles your Steam credentials.

What is SteamDepotDownloaderGUI built with?

A Preact front end with TailwindCSS 4 styled through Vite, wrapped in a Tauri shell, so the desktop side is Rust and the interface is TypeScript. The package is named vectum, is marked private, and is at version 3.2.1 under GPL-3.0-only.

How do I contribute to SteamDepotDownloaderGUI?

Pull requests are welcome. Clean up the code with pnpm eslint --fix src/ and sort the Tailwind classes with RustyWind. The project also lists DepotDownloader, Tauri, Preact and the Hubut Sans font among the projects it makes use of.

Official sources

  1. License: GPL-3.0
  2. mmvanheusden/SteamDepotDownloaderGUI on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/mmvanheusden-steamdepotdownloadergui.svg)](https://hysenlabs.com/projects/mmvanheusden-steamdepotdownloadergui)

Was this useful?