×
Logo
  • News
  • Pricing
  • Contact
  • Client Area
Control Panel

Search

Applications

Client Area

Community

Connection Details

Control Panel

Getting Started

Misc Guides

Rclone

Torrent Clients

Unofficial Application Installers

Unofficial Language Installers

Unofficial SSH Utilities

Share your knowledge, submit a guide!

Ultra.cc Documentation
Ultra.cc Documentation
📘

Autopulse

All unofficial application installers are provided for your convenience. The scripts are provided as-is and may not be updated or maintained by Ultra.cc. Clients are welcome to use and customize unofficial app installers for their unique needs and requirements. Unofficial support may be offered via Discord only and at the sole discretion of Ultra.cc staff. Use at your own risk and only if you are comfortable managing the application on your own.

This installer, and guide, assumes that your Arr apps (Sonarr, Radarr, Lidarr, Readarr) and media server applications such as Plex, Jellyfin, or Emby, are all on the same service.

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 autopulse and save. Copy the generated key.
image

Emby API Key

  • Open Emby and navigate to the admin menu.
  • Under Advanced, select API Keys.
  • Click New API Key.
  • Name it autopulse and save. Copy the generated key.
image

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 >> Library and disable the following:
Scan my library automatically: DISABLED
Run a partial scan when changes are detected: DISABLED
Scan my library periodically: DISABLED

Jellyfin

  • Navigate to Menu >> Dashboard >> Scheduled Tasks and delete the Library Scan schedule.
  • For each library, go to its settings and disable Enable real time monitoring.
image

Emby

  • Navigate to Settings Menu >> Scheduled Tasks and delete the Library Scan schedule.
image
  • For each library, go to its settings and disable Enable real time monitoring.
image

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 >> Libraries and click Scan All Libraries.
  • Emby: Go to Settings >> Library and 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.

Important: If you previously connected your Arr apps directly to Plex, Jellyfin, or Emby using the built-in Connect options (as described in the Sonarr, Radarr, Lidarr, or Readarr docs), you should remove or disable those connections. Autopulse replaces them. Having both active can cause duplicate scans and unnecessary I/O.

Important: Only enable the specific notification triggers listed below. Enabling unsupported event types (like On Grab or On Health Issue) will cause the webhook to fail repeatedly, and the app will eventually disable all notifications.

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: NO
image

Radarr

  • 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: NO
image

Lidarr

  • 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: NO
image

Readarr

  • 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: NO
image

Upgrade

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.toml

After making changes, restart the service:

systemctl --user restart autopulse

Anchors 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/.anchor

Then add it to your config under the [opts] section:

[opts]
check_path = true

Autopulse 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.log

Or check the systemd journal:

journalctl --user -u autopulse -f

Manual 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 -e

Add the following line:

0 4 * * 0 ~/bin/autopulse-update.sh

The 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
Logo

© 2025 SlashN Services Pte. Ltd. All rights reserved.

Discord
cat << 'EOF' > ~/bin/autopulse-update.sh
#!/bin/bash
CURRENT=$(~/bin/autopulse --version 2>/dev/null | awk '{print $2}')
LATEST_TAG=$(curl -s https://api.github.com/repos/dan-online/autopulse/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
LATEST_VERSION="${LATEST_TAG#v}"
if [ "$CURRENT" = "$LATEST_VERSION" ]; then
exit 0
fi
TMPDIR=$(mktemp -d)
wget -qO "$TMPDIR/autopulse.tar.gz" "https://github.com/dan-online/autopulse/releases/download/${LATEST_TAG}/autopulse-x86_64-unknown-linux-musl.tar.gz"
tar -xzf "$TMPDIR/autopulse.tar.gz" -C "$TMPDIR"
chmod +x "$TMPDIR/autopulse"
cp ~/.apps/autopulse/config.toml ~/.apps/autopulse/config.toml.bak
systemctl --user stop autopulse.service
mv "$TMPDIR/autopulse" ~/bin/autopulse
systemctl --user start autopulse.service
rm -rf "$TMPDIR"
echo "$(date): Updated autopulse from $CURRENT to $LATEST_VERSION" >> ~/.apps/autopulse/update.log
EOF
chmod +x ~/bin/autopulse-update.sh