Sync and compare Pro Tools AAX plugin versions across machines by writing reports to a shared folder or using the Dropbox API.
- Python 3.11+
- Access to the Pro Tools plug-ins folder
- Download the latest DMG release.
- Open the DMG and drag
Pro Tools Plugin Sync.appintoApplications. - Launch the app from
Applications. - If macOS says the app is damaged or blocked:
- Control-click the app in
Applications, choose “Open”, then confirm. - Or run
Fix Gatekeeper.commandfrom the DMG after copying the app toApplications.
- Control-click the app in
- When the menu bar icon appears, open
Settings...to complete setup. Optional CLI install (from the DMG): - Double-click
Install CLI.command. - Activate the CLI:
source ~/.pt-plugin-sync-cli/bin/activate - Confirm it works:
pt-plugin-sync --help
python -m venv .venv
source .venv/bin/activate
pip install -e .Or use the setup helper:
./scripts/setup.shAfter install, confirm the CLI is available:
pt-plugin-sync --helpIf the command is not found, ensure your virtualenv is active or run
python -m pt_plugin_sync.cli --help from the project directory.
Decide on a shared reports folder before you begin:
- Local/shared: a folder synced by Dropbox/iCloud/SMB between machines.
- Dropbox API: a Dropbox app with API access (for headless or server-friendly access).
You can configure via the menu bar app or the CLI. Both write ~/.config/pt-plugin-sync/config.toml.
- Click the menu bar icon and choose
Settings.... - Confirm or change the plug-ins folder (default:
/Library/Application Support/Avid/Audio/Plug-Ins). - Choose the reports folder (default:
~/Dropbox/Pro Tools Plugin Reports). - Confirm the machine name (used in report filenames).
- If using Dropbox API access, enter the app key/secret and click
Authorize Dropbox.... - Click Save, then choose
Scan Nowto verify the first report.
Run interactive setup:
pt-plugin-sync setupYou will be prompted for:
- Plug-ins folder (press Enter for the default).
- Reports folder (must be shared with other machines).
- Machine name (used in report filenames).
- Reports backend (local filesystem or Dropbox API).
Defaults:
- Plugins:
/Library/Application Support/Avid/Audio/Plug-Ins - Reports:
~/Dropbox/Pro Tools Plugin Reports
Non-interactive:
pt-plugin-sync setup --yes
pt-plugin-sync setup --plugins-path "/path/to/Plug-Ins" --reports-path "/path/to/Reports" --machine-name "STUDIO-MAC" --non-interactive- Create an app in the Dropbox Developer Console
- Click "Create app", choose "Scoped access", then choose either "App folder" or "Full Dropbox".
- In the app's settings, enable "Short-lived access tokens" and save.
- In the app's permissions, grant scopes:
files.content.read,files.content.write,files.metadata.read,files.metadata.write. - Copy the App key (and App secret if prompted) from the app settings in the Dropbox Developer Console
- Run setup and complete the one-time OAuth flow:
pt-plugin-sync setup --reports-backend dropboxIf you are using the menu bar app, open Settings..., enter the app key/secret, then click
Authorize Dropbox... to generate the refresh token without the CLI.
Re-auth (if you need a new refresh token):
pt-plugin-sync dropbox-authConfig is stored at ~/.config/pt-plugin-sync/config.toml.
Optional config keys:
hash_binaries(defaultfalse) to hash plugin binaries for stricter comparisons.prune_days(default0) to delete timestamped reports older than N days.reports_backend(localordropbox) to control where reports live.dropbox_reports_pathto set the Dropbox reports folder path.scan_interval_seconds(default3600) to control how often the daemon/menu bar app scans.debounce_seconds(default15) to debounce filesystem change scans.auto_update_download(defaultfalse) to auto-download/install app updates.
- On the first machine, run
Scan Now(menu bar) orpt-plugin-sync scan. - Open the reports folder and confirm you see
<machine_name>__latest.json. - Repeat setup on the second machine, pointing at the same reports folder.
- Run another scan and confirm
diff__latest.jsonandsummary__latest.jsonare updated. - If updates are needed, open the generated
report__latest.htmlcombined report.
pt-plugin-sync scanThis writes a timestamped report and <machine_name>__latest.json, generates diff__latest.json,
creates summary__latest.json, and writes report__latest.html plus report__latest.json.
The combined HTML opens automatically when updates are needed. Older timestamped scans are archived
under old scans/ (local or Dropbox).
pt-plugin-sync daemonThe daemon watches for changes and performs hourly scans. It debounces rapid changes.
pt-plugin-sync menubarThe menu bar app watches the plug-ins folder, runs periodic scans, and updates its icon when a scan is in progress or updates are needed. Use the “Start at Login” menu item to auto-launch on sign-in. Use “Check for Updates…” in the menu to download the latest release, or enable “Install Updates Automatically” to auto-apply updates.
pt-plugin-sync install-launchagentLogs are written to ~/Library/Logs/pt-plugin-sync/.
Menu bar auto-start:
pt-plugin-sync install-menubarUninstall:
pt-plugin-sync uninstall-menubarVerify:
launchctl list | rg pt-plugin-syncUninstall:
pt-plugin-sync uninstall-launchagent- If watching is unavailable, the daemon falls back to periodic scans.
- Ensure the reports folder is shared between machines (Dropbox or similar).
- If the plug-ins folder is unreadable, the scan skips files and continues.
- If you want to preview the combined report layout, open
docs/example_combined_report.html.
Run tests with:
./scripts/test.shFixture plugin binaries are executable. If permissions are lost (for example, after copying or zipping), restore them with:
chmod +x tests/fixtures/plugins/*/Contents/MacOS/*