The grailward agent (the "watcher") is a tiny background app that watches your Diablo II: Resurrected save folder and uploads every changed character (.d2s) and shared stash (.d2i) the moment the game writes it. No parsing happens on your machine — it just sends the raw bytes; all the intelligence lives on the server. It lives in your menu bar (macOS), system tray (Windows) or notification area (Linux / Steam Deck) — no window, no terminal.
Get it
Open the download page and grab the build for your system — a .zip for macOS, an .exe for Windows, a single executable for Linux / Steam Deck. The page always points at the latest version and lists the SHA-256 of each file.
Set it up (three steps)
- Create a device token. Sign in and open Devices; create one per machine. The token is shown once — copy it.
- Run the agent. On macOS, unzip the download and open Grailward Agent; on Windows, run the
.exe; on Linux / Steam Deck, make it executable (chmod +x grailward-agent-linux-amd64) and run it. On the first launch a native dialog asks for that token and for your save folder. No terminal, no config files to edit. - Play. The agent keeps running in the menu bar and uploads every save automatically. Your armory, stash and grail stay in sync.
The menu-bar icon
Once running, a small grailward shield sits in your menu bar. Its color tells you the state at a glance:
- Gold — syncing: watching the folder and uploading changes.
- Grey — paused: you stopped the sync from the menu.
- Red — means a problem: the agent can't read the saves folder, or an upload or download failed. Hover for details — with several pending issues the tooltip shows a count. Red is persistent on purpose: it stays until the failed operation succeeds, so a quiet scan never hides a sync error.
- Circle of arrows — while a save (or its map files) is actually uploading or downloading, the icon shows a circle of arrows; it returns to the state color when the transfer finishes.
Click the icon for the menu:
- Pause / Resume sync — stop or restart watching without quitting.
- Sync mode — choose how saves are reconciled: push only (never write to disk) or two-way (also offer to pull newer server saves, always with confirmation).
- Pull latest now — check the server for newer saves and pull them (only shown in two-way mode).
- Poll interval — how often to scan (2s, 5s, 15s or 1 min).
- Sync map exploration — when on, each character's explored-map files (fog of war) are synced across machines alongside the save.
- Start with system — start with system (off by default) launches the agent automatically when you log in — a per-user setting, no administrator needed. Turning it off removes it. If you move the app, the agent repairs the login entry on its next start.
- Saves folder — submenu with two options: open folder (reveal the watched folder) or change folder (watch a different saves folder).
- Open logs — open the agent's log file for troubleshooting.
- About — show version and configuration details.
- Check for updates… — asks the server right away: if a newer version exists you can update on the spot; otherwise a dialog confirms you are on the latest version.
- Update to vX.Y.Z… — when a newer version is available, this item appears. Click it and confirm: the agent downloads the new version, verifies its integrity, replaces itself and relaunches — keeping the previous copy as a backup. It never updates while the game looks open or a transfer is running. Tip (macOS): after downloading, move Grailward Agent to your Applications folder (or ~/Applications) with Finder before opening it. macOS runs apps launched straight from the download location in a temporary read-only mode, which blocks updates; moving the app first avoids that entirely.
- Reset token… — clear the stored token and enter a new one (e.g. after revoking a device).
- Quit — stop the agent.
First-run security warning
The builds aren't code-signed yet, so your operating system warns the first time you open them. This is expected:
- macOS — right-click Grailward Agent and choose Open, or clear the quarantine flag in a terminal:
xattr -dr com.apple.quarantine "Grailward Agent.app" - Windows — on the SmartScreen prompt, click More info → Run anyway.
- Linux / Steam Deck — no signing prompt; just mark the file executable (
chmod +x grailward-agent-linux-amd64, or Properties → Permissions → Allow executing in your file manager) and run it.
Linux & Steam Deck
The Linux build is a single static executable — no installer, no .zip. Download it, make it executable (chmod +x grailward-agent-linux-amd64) and run it. The Steam Deck runs the very same binary: SteamOS is Arch Linux (KDE Plasma in Desktop Mode), so there's no separate "Deck" build — do the setup from Desktop Mode.
The native dialogs (the token and save-folder prompts) use kdialog on KDE — already present on the Steam Deck — and fall back to zenity on GNOME. If neither is installed, add one from your distro's package manager.
Where it finds your saves
On the first run the agent auto-detects your Diablo II: Resurrected save folder inside the usual Windows-compatibility layers, preferring whichever prefix actually contains a .d2s:
- Steam Play / Proton — the native install and the Flatpak one, including a prefix on the Steam Deck's microSD card.
- Lutris and plain Wine prefixes.
If nothing matches, it opens a folder picker so you can point it at the save folder yourself.
Start with system
Start with system in the tray menu writes a standard XDG autostart entry to ~/.config/autostart/, so the agent launches when you log in to the desktop. Turning it off removes the entry — no root needed.
The tray icon
The tray icon uses the StatusNotifier standard. KDE — including the Steam Deck's Desktop Mode — shows it out of the box. On plain GNOME the tray is hidden unless you install the AppIndicator extension; with it, the grailward shield appears like on any other desktop.
On the Deck in Gaming Mode there's no tray and no dialogs, but backups keep running in the background — every changed save still uploads. Change any settings from Desktop Mode, where the tray and dialogs are available.
Verify the download (optional)
To confirm a file matches what we published, compare its hash with the one on the download page:
shasum -a 256 grailward-agent-macos.zip # macOS
certutil -hashfile grailward-agent-windows-amd64.exe SHA256 # Windows
sha256sum grailward-agent-linux-amd64 # Linux
Advanced: command-line flags
The menu covers everyday use, but the same binary accepts flags if you launch it from a terminal:
--version— print the version and exit.--config— re-open the dialogs to change the token or save folder.--clear-token— erase the saved configuration and token.--saves-dir <path>— point at a specific save folder.--poll <seconds>— how often to scan (default 2).
Prefer not to run anything? You can also upload saves straight from the browser.