Guarded backups for Ableton Live projects. Roadcase wraps rclone with the
checks a music library needs and a plain rclone sync cannot make: it knows what
a Live Set is, it refuses to run when your source looks wrong, and it can never
delete — only move aside.
rclone does the transfer. It does the OAuth, the retries, the chunked uploads, the checksums, the bandwidth limits and the seventy-odd storage backends, and it does all of that better than a new tool ever would. Roadcase does not replace any of it and does not reimplement any of it. Every byte that moves is moved by the rclone binary you already have installed.
What rclone cannot do is know what an Ableton Live project is. It cannot tell
a library of Live Sets from an empty folder sitting at the same path. It cannot
tell that a .als plays a sample living three directories outside the project.
It cannot tell that the drive letter it was handed today belongs to a different
disk than yesterday.
That gap is the product.
The obvious disaster — an unplugged drive — is already safe. rclone exits 3 and touches nothing.
The dangerous case is a source path that exists but is empty or half-populated:
a drive letter reassigned to another volume, a filesystem mounting RAW, a folder
recreated by a restore, a half-mounted network share. Point rclone sync at that
and it does exactly what you asked — it makes the destination match the source.
It empties your backup and exits 0. Nothing warns you, and cloud trash purges
on a timer.
Roadcase refuses:
REFUSED: only 1 project folders were found under D:\Music\Projects,
but at least 40 are expected; the source looks empty or half-populated
Nothing was uploaded and nothing was deleted.
| Guard | What it does |
|---|---|
| Canary file | A marker file must exist in the source. Absent means this is not your library — refuse. |
| Project-count floor | Refuse when fewer project folders are found than you know you have. |
| Volume identity | The source is pinned to one physical volume, so a reassigned drive letter cannot silently redirect tonight's backup. |
| Two-pass veto | Pass 1 counts what a real run would remove; over budget refuses that destination's sync before it starts. Nothing is attempted there and no attic folder is created — other destinations still run. |
| Dated attic | Anything that would be deleted is moved to a timestamped folder instead, server-side. Nothing is ever deleted. |
| Placeholder detection | Catches iCloud "Optimize Storage" and OneDrive Files-On-Demand stubs, so a "successful" backup can't contain no audio. |
| Destination marker | Records which machine owns a destination. A hostname mismatch is a hard refusal, so a second computer can't overwrite the first one's backup. |
| Flag denylist | The argv builder panics on unsafe rclone flags rather than letting them reach the process. |
| Dead-man's switch | Only a run that actually transferred may report success, so a drive left unplugged for weeks goes quiet instead of sending cheerful pings. |
Two rules hold everywhere:
- The nightly job is read-only on your projects, permanently. Anything that writes into a project folder is a command you run yourself, watching it.
- Freezing is not deleting. Removing a project from the checklist stops new copies being sent; whatever is already backed up stays exactly as it is.
go install github.com/DylanDrechsel/roadcase@latestPrebuilt binaries for Windows, Linux and macOS are attached to
tagged releases with a
checksums.txt. Or build from source:
git clone https://github.com/DylanDrechsel/roadcase
cd roadcase
go build -o roadcase .Roadcase needs rclone on your PATH (or its location set in the config) and an
rclone remote you have already configured with rclone config. On Windows the
Roadcase window can install rclone and connect Google Drive for you; see below.
You don't need a terminal. From the
latest release, download
roadcase_<version>_windows_amd64.zip, then:
- Extract the zip (right-click, Extract All); where does not matter yet. Don't run it from inside the zip: Windows runs that copy from a temporary folder it later cleans. Before you schedule nightly backups, the Schedule page's Copy Roadcase to a permanent folder puts it somewhere safe: not a temporary folder, and not one OneDrive syncs (your Desktop and Documents often are).
- Double-click
roadcase.exe. A window opens with the settings, the first-time setup, the nightly schedule, a health check, a preview of exactly which songs and files the next backup would upload or move to the attic, and a button to run the backup now. - On the Setup page, press Install rclone. Roadcase downloads the current rclone from rclone.org, checks it against the checksum rclone publishes, and sets it up for you. No administrator rights and no terminal.
- Press Connect Google Drive. Google needs your own free sign-in keys for Drive now (rclone's shared ones are being retired during 2026); the window walks you through making them in Google Cloud Console in your browser, then opens Google's sign-in page. The sign-in is kept by rclone; Roadcase never sees it. docs/google-drive-api-key.md has the steps with more detail.
Windows may stop you on the way:
- SmartScreen ("Windows protected your PC"): the build is not code-signed
yet. Choose More info, then Run anyway. (If you want to check the
download first,
checksums.txtlists its SHA-256; checking it takes a command prompt, and is optional.) - Smart App Control blocks unsigned programs outright and has no Run anyway. Until signed builds exist, Roadcase won't run on a PC with it turned on.
- Controlled folder access (Windows Security, ransomware protection) can stop Roadcase writing the canary file into a protected folder such as Music or Documents. The window says so when it happens. Allow Roadcase there, or create the file by hand.
- OneDrive (or another sync service) may be syncing the folder you put
roadcase.exein. Your Desktop and Documents often are. OneDrive can then remove the local copy to save space, and the nightly backup cannot start while you are offline. The Schedule page warns about this. Press Copy Roadcase to a permanent folder there, and schedule from the copy.
The window is a page Roadcase serves only to this computer and shows in
Microsoft Edge's app mode. It has no safety logic of its own: every button
runs the same checks as the commands below. docs/window.md
explains how it keeps other programs and websites out. Running roadcase gui
opens it on any platform.
roadcase setup # wizard: writes the config, plants the canary, adopts the destination
roadcase doctor # confirm everything is where the config says it is
roadcase backup # the guarded two-pass run
roadcase check # would every project come back whole from a restore?
roadcase schedule installOpens the Roadcase window: settings, first-time setup, the nightly schedule, the
health check, a preview of what a backup would upload and move to the attic, and
the backup itself. On Windows, double-clicking roadcase.exe does the same.
Started from a terminal with no arguments, Roadcase still prints its usage.
-config <path> · -no-window
Interactively creates the config, writes the source canary, adopts every
destination and offers to install the nightly schedule. It is the only
command permitted to adopt a destination that already holds data, and it does so
only after showing you what is there and asking. It never reads rclone.conf.
-config <path> · -force · -no-schedule
The guarded two-pass run. Pass 1 counts the removals a real run would perform and
refuses that destination's sync before it starts if the count is over budget —
nothing attempted, no attic folder created. Pass 2 then runs with --max-delete
pinned to exactly what pass 1 counted, so any divergence aborts. A destination
that refuses does not stop the others: an archive drive is the independent second
line of defence for exactly the nights the cloud sync balks.
-config <path> · -dest <name> · -plan · -no-ping · -timeout <dur>
The command nothing else on the market has. Reads every Live Set, resolves every sample reference, and reports which projects would not come back whole from a restore — separating samples missing from disk (gone; no setting saves them) from samples missing from the backup (on disk, but no destination receives them). Grades against the filter rules backup actually uses, so a frozen project is correctly reported as not backed up even though every byte of it is healthy.
Read-only and entirely offline: never runs rclone, never opens rclone.conf,
never writes to your library.
-config <path> · -json · -limit <n> · -originals · -strict · -timeout <dur>
Finds samples a Set plays from outside its own project folder and copies them
into _Rescued beside each destination that opts in. Your projects are never
written to and no .als is ever rewritten — use Live's own Collect All and
Save for that. Roadcase's job is finding the projects that need it.
-config <path> · -dest <name> · -plan · -originals · -yes · -timeout <dur>
Copies data back out of a destination. Always an rclone copy: sync,
--backup-dir, --max-delete and every --delete-* flag are refused by the
argv builder itself, so a restore cannot remove anything — at the destination or
at the folder it restores into. Restore into a new folder and merge by hand; a
target inside your live library is refused.
-config <path> · -to <folder> · -dest <name> · -project <path> · -attic <stamp> ·
-extras · -rescued · -plan · -yes · -timeout <dur>
Reports on rclone, the config, the source, the canary and every destination.
Read-only, and unlike backup it reports every problem it finds rather than
stopping at the first. Safe to paste into a bug report — it contains no tokens.
-config <path> · -no-remote · -timeout <dur>
Chooses which projects ride along each night. New projects are included automatically and flagged unreviewed, so forgetting to add one costs nothing.
roadcase projects list [-unreviewed] [-frozen] [-filters]
roadcase projects exclude "Old Project" -note "finished, archived"
roadcase projects include "Old Project"
roadcase projects review "New Project"
Projects are identified by full path under the source, because two projects can share a folder name in different parents.
Manages the nightly job through your own OS scheduler: Task Scheduler on Windows,
launchd on macOS, a systemd --user timer on Linux.
roadcase schedule install [-config <path>] [-at HH:MM] [-plan]
roadcase schedule uninstall [-plan] [-yes]
roadcase schedule status
Roadcase refuses to remove a job it did not create.
Written for schedulers: a refusal is never reported as success.
| Code | Meaning |
|---|---|
0 |
Success |
1 |
Failure |
2 |
Refused by a guard — nothing was uploaded to, or deleted at, the destination that refused. In a multi-destination run Roadcase says so explicitly when an earlier destination had already moved data. |
3 |
Source absent (drive unplugged) — normal, not a bug |
7 |
Safety brake tripped mid-run — check the attic |
A single TOML file, written by roadcase setup. Abbreviated:
[rclone]
binary = 'rclone' # a bare name is resolved on PATH
config = 'C:\Users\you\AppData\Roaming\rclone\rclone.conf'
transfers = 4 # not timidity: 32 measured SLOWER against Google Drive
[source]
path = 'D:\Music\Projects'
canary = '.backup-canary.txt'
min_dirs = 40 # refuse below this many project folders
volume_id = '...' # pins the source to one physical disk; setup fills this in
[[source.extra]] # rides along to every destination, in a SIBLING path
path = 'C:\Users\you\Documents\Ableton\User Library'
as = 'User Library'
[[destination]]
name = 'mydrive'
remote = 'mydrive:Music/Ableton Projects'
mode = 'sync' # may remove, so it needs an attic
attic = 'mydrive:Music/Ableton Attic' # MUST be a sibling, never inside
max_removals = 25
carry_rescued = true # opt this destination into _Rescued
[[destination]]
name = 'archive'
remote = 'E:\AbletonArchive\Projects'
mode = 'copy' # no delete path at all: an archive, not a mirror
skip_if_absent = true # unplugged is skipped quietly, never a failure
[projects]
default_for_new = 'include'
[rescue]
enabled = true
folder = '_Rescued'Two destination profiles are intended to differ: the cloud one mirrors (with an attic and a delete cap), while an external drive only ever gains files, so a project you clear off your working disk survives there forever.
Backblaze is cheaper for bulk storage, and if you want unlimited whole-machine backup you should probably use it. Two caveats matter for this use case: it purges external drives not reconnected within 30 days, which is fatal for a sample drive you plug in occasionally, and it has no idea what a Live Set is — it will happily back up a project whose samples went missing months ago and tell you it succeeded.
Dropbox and Drive folder sync are two-way: a bad local state propagates up. Roadcase is one-way by construction, with a delete gate in front of it.
Plain rclone sync in Task Scheduler is what this replaces, and it is a
perfectly good tool — until the day your source path is present but empty.
- docs/safety.md — the full safety model and why each guard exists
- docs/window.md — the Roadcase window and what keeps it safe
- docs/restore.md — the calm procedure for getting work back
- docs/google-drive-api-key.md — your own OAuth client
- RESTORE-WITHOUT-ROADCASE.txt — bare rclone recovery, for the day you no longer have this tool. Copy it into the cloud beside your data.
- CONTRIBUTING.md — building, testing and the rules for changes
Pre-release. The safety-critical paths — the argv denylist, the two-pass gate,
the preflight guards, the .als parser — carry the bulk of the test suite, and
the backup, restore, check, rescue and doctor paths have been exercised end to end
against a real Live library.
macOS is cross-compiled but untested. It builds and is ad-hoc signed, but no one has run it on a Mac yet. Reports welcome.
MIT — see LICENSE.