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.
How Profiles Work
Section titled “How Profiles Work”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 machinedotweave track ~/.gitconfigdotweave track ~/.zshrc
# Only syncs when "work" profile is activedotweave track ~/.config/work-vpn --profiles work
# Only syncs when "personal" profile is activedotweave track ~/.config/personal-tool --profiles personalDefault vs. Named Profiles
Section titled “Default vs. Named Profiles”- Default profile: entries without
--profilesgo into thedefault/directory and sync everywhere. - Named profiles: entries with
--profiles workgo intowork/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,personalSetting the Active Profile
Section titled “Setting the Active Profile”Tell dotweave which profile to use on the current machine:
dotweave profile use workFrom now on, dotweave push and dotweave pull on this machine will include default entries plus entries assigned to the work profile.
Listing Profiles
Section titled “Listing Profiles”See all profiles that exist in your sync config:
dotweave profile listThis shows every profile name that appears in manifest.jsonc, along with which one is currently active.
Use Case: Work vs. Personal
Section titled “Use Case: Work vs. Personal”# Shared configs — no profile, synced everywheredotweave track ~/.gitconfigdotweave track ~/.zshrc
# Work-only filesdotweave track ~/.config/work-vpn --profiles workdotweave track ~/.ssh/work-key --mode secret --profiles work
# Personal-only filesdotweave track ~/.config/personal-app --profiles personalOn your work laptop, set the work profile and push:
dotweave profile use workdotweave push # pushes default + work entriesOn your personal machine, set the personal profile and pull:
dotweave profile use personaldotweave pull # pulls default + personal entries onlyWork machine never sees personal configs, personal machine never sees work credentials. Clean separation, one repository.
More Ideas for Profiles
Section titled “More Ideas for Profiles”Profiles aren’t limited to work vs. personal. Here are a few other patterns:
- Per-OS profiles:
--profiles linuxor--profiles macosfor OS-specific configs - Shared base + machine overrides: track common configs without a profile, then add machine-specific entries with
--profiles desktopor--profiles server
How It Looks in the Sync Directory
Section titled “How It Looks in the Sync Directory”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/