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.
Install
Section titled “Install”curl -fsSL https://raw.githubusercontent.com/pungoyal/dotsync/main/install.sh | shThe script:
- finds the latest release, and the archive for your OS and CPU
- checks the archive’s SHA-256 checksum against the release’s
checksums.txt - checks its signed build provenance with
gh attestation verify, if the GitHub CLI is installed and logged in - installs
dotsyncto~/.local/bin - 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 |
curl -fsSL https://raw.githubusercontent.com/pungoyal/dotsync/main/install.sh | DOTSYNC_REQUIRE_ATTESTATION=1 shOn macOS or Linux:
brew install pungoyal/tap/dotsyncThe formula installs the same release archive as the install script, pinned by its SHA-256 checksum, and the dotsync(1) man page. Homebrew keeps dotsync up to date: use brew upgrade dotsync.
Add the signed dotsync repository, then install the package:
sudo install -d -m 0755 /etc/apt/keyringscurl -fsSL https://pungoyal.github.io/dotsync/apt/dotsync.asc | sudo tee /etc/apt/keyrings/dotsync.asc >/dev/nullcurl -fsSL https://pungoyal.github.io/dotsync/apt/dotsync.sources | sudo tee /etc/apt/sources.list.d/dotsync.sources >/dev/nullsudo apt update && sudo apt install dotsyncTo check the key before trusting it, run gpg --show-keys /etc/apt/keyrings/dotsync.asc. It should print the fingerprint FD8B DCCB 9FAE 77A7 03F3 7154 3EC2 40F3 0AB4 EE33, which is also listed in the project’s security policy.
The repository serves the latest release for amd64 and arm64, and apt trusts its key for this repository only (Signed-By). The package installs /usr/bin/dotsync and the man page, and depends on git. apt keeps dotsync up to date along with your other packages. It’s tested on Ubuntu 22.04 and 24.04, and Debian 12 and 13.
To install without adding the repository, download dotsync_<version>_<arch>.deb from the latest release, verify it, and run sudo apt install ./dotsync_*.deb. To update, install the next release’s .deb the same way.
With Go 1.23 or newer:
go install github.com/pungoyal/dotsync/cmd/dotsync@latestThe binary goes to $(go env GOBIN), or to $(go env GOPATH)/bin (usually ~/go/bin) if GOBIN isn’t set.
-
Download
dotsync_<version>_<os>_<arch>.tar.gzfrom the latest release.<os>isdarwinorlinux;<arch>isamd64orarm64. -
Optionally, verify it.
-
Extract the binary and put it on your
PATH:Terminal window tar -xzf dotsync_*_darwin_arm64.tar.gz dotsyncinstall -m 0755 dotsync ~/.local/bin/
With Go 1.23 or newer:
git clone https://github.com/pungoyal/dotsynccd dotsyncmake build # writes bin/dotsyncPut it on your PATH
Section titled “Put it on your PATH”Homebrew and apt put dotsync on your PATH already. Otherwise, if dotsync version says command not found, add ~/.local/bin to your PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && exec zshecho 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && exec bashfish_add_path ~/.local/binCheck it works
Section titled “Check it works”dotsync version
dotsync 0.5.0 (ed63c37, 2026-09-21T06:18:53Z) go1.27.1 darwin/arm64That’s the version, the commit it was built from and that commit’s date, the Go version, and the platform.
Update
Section titled “Update”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:
dotsync update # install the latest release: checksum and provenance verifieddotsync update --check # only say whether there's a newer oneupdate 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.
If the download stalls
Section titled “If the download stalls”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:
curl -v -o /dev/null https://github.com/pungoyal/dotsync/releases/latest/download/checksums.txtIf 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.