Community-maintained fork of CloudRedirect, Steam cloud-save redirect for unlocked games, adapted for OpenSteamTool
  • C++ 64.9%
  • C# 17.2%
  • C 13.9%
  • QML 3.2%
  • CMake 0.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
huanyuejue ce4c9fe947
Some checks are pending
DLL CI Build / build (push) Waiting to run
feat: add WebDAV storage provider support
Support WebDAV collections with configurable authentication, same-origin
redirects, bounded retries, and breadth-first PROPFIND listings. Route the
provider through shared storage configuration and Windows HTTP transport.

Keep listing completeness separate from request success: a missing root is
an empty listing, while failures after traversal starts leave it incomplete
so pruning cannot rely on a partial inventory.
2026-10-19 20:34:53 +08:00
.github/workflows ci: simplify release notes and clarify DLL-only integration with FSL 2026-10-18 19:09:01 +08:00
flatpak Ignore release output folders and set 2.6.5 release date 2026-08-18 01:45:13 -04:00
src feat: add WebDAV storage provider support 2026-10-19 20:34:53 +08:00
ui Remove the SteamTools patcher, we don't need it anymore 2026-08-18 02:04:49 -04:00
ui-linux Remove SteamTools UI, add unlock-solution detection, and harden cloud uploads 2026-08-06 22:40:58 -04:00
.gitattributes v2.5.0 2026-06-30 20:58:50 -04:00
.gitignore Remove the SteamTools patcher, we don't need it anymore 2026-08-18 02:04:49 -04:00
CMakeLists.txt feat: add WebDAV storage provider support 2026-10-19 20:34:53 +08:00
LICENSE Add MIT license 2026-08-18 01:13:45 -04:00
README.md feat: add WebDAV storage provider support 2026-10-19 20:34:53 +08:00
Version.props Bump version to 2.6.5 2026-08-18 00:30:38 -04:00

Maintenance Notice: The original author deleted the upstream repository (Selectively11/CloudRedirect). Initially a personal archive of the upstream code, this repository is now independently maintained by the fork maintainer to support Steam updates on Windows, fix issues, and develop features. The main branch no longer preserves upstream unchanged.

CloudRedirect

""Steam Cloud"" for 'lua' games.

This the only official source for CloudRedirect. Any other websites are not operated by me or are otherwise endorsed by this project. At least one of those fake sites was actively distributing malware!

This software is experimental and under active development. The underlying techniques are fairly insane. What this software tries to do is nuts to attempt. This software could damage your save files and probably will! It could overwrite your saves, cause weird conflicts, make your saves disappear, make you cry. Back up any saves you care about before using this software.

But it probably won't. It's been very solid for a long time.

Do not use this if you do not actively want cloud saves for "lua" games. If all you care about is the Steam Cloud error, disable Steam Cloud in properties for that game.

What it does

First, some back story:

Once upon a time, there was a tool called SteamTools. SteamTools supported cloud saving, kind of.

Later, Valve patched the (sinful) thing SteamTools did to sync saves. Specifically, SteamTools rewrote requests to AppID 760, which is Steam Screenshots. It sent all Steam Cloud requests for non-owned AppIDs there. It did not create prefixes for each individual game, which means that each lua app shared the saves with all others. This can cause saves to conflict if multiple games use the same save file name. This also means that your saves are replicated in the Steam/Userdata/<steamid>/<appid for lua game> folder for each lua app.

It also did not support Steam AutoCloud games at all. It would simply show a fake success message for those games.

What this tool does is redirect Steam Cloud requests for games that are injected to Google Drive/OneDrive/a local folder, including AutoCloud games. Everything is native inside the Steam Client, but the actual data is read/written to and from your cloud account. This was much harder to do than just redirecting read/write to an AppID that your account owns, but it was fun to make. It also is less likely to piss off Valve.

How it works

