Getting started

Install

One binary, no runtime dependencies. The client submits jobs; the server holds the databases.

Client

The client is a single Rust binary and only needs itself:

$ curl -fsSL https://snapshotdb.io/install.sh | sh

Published binaries support macOS (arm64, x86_64) and Linux (x86_64). The installer verifies the download checksum. For other Linux architectures, build from source.

Client and server: set SNAPSHOTDB_SERVER and SNAPSHOTDB_TOKEN before issuing database commands. GitHub sign-in does not replace your server access token.

Server engine binaries

Engines run on the server, so their binaries must be on the server’s PATH. Only install the engines you branch.

EngineBinaries on the server PATH
Postgrespg_ctl initdb psql pg_dump pg_dumpall
MySQLmysqld mysql mysqldump
MongoDBmongod mongosh + mongodump mongorestore for sync
SQLiteBundled with SnapshotDB; no separate SQLite runtime needed.

Filesystem

Copy-on-write cloning is cp -c (clonefile) on macOS/APFS and cp --reflink=always on Linux (Btrfs, XFS with reflink, or bcachefs). Linux refuses clones when reflinks are unavailable. macOS needs APFS for copy-on-write; other macOS filesystems may copy bytes. Point SNAPSHOTDB_HOME at a directory on a reflink-capable volume.

Restore branches after reboot

Run snapshotdb serve under your service manager. Starting the server restores branch proxies and restarts synced roots. Linux systemd units are included under deploy/ in the repository.