Skip to content
Dotweave Dotweave v0.48.0

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 --profile. 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 --profile work
# Only syncs when "personal" profile is active
dotweave track ~/.config/personal-tool --profile personal

  • Default profile: entries without --profile go into the default/ directory and sync everywhere.
  • Named profiles: entries with --profile 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 --profile work --profile 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 --profile work
dotweave track ~/.ssh/work-key --mode secret --profile work
# Personal-only files
dotweave track ~/.config/personal-app --profile 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: --profile linux or --profile macos for OS-specific configs
  • Shared base + machine overrides: track common configs without a profile, then add machine-specific entries with --profile desktop or --profile 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/