Announcing config-sync
I built a small tool called config-sync to solve a problem I kept hitting: my config files are scattered across machines, and they are no longer only inside ~/.config.
Today, important setup files can live in places like ~/.claude/CLAUDE.md, shell dotfiles, and other custom paths. Keeping them consistent manually is annoying and error-prone.
config-sync gives me a simple flow to track, push, and restore those files across machines using git.
What It Does
- Track config files from different locations.
- Push synced state to a git repository.
- Pull on another machine and restore files back to their original paths.
- Check whether you are out of sync with
check-updates.
Quick Start
go install github.com/mohammed-io/[email protected]
config-sync init
config-sync set-origin-repo [email protected]:your-username/your-config-repo.git
config-sync track ~/.claude/CLAUDE.md ~/.gitconfig ~/.vimrc
config-sync push
On another machine:
config-sync init-from [email protected]:your-username/your-config-repo.git
config-sync pull
One Important Caveat
Be careful what you track. Config repos can easily leak secrets if you are not deliberate. Use a private repository, and if needed, add encryption with git-crypt.
Future Roadmap
Here are improvements I want to ship next:
- Parallel file checks when tracked files grow large, while keeping sequential checks for small sets.
- Non-blocking background
check-updateson shell startup, so the shell opens instantly. - A setup wizard to initialize and configure
git-cryptin the sync repository.
Conclusion
I built config-sync for my own workflow first, and it is already reducing friction in my day-to-day setup across machines.
If you manage configs in multiple places and want a simple git-based sync flow, this tool is ready to use today.