Skip to content

Pulsarr: Real-time Plex watchlist monitoring and content acquisition tool. Seamlessly sync Plex watchlists with Sonarr and Radarr, featuring intelligent predicated content routing, multi-instance support, Discord, and Apprise notifications. Automate your media library management with a modern, user-friendly interface.

License

Notifications You must be signed in to change notification settings

jamcalli/Pulsarr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Pulsarr Logo

Pulsarr

Real-time Plex watchlist monitoring, routing, and notification center

Version License Node Status Discord Docker Pulls Docker Image Size GitHub Stars


⭐ Love Pulsarr? Give Us a Star! ⭐

If Pulsarr has simplified your media management, please star this repository! It takes just a second, helps others find us, and motivates continued development. Thank you for being part of our community!

Stargazers repo roster for @jamcalli/pulsarr


Pulsarr is an integration tool that bridges Plex watchlists with Sonarr and Radarr, enabling real-time media monitoring and automated content acquisition all from within the Plex App itself.

Enjoy all the benefits of other content discovery systems without requiring users to use additional services. All the magic happens from the primary user's Plex Token.

It provides user-based watchlist synchronization for yourself and for friends, intelligent content routing based on multiple criteria, approval workflows with quota management, and notification capabilities (Discord and Apprise).

Dashboard

πŸ“š Documentation

Full documentation is available at: https://jamcalli.github.io/Pulsarr/

πŸš€ Quick Start

Docker Installation (Recommended)

  1. Create a .env file:
# ⚠️  CRITICAL: baseUrl + port = webhook address for Sonarr/Radarr to reach Pulsarr
# Must be resolvable from your *arr containers (varies by deployment):
# β€’ Docker Compose same network: http://pulsarr (service name)
# β€’ Docker host networking: http://localhost (containers share host network)
# β€’ Docker Desktop (Mac/Windows): http://host.docker.internal  
# β€’ Separate machines: http://server-ip (actual IP address)
# β€’ HTTPS: https://domain.com (external port 443, container still uses 3003 internally)
baseUrl=http://your-server-ip   # Address where Sonarr/Radarr can reach Pulsarr
port=3003                       # Port (omit for external HTTPS on port 443)
TZ=America/Los_Angeles          # Set to your local timezone

# Logging Configuration
logLevel=info                   # Log level (default: info)
                                # Accepts: fatal | error | warn | info | debug | trace | silent

enableConsoleOutput=true        # Console logging (default: true)
                                # Any value other than "false" enables terminal output
                                # Logs are always written to ./data/logs/ regardless of this setting

enableRequestLogging=false      # HTTP request logging (default: false)
                                # Logs HTTP method, URL, host, remote IP/port, response codes, response times
                                # Sensitive query parameters (token, apiKey, password) are automatically redacted
  1. Create docker-compose.yml:
services:
  pulsarr:
    image: lakker/pulsarr:latest
    container_name: pulsarr
    ports:
      - "3003:3003"
    volumes:
      - ./data:/app/data
      - .env:/app/.env
    restart: unless-stopped
    env_file:
      - .env
  1. Pull and start the service:
docker compose pull && docker compose up -d
  1. Access the web UI at http://your-server:3003 to complete setup.
  2. View interactive API documentation at http://your-server:3003/api/docs

For detailed installation options, including Unraid, manual installation, and PostgreSQL setup, see the documentation.

Database Options

Pulsarr uses SQLite by default but can also be configured to use PostgreSQL for users requiring external database access or high-scale deployments.

See the configuration documentation for PostgreSQL setup details.

Hosted Deployment Options

ElfHosted

ElfHosted is a Platform-as-a-Service (PaaS) provider that offers managed hosting for self-hosted applications, including Pulsarr. The platform handles infrastructure management, security updates, and system maintenance, allowing users to focus on configuring and using their applications.

They provide pre-configured streaming media bundles that integrate Pulsarr with popular media server applications (Plex, Jellyfin, Emby) and automation tools (Radarr, Sonarr). The platform includes community support through their Discord server and maintains documentation for their services.

For users who prefer managed hosting over self-deployment, ElfHosted offers an alternative to manual installation and maintenance.

✨ Key Features

  • Real-time Monitoring: Instant watchlist updates for Plex Pass users (20-minute polling for non-Pass users)
  • Smart Content Routing: Route content based on genre, user, language, year, certification, and more
  • Approval & Quota System: Administrative approval workflows with configurable user quotas (daily/weekly/monthly limits)
  • Plex Label Sync: Automatically sync user watchlists and Radarr/Sonarr tags as Plex labels with real-time webhook updates
  • Multi-Instance Support: Distribute content across multiple Sonarr/Radarr instances with intelligent synchronization
  • Multi-User Support: Monitor watchlists for friends and family with granular permissions
  • Discord Bot Integration: Complete approval management directly from Discord with interactive commands
  • Flexible Notifications: Discord bot, Tautulli, webhooks, and 80+ services via Apprise
  • Advanced Lifecycle Management: Watchlist-based or tag-based deletion with playlist protection
  • Plex Session Monitoring: Auto-search for next seasons when users near season finales
  • User Tagging: Track who requested what content in Sonarr/Radarr
  • Comprehensive Analytics: Detailed dashboards with usage stats, genre analysis, and content distribution
  • Automatic Plex Updates: Configures webhooks for instant library refreshes
  • Developer-Friendly API: Full REST API with interactive documentation

🀝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details on:

  • Fork and branch naming conventions
  • Development workflow
  • Pull request guidelines

πŸ’¬ Support

  • πŸ’¬ Join our Discord community for help, discussions, and updates
  • Need help? Open an issue on GitHub
  • πŸ› Report bugs or request features
  • πŸ“– Contribute to documentation

Your support helps keep this project active and growing!

❀️ Thank You

A big thank you to these amazing contributors who've helped build and maintain this project:

Contributors

πŸ“œ License

Pulsarr is licensed under the GPL. See the LICENSE file for details.

πŸ™ Acknowledgements


Built with ❀️ for the self-hosted community

About

Pulsarr: Real-time Plex watchlist monitoring and content acquisition tool. Seamlessly sync Plex watchlists with Sonarr and Radarr, featuring intelligent predicated content routing, multi-instance support, Discord, and Apprise notifications. Automate your media library management with a modern, user-friendly interface.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Languages