What it does
dotsync symlinks paths from your $HOME into a folder inside Nextcloud,
OneDrive, Dropbox, Proton Drive or iCloud. The cloud provider already syncs that folder across your machines,
so a config change propagates with no commit, pull or merge. dotsync only wires the symlinks.
A mirror of your home folder
The cloud folder holds a dotsync/ directory laid out like $HOME:
~/.config/zed lives at dotsync/.config/zed. A dotsync.toml next to
it lists the mappings and syncs with everything else.
Each machine picks its own
A picker lets you tick what to link on this machine, and the symlinks themselves record what is active, so there is no per-machine state file to drift. Mappings can be scoped to one OS, given a different path per OS, and filed in groups.
Self-healing links
When an app saves atomically and replaces a symlink with a real file, install and
doctor --fix relink it if the content still matches the cloud copy. dotsync undo
reverts the most recent destructive run.
Secrets kept out of git
dotsync never commits anything and refuses a sync folder inside a git repository. Known secrets such as
.ssh, .gnupg and .aws get a restrictive mode, re-asserted on
install and doctor --fix.
A first look
There is no mandatory setup step. The first run finds your cloud folder, lets you pick it, installs shell completions and continues. On a second machine the same first run finds the shared folder and lets you tick the items you want there.
# first run: folder, then picker
$ dotsync
# move into the cloud, link it back
$ dotsync adopt ~/.config/zed
# every mapping and its state here
$ dotsync status
# health check (--fix to repair)
$ dotsync doctor
Install
Homebrew, on macOS and Linux
Pours a prebuilt binary, so no compiler is needed. The tap is trusted once first, as Homebrew 6 and later ask.
brew trust --tap jakobhviid/tapbrew install jakobhviid/tap/dotsync
Or one line, without Homebrew
No compiler and no root: downloads the prebuilt binary to ~/.local/bin (set
DOTSYNC_BIN_DIR to change it).
curl -fsSL https://raw.githubusercontent.com/jakobhviid/dotsync/main/install.sh | sh
Then run it
The first run on each machine finds the cloud folder and opens the picker. Run dotsync setup
only to re-point the folder or reinstall completions.
dotsync
Documentation
- README: every command,
dotsync.toml, groups and secrets - WORKFLOWS.md: task-oriented
guide, exit codes and the
--jsonoutput - SPEC.md: the behaviour and schema contract
- PRINCIPLES.md: the design invariants
- ARCHITECTURE.md: how it is built
- Releases