selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

OpenSave logo

Self-host OpenSave

v2.4.1

Game save sync across devices — Steam Cloud for every title

ReleaseOpen SourceMIT
Updatedlast week
LanguageGo
Setup difficultyModerate
Stars
241
Install with Docker
OpenSave library showing tracked games with cover art, branches, and snapshot countsScan results showing detected saves as a cover-art grid from Steam, emulators, GOG, Epic and repacksCloud backup provider selection with Google Drive connectedDevices screen showing a Steam Deck paired and onlineActivity timeline showing where each game was last played, saved and synced

What is OpenSave?

OpenSave keeps your game progress synchronized across every computer and handheld you own. It automatically locates save folders for over 20,000 titles from Steam, emulators, store launchers, and repack releases. When a game writes a file, only the altered data chunks move to your other machines — either directly on the same network or via a relay you control. Each change becomes a numbered snapshot, letting you restore an entire save or just one file, and even maintain separate playthroughs on different branches. When two devices edit the same save offline, the software spots the divergence using shared history and asks which version to preserve. You can also mirror snapshots to cloud storage providers or a local NAS. The program is a single Go executable with a built-in interface, plus a headless daemon and CLI for servers. All information stays in a local SQLite database and snapshot archives. The relay is stateless, keeps no data, and since version 2.4.0 forwards only end-to-end encrypted traffic.

Should you self-host OpenSave?

OpenSave scores 52/100 on selfhost.directory (how scoring works) and ranks #26 of 62 in Game Servers. It has 241 GitHub stars.

It shipped 4 stable releases in the past year. The latest, v2.4.1, came out on 2 October 2026. New versions land roughly every 2 days.

Setup is moderate: expect some configuration beyond a single command. It is MIT-licensed and written mostly in Go.

Its closest alternative on selfhost.directory is Hoard (48/100, 194 stars). OpenSave scores higher overall. See OpenSave vs Hoard side by side.

Features

  • Activity timeline
  • Auto-detection of 20,000+ games
  • Block-level delta sync
  • Conflict detection by sync lineage
  • Cross-device game matching
  • Desktop notifications
  • End-to-end encryption over relay
  • Exclude patterns per game
  • Flatpak for Steam Deck
  • Headless daemon and CLI
  • In-app Updates
  • Optional cloud backup
  • Peer-to-peer save synchronization
  • Self-hostable relay server
  • Snapshot history with rollback

OpenSave README

How to install OpenSave

Install OpenSave with Docker

Environment variables
PORT, MAX_PER_ROOM, OPENSAVE_RELAY_SECRETS, GOOGLE_DRIVE_CLIENT_SECRET, STEAMGRIDDB_KEY

docker build -f relay/Dockerfile -t opensave-relay . docker run -d --name opensave-relay --restart unless-stopped -p 8386:10000 opensave-relay

Relay server only; the main app is a desktop client. Container listens on port 10000 internally, mapped to 8386 on host.

How to configure OpenSave

  • GOOGLE_DRIVE_CLIENT_SECRETGoogle OAuth client secret for Drive sign-in via relay

    Google OAuth client secret for Drive sign-in via relay

    values: OAuth client secret string

  • MAX_PER_ROOM20Maximum devices allowed in one relay room

    Maximum devices allowed in one relay room

    values: Integer

  • OPENSAVE_RELAY_SECRETS/etc/opensave/relay-secrets.json or ~/.opensave/relay-secrets.jsonPath to relay secrets file (Google OAuth, SteamGridDB key)

    Path to relay secrets file (Google OAuth, SteamGridDB key)

    values: File path

  • OPENSAVE_RELAY_URLEnvironment variable override for relay URL

    Environment variable override for relay URL

    values: Any valid WebSocket URL

  • PORT8386 (10000 in container)Port for the relay server to listen on

    Port for the relay server to listen on

    values: Any valid port number

  • relay-urlwss://relay.opensave.orgCustom relay server URL for internet sync (wss:// or ws://)

    Custom relay server URL for internet sync (wss:// or ws://)

    values: Any valid WebSocket URL

  • STEAMGRIDDB_KEYSteamGridDB API key for cover art lookup

    SteamGridDB API key for cover art lookup

    values: 32-character API key

OpenSave releases & version history

FAQ

Can I use it without a GUI?

Yes. The headless daemon + opensave-cli covers scan, add, status, snapshot, rollback, branch, and checkout — ideal for servers, NAS boxes, and scripts.

Does it work on Steam Deck?

Yes. There's an official Flatpak that runs on stock SteamOS in Desktop Mode. It automatically finds saves inside Proton prefixes along with native Linux and emulator saves.

Is my data encrypted in transit?

Over the relay, yes — end to end as of v2.4.0: save data is sealed with a key derived from the two devices' own keys when they paired. LAN sync is direct and not encrypted.

Can old (JS) and new (Go) versions talk to each other?

Yes, during the transition. They share the same wire protocol and your data migrates automatically.

Does it work with non-Steam or emulated games?

Yes. If it writes a save to disk, OpenSave can track it — Steam, emulators, GOG, Epic, and repacks are auto-detected; anything else you can add by path.

What if two devices change the same save while offline?

OpenSave detects the divergence by sync lineage and asks you to keep yours, theirs, or both on a new branch. It never silently overwrites.

Is it really free?

Yes — free and MIT-licensed open source. No pro tier, no subscription, no ads, no telemetry.

Do I need a server or an account?

No. Devices sync directly with each other. The optional relay only matters for syncing across the internet, and you can self-host it with a single binary.

More in File Sync

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…