Self-hosted game save sync for Linux PCs and the Steam Deck, with versions and a web UI
205
Self-hosted game save sync and backup for Linux PCs and the Steam Deck, a Ludusavi alternative with a web UI.
Keeps the saves of every game the same on all your PCs, with every version kept and nothing ever overwritten.
One server on your home network, one small agent per PC, Google Drive as the offsite copy; free and open source.
docker run -d -p 8467:8467 -v spielstand:/data tristanteu/spielstand
Install • Features • Screenshots • Alternatives • FAQ • Documentation
Ludusavi finds and backs up saves for almost every game, but syncing between PCs means each PC backing up to and restoring from a shared cloud folder on its own, at the right moment, without ever restoring an older state over a newer one. Steam Cloud covers only some games, and only Steam.
Runs on any Linux server, NAS or Raspberry Pi with Docker or Podman; the agent on Bazzite, SteamOS, Fedora, Ubuntu, Arch and every other distribution with systemd.
The server, with Docker Compose:
services:
spielstand:
image: tristanteu/spielstand:latest
restart: unless-stopped
ports:
- "8467:8467"
volumes:
- ./data:/data
environment:
SPIELSTAND_PUBLIC_URL: http://homeserver:8467
SPIELSTAND_MIRROR: gdrive:Spielstand # optional offsite copy through rclone
Open http://homeserver:8467, choose a password, then Devices → Add device and run the command
it shows on each PC, as your normal user:
curl -fsSL http://homeserver:8467/install.sh | sh -s -- K7Q-2MX
Podman Quadlet, Google Drive and everything else: installation guide.
spielstand-agent launch %command% loads the newest state right before a
game starts.~/Games) load into the right prefix on every PC, whatever its path or user name.--dry-run and JSON output. A proposal is only backed up on its PC
until you take it over.![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
Spielstand is made for one person or household with several Linux PCs who wants saves to follow them.
| What it is | Where Spielstand differs | |
|---|---|---|
| Ludusavi | backup tool for game saves, with cloud upload through rclone | a server with versions decides what each PC gets; uses Ludusavi's manifest and library |
| Steam Cloud | Valve's save sync for games that support it | every game, any launcher, versions you can go back to |
| Syncthing | file sync between devices | knows games and running processes, keeps history, resolves conflicts per game |
| Game Backup Monitor | backup tool that watches games on Windows and Linux | sync between PCs with one server and a web UI |
Yes. Install the agent on both (in desktop mode on the Deck); whatever you played last is loaded on the other one when you start the game there. How syncing works
Spielstand takes over Ludusavi backups, also from Google Drive, and shows them with every other version in its web UI. Coming from Ludusavi
Both states are kept. The web UI shows them side by side and you pick the one to continue with; the other stays a version.
Yes. Saves in Wine and Proton prefixes, Heroic and Lutris are found through the Ludusavi manifest. When every game has its own prefix, Spielstand finds them in your game folders or in Prefixr and loads each save into that game's prefix on every PC.
Yes, without setup. Each title is its own game, and a save moves between emulators and profiles: from Eden on one PC to Ryujinx on another.
Add it as a custom game: a name and the paths of its saves, in the web UI or with spielstand-agent custom add. Or run spielstand-agent skill install and ask Claude Code on that PC to find what is
missing. Custom games and Claude Code
Not yet: the agent is for Linux. The server runs anywhere Docker runs.
The full documentation, with search, is at firsttris.github.io/spielstand.
| Installation | server with Docker or Podman, Google Drive, one command per PC |
| How syncing works | versions, safety rules, conflicts, retention |
| Coming from Ludusavi | taking over existing backups |
| The agent | commands, Steam launch option, files |
| Custom games and Claude Code | games Spielstand does not find on its own, added by hand or by an assistant |
| Configuration | every setting |
| Backup and recovery | the mirror, rebuilding a server, password reset |
| Development | building, checks, architecture, releases |
Requires Rust (stable), Node.js 24 and pnpm 10.
git clone https://github.com/firsttris/spielstand && cd spielstand
cd web && pnpm install && pnpm build && cd ..
cargo run -p spielstand-server --example demo # demo data on :8467, password spielstand-demo
Rust (axum, SQLite, the Ludusavi crate) for server and agent; React 19, TanStack, Tailwind 4 and shadcn/ui-style components for the web UI. Architecture, tests and releases: Development.
Issues and pull requests are welcome. For a bug in syncing, please add the game, spielstand-agent status and the agent log (journalctl --user -u spielstand-agent) of the PCs involved. Please run
the checks before opening a pull request.
⭐ Like Spielstand? A star on GitHub helps others find it.
🐛 Report a bug · 💡 Request a feature
License: AGPL-3.0 · © Tristan Teufel and contributors
Changed versions you pass on or run for others must offer their source code under the AGPL; a commercial license without these obligations is available via teufel-it.de.
Spielstand is not affiliated with Ludusavi, Valve, Steam or Google.
Content type
Image
Digest
sha256:3f53c2f49…
Size
61.2 MB
Last updated
1 day ago
docker pull tristanteu/spielstand