CloudRedirect for Windows consists of a C++ DLL and a WPF companion app:

  1. The companion app is used to copy the DLL to your Steam folder and let the user login to their cloud provider.
  2. The DLL hooks Steam's internal cloud save RPC handlers via vtable interception black magic.
  3. When a lua game attempts to read or write cloud save data, the DLL intercepts the calls and redirects it. If the game is owned, the game uses normal Steam Cloud as expected. If a lua is present that only unlocks DLC, the game will use normal Steam Cloud.
  4. More dark magic occurs. Saves sync. Bytes flow. This all is visible in the Steam UI and looks identical to normal Steam Cloud functionality.

Supported cloud providers

  • Google Drive
  • OneDrive
  • Cloudflare R2
  • S3-Compatible - AWS S3, MinIO, Backblaze B2, Wasabi, DigitalOcean Spaces, and any self-hosted S3 server.
  • Local folder / mapped drive - by request of literally one user.
  • WebDAV - General WebDAV servers (Nextcloud/ownCloud, Alist/OpenList, Nutstore, Synology, IIS, Apache mod_dav, etc.), with Basic/Digest/NTLM/Negotiate/Bearer/anonymous authentication and self-signed certificates.

With more to come over time.

WebDAV

General WebDAV support based on protocol behavior rather than server-specific integrations. Supports Basic, Digest, NTLM, Negotiate, Bearer, and anonymous authentication, plus HTTPS, self-signed certificates, internal-network HTTP, custom ports, and system proxies.

This repository maintains only the Windows DLL. The host application's (Fluent-Steam-Lua) cloud-save page writes WebDAV configuration under %APPDATA%\CloudRedirect\:

  • config.json: set "provider": "webdav"; token_path points to the credentials file (falls back to webdav_credentials.json when empty).
  • Example webdav_credentials.json:
{
  "url": "https://dav.example.com/remote.php/dav/files/user/",
  "username": "user",
  "password": "app-password",
  "auth": "basic",
  "key_prefix": "",
  "allow_insecure_http": false,
  "allow_insecure_tls": false,
  "timeout_sec": 0,
  "extra_headers": []
}

Field descriptions:

  • url: full URL of the target collection (WebDAV server or user directory). A CloudRedirect subdirectory is created automatically unless the URL already ends in /CloudRedirect.
  • auth: basic (default, sent preemptively), auto (401 challenge negotiation, selecting Digest/NTLM/Negotiate automatically), digest, ntlm, negotiate, bearer (with bearer_token), or none (anonymous).
  • key_prefix: optional subdirectory under the base; spaces and Chinese characters are encoded automatically.
  • allow_insecure_tls: skip certificate validation for self-signed servers. An explicit http:// URL permits plaintext transport and logs a warning; allow_insecure_http is retained for configuration consistency with other providers.
  • timeout_sec: timeout per request in seconds; 0 uses transport defaults (maximum 300).
  • extra_headers: additional request headers, such as IIS's Translate: f.

The credentials file can initially contain plaintext JSON; on first read, the DLL encrypts it with DPAPI and writes it back. Restart Steam after configuration changes. Some servers, such as IIS, require enabling WebDAV publishing and adjusting request-body size limits.

Usage (Windows)

Grab the latest release from the Releases page.

Run the EXE. Pick your mode - STfixer mode for fixes to ST bugs, CloudRedirect mode for the good stuff. In Setup, hit 'Run All Patches'. Go to the Cloud Provider tab, select your provider. If it is a cloud provider, sign in to it.

That's it. Go launch Steam and watch the magic.

Building from source (Windows)

Prerequisites

  • Visual Studio 2022 (or Build Tools) with the C++ and .NET 8 workloads
  • CMake 3.20+

Build

cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release

This builds both the C++ DLL (build/Release/cloud_redirect.dll) and publishes the WPF app (ui/bin/publish/CloudRedirect.exe). The DLL is automatically embedded into the executable.

Or don't build it? Building Windows apps is pain.

Contibuting

CloudRedirect is open source. I welcome PRs. I love PRs.

I don't love downstream forks. You have a right to fork and do what you want, but if you make something useful, if you fix issues...I'd much prefer they be sent upstream! Help me help you! If you identify a problem/add a provider/improve the tool in any way, please consider submitting your changes as a PR, rather than keeping them in a downstream fork.