Sync Modes
The three sync modes and when to use each one.
Every tracked entry has a sync mode that controls how dotweave handles it during push and pull. There are three modes to choose from: normal, secret, and ignore.
At a Glance
Section titled “At a Glance”| Mode | Stored in sync directory | Encrypted | Synced on push/pull |
|---|---|---|---|
normal | Yes | No | Yes |
secret | Yes (.age suffix) | Yes (age) | Yes |
ignore | No | — | No |
normal (default)
Section titled “normal (default)”Files are copied to the sync directory exactly as-is. No transformation, no encryption — what you see is what you get.
dotweave track ~/.gitconfigdotweave track ~/.config/starship.tomldotweave track ~/.config/nvimGreat for: shell configs (.zshrc, .bashrc), editor settings, Git config, tool configs like .tmux.conf or starship.toml — basically anything that doesn’t contain secrets.
secret
Section titled “secret”Files are encrypted with age before being stored in the sync directory. The stored file gets an .age suffix.
dotweave track ~/.ssh/config --mode secretdotweave track ~/.config/gh/hosts.yml --mode secretdotweave track ~/.aws/credentials --mode secretGreat for: SSH keys and config, API tokens, .env files with real credentials, GPG keys — anything you wouldn’t want exposed if your repository went public.
During pull, dotweave decrypts the file with your age private key before writing it to disk. See Syncing Secrets for the full setup guide.
ignore
Section titled “ignore”The entry stays in manifest.jsonc but is completely skipped during push and pull. Nothing is read, written, or transferred.
dotweave track ~/.config/some-tool/cache --mode ignoredotweave track ~/.local/share/generated-config --mode ignoreGreat for:
- Temporarily disabling an entry without removing it from the sync config
- OS-specific files that shouldn’t sync on the wrong platform
- Machine-specific configs you want to remember but not replicate
Changing a Mode
Section titled “Changing a Mode”Run dotweave track again with the new --mode flag. The existing entry gets updated:
# Originally tracked as normaldotweave track ~/.ssh/config
# Upgrade to secretdotweave track ~/.ssh/config --mode secretPer-Entry Overrides
Section titled “Per-Entry Overrides”You can mix modes within a tracked directory. For example, track a directory as normal but override a specific child as secret:
dotweave track ~/.config/my-tooldotweave track ~/.config/my-tool/credentials.json --mode secretThe directory is synced normally, but credentials.json inside it gets encrypted. Child entries always take priority over their parent.