Skip to content

Sync Modes

Learn about the three sync modes — normal, secret, and ignore — and when to use each one.

Every tracked entry has a sync mode that controls how devsync handles it during push and pull. There are three modes: normal, secret, and ignore.


The default mode. The file is copied to the repository exactly as-is, with no transformation applied.

Terminal window
devsync track ~/.gitconfig
devsync track ~/.zshrc
devsync track ~/.config/nvim

Good for:

  • Editor configs (.vimrc, init.lua, VS Code settings)
  • Shell configs (.zshrc, .bashrc, .bash_profile)
  • Git config (.gitconfig)
  • Tool configs (.tmux.conf, .wezterm.lua, starship.toml)
  • Any file that contains no sensitive information

The mirrored file in the repository has the same name as the original.


The file is encrypted with age before being written to the repository. The stored artifact has a .devsync.secret extension.

Terminal window
devsync track ~/.ssh/config --mode secret
devsync track ~/.config/gh/hosts.yml --mode secret
devsync track ~/.aws/credentials --mode secret

Good for:

  • SSH config and keys
  • API tokens and credentials
  • .env files with real secrets
  • Anything that should not appear in plaintext in your git history

During pull, devsync decrypts the artifact with your age private key before writing it to disk.

A file tracked as ~/.ssh/config with --mode secret is stored as:

~/.config/devsync/sync/default/.ssh/config.devsync.secret

The entry is registered in manifest.json but skipped entirely during push and pull. No file is read, written, or transferred.

Terminal window
devsync track ~/.config/some-tool/cache --mode ignore
devsync track ~/.local/share/generated-config --mode ignore

Good for:

  • Machine-specific configs that should be tracked but not synced (e.g., hostname-dependent settings)
  • Generated or cached files that you want to note but not replicate
  • Entries you want to temporarily disable without removing from the manifest

To change the mode of a tracked entry, run devsync track again with the new --mode flag. The existing entry is replaced:

Terminal window
# Originally tracked as normal
devsync track ~/.ssh/config
# Upgrade to secret
devsync track ~/.ssh/config --mode secret

ModeStored in repoEncryptedSynced on push/pull
normalYesNoYes
secretYes (.devsync.secret)Yes (age)Yes
ignoreNoNo