Skip to content

Installation

dotsync is a single static binary for macOS and Linux on amd64 and arm64. At runtime it needs git 2.20 or newer, and nothing else.

Terminal window
curl -fsSL https://raw.githubusercontent.com/pungoyal/dotsync/main/install.sh | sh

The script:

  1. finds the latest release, and the archive for your OS and CPU
  2. checks the archive’s SHA-256 checksum against the release’s checksums.txt
  3. checks its signed build provenance with gh attestation verify, if the GitHub CLI is installed and logged in
  4. installs dotsync to ~/.local/bin
  5. re-installs the background agent, if this machine already has one, so it matches the new version

It needs curl or wget, and sha256sum or shasum. These variables change what it does:

Variable Default Effect
DOTSYNC_VERSION latest release to install, e.g. v0.5.0
DOTSYNC_BIN_DIR ~/.local/bin where to install
DOTSYNC_REQUIRE_ATTESTATION 0 1 refuses to install unless the provenance check passes
For example
curl -fsSL https://raw.githubusercontent.com/pungoyal/dotsync/main/install.sh | DOTSYNC_REQUIRE_ATTESTATION=1 sh

Homebrew and apt put dotsync on your PATH already. Otherwise, if dotsync version says command not found, add ~/.local/bin to your PATH:

Terminal window
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && exec zsh
dotsync version
dotsync 0.5.0 (ed63c37, 2026-09-21T06:18:53Z) go1.27.1 darwin/arm64

That’s the version, the commit it was built from and that commit’s date, the Go version, and the platform.

If you installed with Homebrew, run brew upgrade dotsync; with apt, sudo apt update && sudo apt upgrade. dotsync update doesn’t replace a binary a package manager owns: it tells you that command instead. Otherwise:

Terminal window
dotsync update # install the latest release: checksum and provenance verified
dotsync update --check # only say whether there's a newer one

update replaces the binary you ran and, if it’s a different file, the agent’s copy in ~/.local/bin. If a background agent is installed, it then re-installs it with the new version, so there’s nothing else to do. It only replaces a binary after the checksum matches. dotsync doctor also tells you when an update is available.

Versions before 0.3.0 don’t have update: run the install script once more to get it. To go back to an earlier release, dotsync update --version v0.4.0.

With curl, the install script shows a progress bar, abandons a transfer that stays below 1 KB/s for 20 seconds, retries, and finally tries once more over IPv4. If it still fails, test your connection to GitHub’s download host, which is separate from github.com:

Terminal window
curl -v -o /dev/null https://github.com/pungoyal/dotsync/releases/latest/download/checksums.txt

If that hangs too (often a broken IPv6 route, or a proxy), try it again with curl -4, or download the archive from the releases page in a browser.

Continue with the quick start.