ComparisonJanuary 20, 20268 min read

ConfigSync vs yadm: Git-Based vs Cloud-Based Dotfile Management

yadm wraps git to manage dotfiles in-place. ConfigSync uses encrypted cloud storage. Both solve dotfile sync, but their philosophies could not be more different.

How yadm Works

yadm (Yet Another Dotfiles Manager) is a thin wrapper around git that manages a bare repository in $HOME. Unlike tools that copy or symlink files, yadm tracks your dotfiles exactly where they live. Your .zshrc stays at ~/.zshrc, and yadm knows about it through git.

yadm basics
# Initialize yadm (creates bare repo at ~/.local/share/yadm/repo.git) yadm init # Track files where they live yadm add ~/.zshrc ~/.gitconfig ~/.vimrc yadm commit -m "initial dotfiles" # Push to remote yadm remote add origin git@github.com:user/dotfiles.git yadm push -u origin main

If you know git, you know yadm. Every git command works: yadm status, yadm diff, yadm log, yadm stash. There is nothing new to learn beyond a few yadm-specific features.

Alternate Files

yadm supports OS-specific file variants through alternate files. By naming files with special suffixes, yadm automatically symlinks the correct version based on the current system.

yadm alternate files
# Create OS-specific variants ~/.zshrc##os.Darwin # Used on macOS ~/.zshrc##os.Linux # Used on Linux # Combine conditions ~/.gitconfig##os.Darwin,hostname.work-laptop ~/.gitconfig##os.Linux,hostname.home-desktop # yadm auto-links the right file based on the current system

This is a pragmatic approach: rather than templating, you maintain separate files for each variant. It works well when your configs differ significantly between platforms.

yadm Encryption

yadm supports GPG-based encryption for sensitive files. You list the files to encrypt in ~/.config/yadm/encrypt, and yadm bundles them into an encrypted archive.

yadm encryption
# List files to encrypt in ~/.config/yadm/encrypt .ssh/config .aws/credentials .env.local # Encrypt the listed files yadm encrypt # Decrypt on a new machine yadm decrypt

This works, but requires GPG setup on every machine, which is notoriously fiddly. You need to export and import GPG keys, manage trust levels, and deal with GPG agent configuration. The encrypted archive is committed to your git repo.

yadm Bootstrap

yadm has a bootstrap mechanism: a script at ~/.config/yadm/bootstrap that runs when you clone your dotfiles on a new machine. This is where you install packages, set up directories, and configure system settings.

yadm bootstrap script
#!/bin/bash # ~/.config/yadm/bootstrap # Install Homebrew if ! command -v brew &>/dev/null; then /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" fi # Install packages from Brewfile brew bundle --file=~/.Brewfile # Set up directories mkdir -p ~/projects ~/tmp

This is manual and imperative. You write the script yourself, maintain it, and hope it works on the next machine. There is no diffing, no reconciliation, no cross-platform mapping.

How ConfigSync Differs

ConfigSync does not use git at all. It has a dedicated encrypted cloud backend (Cloudflare R2) and handles the entire sync lifecycle: track, encrypt, push, pull, restore. It also goes far beyond dotfiles.

ConfigSync workflow
# Track dotfiles, scan packages, push everything configsync init configsync track ~/.zshrc ~/.gitconfig configsync scan # Scans 10+ package managers configsync push -m "full setup" # On new machine: pull everything and install packages configsync pull --install # Watch for changes and auto-sync configsync watch

ConfigSync has 24 built-in modules that capture and restore application-specific settings: VS Code extensions, terminal profiles, SSH configs, Git settings, and more. Package tracking covers Homebrew, apt, npm, pip, cargo, and others with cross-platform mapping.

Key Differences

Git knowledge: yadm assumes you are fluent in git. Branching, merging, rebasing, resolving conflicts — these are all part of the yadm workflow. ConfigSync requires no git knowledge. Push and pull are single commands with no merge conflicts.

Encryption model: yadm uses GPG, which is powerful but complex to set up. ConfigSync uses AES-256-GCM with a master password. Type your password and everything is encrypted. No key management, no GPG agent, no trust model.

Scope: yadm manages dotfiles. That is its job, and it does it well. ConfigSync manages dotfiles, packages, secrets, environment variables, app settings, and more. It is a broader tool with a broader scope.

The fundamental tradeoff: yadm gives you the full power of git for your dotfiles. ConfigSync gives you encrypted sync for your entire development environment. One is a sharp tool, the other is a toolkit.

Feature Comparison at a Glance

FeatureyadmConfigSync
ApproachBare git repo in $HOMEEncrypted cloud sync
Sync mechanismGit push/pullBuilt-in encrypted cloud
EncryptionGPG (manual setup)AES-256-GCM (password-based)
OS-specific configsAlternate files (##os.Linux)Templates ({{#if platform}})
BootstrapCustom shell scriptBuilt-in pull --install
Package ManagementManual (via bootstrap script)10+ managers, auto-reconcile
Watch ModeNoYes
Web DashboardNoYes
Secret ProvidersGPG only4 providers (keychain, 1Password, etc.)
Git Knowledge RequiredYesNo
DependenciesGit, GPG (optional)Node.js
Team FeaturesVia git branches/remotesShared configs, onboarding

The Verdict

Choose yadm if you are a git power user who wants minimal tooling layered on top of a workflow you already know. If you love git, yadm makes dotfile management feel natural. Its alternate files system is elegant, and the bootstrap script gives you full control over first-time setup. It is battle-tested and widely used.

Choose ConfigSync if you want encrypted sync without GPG complexity, automatic package tracking across 10+ managers, built-in modules for app settings, watch mode for hands-free syncing, and team features for onboarding. ConfigSync handles the entire developer environment, not just dotfiles, and does it without requiring git expertise.

If dotfiles are all you need and git is second nature, yadm is a great tool. If you want your entire development environment synced, encrypted, and managed in one place, ConfigSync is the more complete solution.

Ready to try ConfigSync?

Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.