How it works
Initialize
dotkeeper init on your first machine. Generates a Syncthing identity and creates your config.
Join
dotkeeper join <ID> on other machines. Config syncs automatically via Syncthing.
Add repos
dotkeeper add ~/project starts syncing. Files propagate in real-time. Git backs up on schedule.
Features
Zero infrastructure
No cloud server, no VPN, no SSH tunnel. Machines find each other via Syncthing's discovery network and connect peer-to-peer.
Single binary
Syncthing is compiled into the dotkeeper binary. Download, run, done. No separate Syncthing installation, no conflicts with existing setups.
Git history
Scheduled git auto-commit and push. Every change is versioned. Roll back to any point in time. Works with your existing remotes.
Conflict-free by design
Syncthing handles real-time sync. Git timers are staggered per machine (slot offsets) so pushes never collide.
Cross-platform
Linux, macOS, Windows, FreeBSD, OpenBSD, NetBSD. Platform-native service management: systemd, launchd, Task Scheduler, cron.
Privacy-first
No telemetry, no crash reporting, no usage tracking. Syncthing's full network stack for connectivity, with all reporting disabled.
Architecture
Machine A Machine B
+-----------------+ +-----------------+
| dotkeeper | Syncthing | dotkeeper |
| embedded ST --|---(P2P sync)---|-- embedded ST |
| git timer --|---> remote <---|-- git timer |
+-----------------+ +-----------------+
| |
~/.config/dotkeeper/ ~/.config/dotkeeper/
machine.toml (local) machine.toml (local)
config.toml (synced) config.toml (synced)
Isolated Syncthing
Runs on its own ports (API: 18384, sync: 12000, discovery: 11027). Never touches your existing Syncthing installation.
Three-file config
machine.toml — local identity, never synced. config.toml — shared settings, synced via Syncthing. dotkeeper.toml — per-repo breadcrumb, tracked in git.
Smart .stignore
Auto-generated ignore patterns: build artifacts, lockfiles, editor state, SQLite journals. Syncs what matters, skips what doesn't.
Install
Arch Linux (AUR)
yay -S dotkeeper-bin
Build from source
git clone https://github.com/julian-corbet/dotkeeper
cd dotkeeper
make install
Requires Go 1.22+ and git.
Commands
dotkeeper init | Initialize this machine |
dotkeeper join <ID> | Join an existing setup |
dotkeeper add <path> | Add repos to sync |
dotkeeper remove <name> | Remove a repo from sync |
dotkeeper pair | Apply config to Syncthing |
dotkeeper sync | Run git backup now |
dotkeeper status | Show full status |
dotkeeper install-timer | Install scheduled git backup |
dotkeeper start | Start embedded Syncthing |
dotkeeper stop | Stop Syncthing service |