Cloudward

v0.2.0·Updated 2026-08-28

Sync your Outward saves across devices via a mounted/shared folder: boot-time reconcile, offline-first play, fork detection/resolution, crash-safe session lock. Verified across real devices; some offl

About this mod Author’s original text

Cloudward — sync your saves across devices

📖 Full documentation: Cloudward wiki page

Actively in use across real devices. The compute layer (mount guard, fork detection, lock/lease,

reconciliation) is fully unit-tested, and the full sync loop — boot-time reconcile, offline play,

clean two-device handoff, and both paused and auto fork resolution — has been live-verified across

real physical machines over a real NAS share, including three bugs found, fixed, and re-verified in

that process. Still being staged: some offline/reconnect edge cases and crash-recovery scenarios

that need a human at the keyboard to exercise. It is inert by default (Enable=false) —

installing it changes nothing until you turn it on. Back up your SaveGames/ folder before your

first real sync.

Outward has no built-in way to carry a save between two computers — Steam Cloud is deliberately

unsupported for it. Cloudward fills that gap: point it at a folder mounted on every device you play

on (a NAS share, a Syncthing folder, a mapped drive) and it keeps your character in sync.

Requires: BepInEx 5 (Outward's Mono branch — see Compatibility) and ForgeKit. No

SideLoader.

Installing

Install and the dependency comes with it. Installing by hand: drop ForgeKit/ and

Cloudward/ side by side into BepInEx/plugins. If BepInEx logs a dependency error and refuses to

load Cloudward, ForgeKit is missing.

How it works

The game always writes to its own local save folder — Cloudward never redirects that. The mount

you point it at is a synced replica, not the source of truth:

  • At boot, Cloudward reconciles: it pulls in anything newer on the share before the character list

loads, so a character you played on another device shows up here.

  • While you play, completed save snapshots push out to the share once you're online and holding

the sync lock.

  • Offline just works. No mount, no marker, or another device holding the lock — Cloudward plays

entirely from local and catches up next time it can reach the share.

A marker file in the mount root is how Cloudward tells "actually mounted" from "empty directory

because the share isn't connected right now" — an unmounted mountpoint looks exactly like an empty

folder to your OS, so without the marker a sync could silently start writing to local disk instead of

the share. Cloudward creates the marker itself on first run when it can positively confirm the

folder is a real mount — the share already holds save data, or the platform probe sees it in the

mount table (native Linux /proc/mounts, or a Windows network drive / UNC path). It remembers doing

so per mount path, so a later launch with the share disconnected is correctly read as "offline",

not re-marked onto the placeholder. Under Proton (Linux / Steam Deck) an empty first-run share can

never be confirmed — the game-side process only sees Wine drive paths, so the probe can't reach the

mount table. That's expected: Cloudward stays offline, logs the instruction, and you run the

syncmarker command once (or touch the marker file) to bless the share; after that everything is

automatic. Set AutoCreateMarker=false for strict manual setup, where syncmarker is always

required.

A session lock (a small heartbeat file on the share) makes sure only one device pushes at a time.

It's crash-safe: a lock whose heartbeat goes stale (the device crashed, lost power, whatever) is

reclaimed automatically — nothing can wedge your saves.

If two devices genuinely diverge

If the same character was played offline on two devices before either could sync, Cloudward resolves

it automatically per the [Sync] ForkResolution setting — and always backs up the version it

doesn't keep to.cloudward-forks, so nothing is ever lost:

  • NewestWins (default) — keep whichever device has the most recent in-game save.
  • ThisDevice / OtherDevice — always keep this / the other device's version.
  • KeepBoth — keep this device's version live and preserve the other (v1: a restorable backup; a

true second s

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

BepInEx-BepInExPack_OutwardCeruleanCutlass-ForgeKit

File & checksum

Filename
Cloudward-0.2.0.zip
File size
287.6 KiB