SkillAgentSearch skills...

Pulsarr

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.

Install / Use

/learn @jamcalli/Pulsarr

README

<div align="center"> <img src="https://raw.githubusercontent.com/jamcalli/pulsarr/master/assets/icons/pulsarr.svg" alt="Pulsarr Logo" width="150"/> <h1>Pulsarr</h1> <p>Real-time Plex watchlist monitoring, routing, and notification center</p>

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

</div> <div align="center"> <sub><a href="#transparency">AI Transparency</a></sub> </div>

Pulsarr bridges Plex watchlists with Sonarr and Radarr for real-time media monitoring and automated content acquisition, all from within the Plex app, no extra logins required.

Features include multi-user watchlist sync, intelligent content routing, approval workflows with quotas, and notifications via Discord, Plex mobile push, and Apprise.

<div align="center"> <img src="https://raw.githubusercontent.com/jamcalli/pulsarr/master/assets/screenshots/Dashboard1.png" alt="Dashboard" width="80%"/> </div>

📚 Documentation

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

API Documentation

Our REST API is fully documented and accessible in two ways:

🚀 Quick Start

Docker Installation (Recommended)

  1. Create a .env file:
# Your timezone
TZ=America/Los_Angeles
  1. Create docker-compose.yml:
services:
  pulsarr:
    image: lakker/pulsarr:latest
    container_name: pulsarr
    ports:
      - "3003:3003"
    volumes:
      - ./data:/app/data
      - .env:/app/.env
    environment:
      - PUID=1000
      - PGID=1000
    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.

Synology NAS / Legacy Systems: If you're running on a Synology NAS or a system with Linux kernel < 4.11, use lakker/pulsarr:node instead. This alternative image uses Node.js runtime instead of Bun, avoiding kernel compatibility issues. Both images are functionally identical.

Native Installation

Standalone builds with easy installers are available for Linux, macOS, and Windows. No Docker or runtime install required.

| Platform | Install Method | |----------|---------------| | Linux | curl -fsSL https://raw.githubusercontent.com/jamcalli/Pulsarr/master/scripts/installers/linux/install.sh \| sudo bash | | Windows | Download and run pulsarr-vX.X.X-windows-x64-setup.exe from the latest release (use baseline variant for older CPUs without AVX2) | | macOS | Download pulsarr-vX.X.X-macos-{arch}.dmg from the latest release |

See the Native Installation Guide for detailed instructions, service management, and manual options.

Database Options

Pulsarr uses SQLite by default but can also be configured to use PostgreSQL.

See the configuration documentation for PostgreSQL setup details.

Hosted Deployment Options

ElfHosted offers managed Pulsarr hosting with pre-configured media server bundles.

✨ Key Features

  • Real-time Monitoring: Instant watchlist updates for Plex Pass users (5-minute staggered polling for non-Pass users)
  • Smart Content Routing: Build rules with AND/OR logic using genre, user, language, year, certification, season, IMDb/RT/TMDB ratings, or streaming service. Rules can require approval or bypass quotas
  • 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, Plex mobile push, 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

Community Integrations

Transparency

Pulsarr started in early 2024 while I was home with a newborn, wanting to explore what AI coding tools could actually do. Watchlistarr had some bugs I wanted to fix, but it was written in Scala and I had no idea how to work with it, so I used AI to help me rewrite it in TypeScript instead. I threw together a basic UI, posted it, and didn't think much of it. The conversation around AI-assisted development has shifted a lot since then, and I think it's important to be upfront about how this project is built.

I'm not a software engineer by trade and I used this project as a way to learn. I didn't expect it to become what it is. Over the past 16 months I've kept developing, supporting, and iterating on it using my own judgment and research, with AI tools playing a role throughout. Every decision about architecture, features, and direction is my own, and everything is reviewed before it ships. If you ever spot anything I've missed or that's cause for concern, please reach out.

I take security seriously. Renovate keeps dependencies current, auth follows Fastify best practices, and all endpoints are protected by default. I'm always learning and welcome the feedback.

Contributing

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

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

💬 Support

Acknowledgements

License

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

Repository Activity

Repobeats analytics

Star History

<a href="https://star-history.com/#jamcalli/pulsarr&Date"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=jamcalli/pulsarr&type=Date&theme=dark" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=jamcalli/pulsarr&type=Date" /> <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=jamcalli/pulsarr&type=Date" /> </picture> </a>

Contributors

<a href="https://github.com/jamcalli/pulsarr/graphs/contributors"> <img src="https://contrib.rocks/image?repo=jamcalli/pulsarr" alt="Contributors" /> </a>
<div align="center"> <sub>Built with ❤️ for the self-hosted community</sub> </div>
View on GitHub
GitHub Stars622
CategoryDevelopment
Updated1h ago
Forks7

Languages

TypeScript

Security Score

100/100

Audited on Mar 24, 2026

No findings