Autopulse is an automated, lightweight service that updates media servers like Plex, Jellyfin, and Emby based on notifications from media organizers like Sonarr, Radarr, Lidarr, and Readarr.
Instead of performing full library scans, Autopulse updates only the specific path of the media item that was added or changed. This reduces disk I/O and remote storage API calls, which is especially useful on shared infrastructure.
Key benefits:
- Updates only the affected media path, not the entire library
- Reduces HDD I/O and remote storage API calls
- Supports multiple media server targets in a single install (Plex, Jellyfin, Emby)
- Pre-configured webhook triggers for Sonarr, Radarr, Lidarr, and Readarr
Prerequisites
Before running the installer, you will need authentication tokens for each media server you plan to use with Autopulse.
Plex Token
- To find your Plex token, visit this Plex article: Finding an authentication token (X-Plex-Token)
Jellyfin API Key
- Open Jellyfin and navigate to the menu (top left).
- Select Dashboard.
- Under Advanced, select API Keys.
- Click the + button to create a new API key.
- Name it
autopulseand save. Copy the generated key.
Emby API Key
- Open Emby and navigate to the admin menu.
- Under Advanced, select API Keys.
- Click New API Key.
- Name it
autopulseand save. Copy the generated key.
Disable Media Server Internal Scans
To prevent duplicate or conflicting library scans, disable your media server's built-in scan features.
Plex
- Navigate to your Plex Server
Settings >> Libraryand disable the following:
Scan my library automatically: DISABLED
Run a partial scan when changes are detected: DISABLED
Scan my library periodically: DISABLEDJellyfin
- Navigate to
Menu >> Dashboard >> Scheduled Tasksand delete the Library Scan schedule. - For each library, go to its settings and disable Enable real time monitoring.
Emby
- Navigate to
Settings Menu >> Scheduled Tasksand delete the Library Scan schedule.
- For each library, go to its settings and disable Enable real time monitoring.
Installation
SSH into your service and run the following command:
bash <(wget -qO- https://scripts.ultra.cc/hub/main-v2/autopulse/main.sh)The installer will guide you through:
- Port selection - Choose an available port from the list.
- Password - Set a password for Autopulse's API (minimum 9 characters).
- Media server targets - Select which media servers to connect. You can add one, two, or all three (Plex, Jellyfin, Emby). The installer will validate each token before proceeding.
Once complete, the installer displays your webhook URLs and configured targets. Save these for the next step.
Initial Library Scan
After installing Autopulse, make sure each connected media server has completed at least one full library scan. If a media server has never scanned the library path, Autopulse's targeted scan requests may not register properly.
- Plex: Usually handles this automatically if the library folder already exists.
- Jellyfin: Go to
Dashboard >> Librariesand click Scan All Libraries. - Emby: Go to
Settings >> Libraryand trigger a manual scan.
After the initial scan, Autopulse handles all future updates automatically.
Webhook Configuration
To connect your media organizers to Autopulse, add a webhook in each app's settings.
Sonarr
- Navigate to
Settings >> Connect >> + >> Webhook
Name: autopulse
URL: http://172.17.0.1:{PORT}/triggers/sonarr
Method: POST
Username: {username}
Password: (as set during installation)
On File Import: YES
On File Upgrade: YES
On Rename: YES
On Series Delete: YES
On Episode File Delete: YES
On Episode File Delete For Upgrade: YES
On Grab: NO
On Import Complete: NO
On Series Add: NO
On Health Issue: NO
On Application Update: NORadarr
- Navigate to
Settings >> Connect >> + >> Webhook
Name: autopulse
URL: http://172.17.0.1:{PORT}/triggers/radarr
Method: POST
Username: {username}
Password: (as set during installation)
On File Import: YES
On File Upgrade: YES
On Rename: YES
On Movie Delete: YES
On Movie File Delete: YES
On Movie File Delete For Upgrade: YES
On Grab: NO
On Movie Added: NO
On Health Issue: NO
On Application Update: NOLidarr
- Navigate to
Settings >> Connect >> + >> Webhook
Name: autopulse
URL: http://172.17.0.1:{PORT}/triggers/lidarr
Method: POST
Username: {username}
Password: (as set during installation)
On Release Import: YES
On Upgrade: YES
On Rename: YES
On Artist Delete: YES
On Album Delete: YES
On Grab: NO
On Download Failure: NO
On Import Failure: NO
On Track Retag: NO
On Artist Add: NO
On Health Issue: NOReadarr
- Navigate to
Settings >> Connect >> + >> Webhook
Name: autopulse
URL: http://172.17.0.1:{PORT}/triggers/readarr
Method: POST
Username: {username}
Password: (as set during installation)
On Release Import: YES
On Upgrade: YES
On Rename: YES
On Author Delete: YES
On Book Delete: YES
On Book File Delete: YES
On Book File Delete For Upgrade: YES
On Grab: NO
On Author Added: NO
On Book Retag: NO
On Health Issue: NOUpgrade
To upgrade Autopulse to the latest version, run the installer again and select option 3 (Upgrade).
bash <(wget -qO- https://scripts.ultra.cc/main-v2/Autopulse/main.sh)The upgrade process will:
- Display the current installed version
- Back up your config file to
~/.apps/autopulse/config.toml.bak - Download the latest binary
- Restart the service and display the new version
Uninstall
To uninstall Autopulse, run the installer again and select option 2 (Uninstall).
bash <(wget -qO- https://scripts.ultra.cc/main-v2/Autopulse/main.sh)The installer asks whether to remove or preserve the config directory at ~/.apps/autopulse/. Preserving it allows you to reinstall later without reconfiguring.
Optional Configuration
The Autopulse config file is located at:
~/.apps/autopulse/config.tomlAfter making changes, restart the service:
systemctl --user restart autopulseAnchors for Mounts
If you use remote mounts (e.g. Rclone), you can configure anchor files to prevent library updates when the mount is offline. Create an anchor file on your mount:
touch ~/MergerFS/.anchorThen add it to your config under the [opts] section:
[opts]
check_path = trueAutopulse verifies the file path exists before sending scan requests to your media servers. If the path is not accessible (e.g. mount is down), Autopulse skips the scan and retries later.
Log File
The installer configures logging at ~/.apps/autopulse/autopulse.log with daily rollover. You can view recent logs with:
tail -f ~/.apps/autopulse/autopulse.logOr check the systemd journal:
journalctl --user -u autopulse -fManual Trigger
Autopulse includes a manual trigger endpoint for testing or ad-hoc scans:
curl -u {username}:{password} -X POST http://172.17.0.1:{PORT}/triggers/manual \
-H "Content-Type: application/json" \
-d '{"path": "/home/{username}/media/Movies/Some Movie (2024)"}'Auto-Update via Cron
You can set up a cron job to automatically check for and install new versions of Autopulse. Create the update script:
Then add a weekly cron job (runs every Sunday at 4 AM):
crontab -eAdd the following line:
0 4 * * 0 ~/bin/autopulse-update.shThe script only downloads and restarts if a new version is available. It logs updates to ~/.apps/autopulse/update.log.
Troubleshooting
"All notifications are unavailable due to failures" in Sonarr/Radarr
This happens when unsupported event types are enabled in the webhook settings. Autopulse only handles import, upgrade, rename, and delete events. Events like On Grab, On Series Add, or On Health Issue return errors, and after repeated failures the app disables the notification entirely.
Fix: Remove the webhook, re-add it with only the supported triggers listed above, and test it with the Test button.
Autopulse Is Running but Media Server Is Not Updating
- Verify the service is running:
systemctl --user status autopulse - Check the logs:
journalctl --user -u autopulse -n 20 - Make sure the media server has completed at least one full library scan before relying on Autopulse.
- Verify the media server token is still valid.
Service Won't Start
- Check for config errors:
~/bin/autopulse --config ~/.apps/autopulse/config.toml - Verify the port is not in use by another application.
- Try reinstalling via the installer (Uninstall, then Install).
Support
- For issues related to Autopulse itself, refer to the official project: https://github.com/dan-online/autopulse
- For community assistance with configuration, visit the Ultra.cc Discord: https://discord.ultra.cc
If you require further assistance, you can open a support ticket here!
Feedback and suggestions regarding this article are welcome on our Discord server
- Prerequisites
- Plex Token
- Jellyfin API Key
- Emby API Key
- Disable Media Server Internal Scans
- Plex
- Jellyfin
- Emby
- Installation
- Initial Library Scan
- Webhook Configuration
- Sonarr
- Radarr
- Lidarr
- Readarr
- Upgrade
- Uninstall
- Optional Configuration
- Anchors for Mounts
- Log File
- Manual Trigger
- Auto-Update via Cron
- Troubleshooting
- "All notifications are unavailable due to failures" in Sonarr/Radarr
- Autopulse Is Running but Media Server Is Not Updating
- Service Won't Start
- Support