Multi-Profile Configuration Guide¶
FIT File Faker's multi-profile system allows you to manage multiple Garmin accounts and trainer apps from a single installation, which helps if you're a multi-trainer-user household. This guide covers everything you need to know about setting up and using profiles.
Overview¶
What are Profiles?¶
A profile is a complete configuration that includes:
- Trainer App Type: Currently, TrainingPeaks Virtual, Zwift, MyWhoosh, or Custom
- Garmin Account: Username and password (credentials are isolated per profile)
- FIT Files Directory: Where to find and monitor FIT files
- Profile Name: Unique identifier for the profile
Key Benefits¶
- Multiple Garmin Accounts: Upload to different Garmin Connect accounts
- Multiple Trainer Apps: Manage TPV, Zwift, MyWhoosh simultaneously
- Isolated Credentials: Each profile has separate Garmin authentication
- Flexible Workflows: Quickly switch between different setups
Getting Started¶
Launch Profile Manager¶
This launches the interactive TUI (Text User Interface) for profile management. Example output:
๐ FIT File Faker - Profiles
โโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Name โ App โ Garmin User โ FIT Path โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ TPV โญ โ TPVirtual โ j123@gm... โ ...h/TPVirtual/C123456789012345/FITFiles โ
โ zwift โ Zwift โ j234@gm... โ /Users/test/Documents/Zwift/Activities โ
โ mywhoosh โ Mywhoosh โ j123@gm... โ ...on Support/Epic/MyWhoosh/Content/Data โ
โ custom โ Custom โ j789@gm... โ /Users/test/tmp โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
? What would you like to do? (Use arrow keys)
ยป Create new profile
Edit existing profile
Delete profile
Set default profile
Exit
List Existing Profiles¶
Example output:
๐ FIT File Faker - Profiles
โโโโโโโโโโโโโโณโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Name โ App โ Garmin User โ FIT Path โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ TPV โญ โ TPVirtual โ j123@gm... โ ...h/TPVirtual/C123456789012345/FITFiles โ
โ zwift โ Zwift โ j234@gm... โ /Users/test/Documents/Zwift/Activities โ
โ mywhoosh โ Mywhoosh โ j123@gm... โ ...on Support/Epic/MyWhoosh/Content/Data โ
โ custom โ Custom โ j789@gm... โ /Users/test/tmp โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The โญ symbol indicates the default profile.
Profile Management¶
Create a New Profile¶
- Launch the menu:
fit-file-faker --config-menu - Select: "Create new profile"
- Follow the wizard
Profile Creation Wizard (App-First Flow)¶
- Select Trainer App: Choose from TPV, Zwift, MyWhoosh, or Custom
-
Directory Detection:
- Auto-detects the FIT files directory for your platform
- Shows detected path with confirmation prompt
- Option to manually override path
-
Garmin Credentials:
- Enter Garmin username (email)
- Enter Garmin password (masked input)
-
Profile Name:
- Suggested name based on app type (e.g., "tpv", "zwift")
- Option to customize name
-
Confirm & Save: Review all settings and confirm
Example: Creating a Zwift Profile¶
Create New Profile
? Which trainer app will this profile use? (Use arrow keys)
TrainingPeaks Virtual
ยป Zwift
MyWhoosh
Custom (manual path)
โ Found Zwift directory:
/Users/test/Documents/Zwift/Activities
? Use this directory? (Y/n)
? Enter Garmin Connect email: user@gmail.com
? Enter Garmin Connect password: ****************
? Enter profile name: zwift
Edit an Existing Profile¶
- Launch the menu:
fit-file-faker --config-menu - Select: "Edit existing profile"
- Choose profile from list
- Edit values as needed: pressing "Enter" without any change will use the pre-existing value
- Save changes
Delete a Profile¶
- Launch the menu:
fit-file-faker --config-menu - Select: "Delete profile"
- Choose profile from list
- Confirm deletion (with safety checks)
Safety Features:
- Cannot delete the only remaining profile
- If deleting the default profile, you'll be prompted to set a new default
- Confirmation required before permanent deletion
Set Default Profile¶
- Launch the menu:
fit-file-faker --config-menu - Select: "Set default profile"
- Choose profile from list
- Confirm selection
The default profile is used when no --profile argument is specified.
Using Profiles¶
Profile Selection Priority¶
When you run a command, FIT File Faker selects a profile in this order:
- Explicit selection:
--profile <name>or-p <name> - Default profile: The profile marked with โญ
- First in config file: If multiple profiles exist but no default is set
- Error: If no profiles are configured
Upload with Specific Profile¶
# Upload all files with TPV profile
fit-file-faker --profile TPV -ua
# Upload single file with Zwift profile
fit-file-faker --profile zwift -u ride.fit
# Monitor directory with MyWhoosh profile
fit-file-faker --profile mywhoosh -m
Shortcut Alias¶
๐ฎ Trainer App Support¶
TrainingPeaks Virtual (TPV)¶
Auto-Detection Paths:
- macOS:
~/TPVirtual/<user_id>/FITFiles - Windows:
~/Documents/TPVirtual/<user_id>/FITFiles - Linux: User prompt (no standard path)
Environment Variable:
Zwift¶
Auto-Detection Paths:
- macOS:
~/Documents/Zwift/Activities/ - Windows:
%USERPROFILE%\Documents\Zwift\Activities\ - Linux: Wine/Proton paths (e.g.,
~/.wine/drive_c/.../Documents/Zwift/Activities/)
MyWhoosh¶
Auto-Detection Paths:
- macOS:
~/Library/Containers/com.whoosh.whooshgame/Data/Library/Application Support/Epic/MyWhoosh/Content/Data - Windows:
~/AppData/Local/Packages/<MYWHOOSH_PREFIX>/LocalCache/Local/MyWhoosh/Content/Data - Scans
Packagesdirectory for MyWhoosh prefixes - Linux: Not officially supported (user prompt)
Custom¶
For unsupported trainer apps or custom setups:
- Manual path specification
- No auto-detection
- Full flexibility for any FIT file source
Credential Isolation¶
How It Works¶
Each profile has its own isolated Garmin authentication:
- Garth directories:
/Users/test/Library/Caches/FitFileFaker/.garth_{profile_name}/ - Separate OAuth tokens: No credential sharing between profiles
- Secure storage: Platform-specific storage via
platformdirs
Example Directory Structure¶
/Users/test/Library/Caches/FitFileFaker
โโโ .garth_tpv/ # TPV profile credentials
โโโ .garth_zwift/ # Zwift profile credentials
โโโ .garth_mywhoosh/ # MyWhoosh profile credentials
Configuration File¶
Location¶
The configuration file is stored in your platform's user config directory:
- macOS:
~/Library/Application Support/FitFileFaker/.config.json - Windows:
%APPDATA%\FitFileFaker\.config.json - Linux:
~/.config/FitFileFaker/.config.json
Format¶
{
"profiles": [
{
"name": "tpv",
"app_type": "tp_virtual",
"garmin_username": "user@work.com",
"garmin_password": "secret123",
"fitfiles_path": "/Users/test/TPVirtual/abc123/FITFiles"
},
{
"name": "zwift",
"app_type": "zwift",
"garmin_username": "personal@gmail.com",
"garmin_password": "secret456",
"fitfiles_path": "/Users/test/Documents/Zwift/Activities"
}
],
"default_profile": "zwift"
}
Manual Editing¶
โ ๏ธ Caution: While you can manually edit the config file, it's recommended to use the interactive menu to avoid syntax errors.
If you do edit manually:
- Stop any running FIT File Faker processes
- Make a backup of the file
- Validate JSON syntax
- Restart the tool
Migration from v1.2.4¶
Automatic Migration¶
When you first run FIT File Faker v2.0.0+, your existing v1.2.4 configuration will be automatically migrated:
Before (v1.2.4):
{
"garmin_username": "user@email.com",
"garmin_password": "secret",
"fitfiles_path": "/Users/test/TPVirtual/abc123/FITFiles"
}
After (v2.0.0):
{
"profiles": [
{
"name": "default",
"app_type": "tp_virtual",
"garmin_username": "user@email.com",
"garmin_password": "secret",
"fitfiles_path": "/Users/test/TPVirtual/abc123/FITFiles"
}
],
"default_profile": "default"
}
What Happens During Migration¶
- Detection: Tool detects legacy single-profile format
- Backup: Original config is backed up (if possible)
- Conversion: Creates "default" profile with existing settings
- App Type: Auto-detects as TP_VIRTUAL (original use case)
- Notification: Logs migration information
- Continuity: Tool works exactly as before
Migration Log Message¶
[INFO] Detected legacy single-profile config, migrating to multi-profile format
[INFO] Migration complete. Your existing settings are now in the 'default' profile.
[INFO] Using default profile: default
Use Case Examples¶
Scenario 1: Multiple Trainer Apps, Single Garmin Account¶
Setup:
fit-file-faker --config-menu
# Create "tpv" profile โ Select TPV โ Auto-detect โ Enter Garmin creds
# Create "zwift" profile โ Select Zwift โ Auto-detect โ Enter same Garmin creds
Daily Usage:
# Upload TPV rides
fit-file-faker -p tpv -ua
# Upload Zwift rides
fit-file-faker -p zwift -ua
# Monitor Zwift directory
fit-file-faker -p zwift -m
Scenario 2: Multiple Garmin Accounts¶
Setup:
fit-file-faker --config-menu
# Create "jim" profile โ Select TPV โ jim@gmail.com
# Create "jenny" profile โ Select TPV โ jenny@gmail.com
Daily Usage:
# Upload to Jim's account
fit-file-faker -p jim -u ride.fit
# Upload to Jenny's account
fit-file-faker -p jenny -u ride.fit
Scenario 3: Family Sharing¶
Setup:
fit-file-faker --config-menu
# Create "dad" profile โ Zwift โ dad@gmail.com
# Create "mom" profile โ TPV โ mom@gmail.com
# Create "kid" profile โ MyWhoosh โ kid@gmail.com
Daily Usage:
# Each family member uses their profile
fit-file-faker -p dad -ua
fit-file-faker -p mom -ua
fit-file-faker -p kid -ua
๐ง Troubleshooting¶
Common Issues¶
-
Issue: "Profile not found" error
- Solution: Check profile name spelling with
--list-profiles
- Solution: Check profile name spelling with
-
Issue: Can't delete the only profile
- Solution: Create a new profile first, then delete the old one
-
Issue: Auto-detection fails
- Solution: Use Custom app type and manually specify path
-
Issue: Garmin credentials not working
- Solution: Edit the profile and re-enter credentials
Debugging¶
# Verbose mode shows detailed profile selection
fit-file-faker -v --profile tpv -u ride.fit
# Check which profile is being used
fit-file-faker --list-profiles
Security¶
Credential Safety¶
- Credential storage: Garmin credentials are stored via
platformdirs, but in plain text, so please protect these files - Isolated profiles: Each profile has separate credential storage
- No plaintext logging: Passwords are never logged or displayed
- Secure transmission: OAuth tokens use HTTPS for Garmin Connect API
Best Practices¶
- Use different passwords for different Garmin accounts
- Regularly update your Garmin Connect password
- Don't share your config file
- Use profile-specific credentials, not shared accounts
๐ Related Documentation¶
๐ Summary¶
FIT File Faker's multi-profile system provides:
- โ Multiple Garmin accounts with isolated credentials
- โ Support for TPV, Zwift, MyWhoosh with auto-detection
- โ Interactive TUI for easy profile management
- โ Profile-specific monitoring and uploads
- โ Automatic migration from single-profile configs
- โ Extensible architecture for new trainer apps
The system is designed to be intuitive for beginners while powerful enough for advanced users managing complex multi-account workflows.