Skip to content
Dotweave Dotweave v0.39.7

Profiles

Manage different configs for work, personal, or per-machine setups.

Not every config file belongs on every machine. Your work laptop needs work credentials, your personal desktop needs GPU settings, and your Linux server doesn’t care about macOS configs. Profiles let you organize tracked entries into named groups so each machine syncs only what it needs — all from a single repository.


When you track a file, you can assign it to one or more profiles using --profiles. Entries without a profile go into the default profile and sync everywhere.

# Default profile — syncs on every machine
dotweave track ~/.gitconfig
dotweave track ~/.zshrc
# Only syncs when "work" profile is active
dotweave track ~/.config/work-vpn --profiles work
# Only syncs when "personal" profile is active
dotweave track ~/.config/personal-tool --profiles personal

  • Default profile: entries without --profiles go into the default/ directory and sync everywhere.
  • Named profiles: entries with --profiles work go into work/ and only sync when that profile is active.

You can assign multiple profiles to a single entry — it syncs whenever any of them is active:

dotweave track ~/.config/shared-tool --profiles work,personal

Tell dotweave which profile to use on the current machine:

dotweave profile use work

From now on, dotweave push and dotweave pull on this machine will include default entries plus entries assigned to the work profile.


See all profiles that exist in your sync config:

dotweave profile list

This shows every profile name that appears in manifest.jsonc, along with which one is currently active.


# Shared configs — no profile, synced everywhere
dotweave track ~/.gitconfig
dotweave track ~/.zshrc
# Work-only files
dotweave track ~/.config/work-vpn --profiles work
dotweave track ~/.ssh/work-key --mode secret --profiles work
# Personal-only files
dotweave track ~/.config/personal-app --profiles personal

On your work laptop, set the work profile and push:

dotweave profile use work
dotweave push # pushes default + work entries

On your personal machine, set the personal profile and pull:

dotweave profile use personal
dotweave pull # pulls default + personal entries only

Work machine never sees personal configs, personal machine never sees work credentials. Clean separation, one repository.


Profiles aren’t limited to work vs. personal. Here are a few other patterns:

  • Per-OS profiles: --profiles linux or --profiles macos for OS-specific configs
  • Shared base + machine overrides: track common configs without a profile, then add machine-specific entries with --profiles desktop or --profiles server

sync-directory/
├── manifest.jsonc
├── default/ ← default profile entries
│ ├── .gitconfig
│ └── .zshrc
├── work/ ← work profile entries
│ ├── .config/
│ │ └── work-vpn/
│ └── .ssh/
│ └── work-key.age
└── personal/ ← personal profile entries
└── .config/
└── personal-app/