Skip to content

Pulsarr

Pulsarr monitors Plex watchlists and routes requested movies and shows to Sonarr and Radarr. It is useful when Plex is the front door for requests and you want watchlist-driven automation, approvals, quotas, and notifications without running a separate request portal.


Overview

Pulsarr provides:

  • Plex watchlist monitoring - Syncs watched Plex account activity into media requests.
  • Sonarr/Radarr routing - Sends shows and movies to configured Arr instances.
  • Approvals and quotas - Supports controlled request workflows for users.
  • Notifications - Supports Discord, Plex mobile push, webhooks, and Apprise.
  • Multi-user support - Tracks Plex users and watchlist permissions.

Default port

Service Port
Pulsarr 3003

Configuration settings in dumb_config.json

"pulsarr": {
  "enabled": false,
  "postgres_enabled": false,
  "postgres_database": "",
  "process_name": "Pulsarr",
  "repo_owner": "jamcalli",
  "repo_name": "Pulsarr",
  "release_version_enabled": false,
  "release_version": "latest",
  "commit_sha": "",
  "branch_enabled": false,
  "branch": "master",
  "suppress_logging": false,
  "log_level": "INFO",
  "port": 3003,
  "auto_update": false,
  "auto_update_interval": 24,
  "auto_update_start_time": "04:00",
  "clear_on_update": true,
  "exclude_dirs": [
    "/pulsarr/data"
  ],
  "platforms": [
    "bun"
  ],
  "command": [
    "/config/.bun/bin/bun",
    "run",
    "--bun",
    "dist/server.js"
  ],
  "config_dir": "/pulsarr",
  "log_file": "/pulsarr/data/logs/pulsarr.log",
  "env": {
    "NODE_ENV": "production",
    "listenPort": "{port}",
    "dbPath": "/pulsarr/data/db/pulsarr.db",
    "allowIframes": "true"
  }
}

Configuration key descriptions

  • enabled: Whether to start Pulsarr.
  • postgres_enabled: Select DUMB-managed PostgreSQL after using the guided migration tool. SQLite remains the default.
  • postgres_database: Optional target name; blank uses pulsarr.
  • repo_owner / repo_name: GitHub repository DUMB downloads from.
  • release_version_enabled / release_version: Use a tagged release if enabled, or the latest release by default.
  • commit_sha: Build an exact Pulsarr revision from its full 40-character GitHub SHA. It overrides release/branch selection and disables automatic updates until cleared.
  • branch_enabled / branch: Use a source branch instead of a release.
  • port: Pulsarr web UI port.
  • platforms: Uses DUMB's Bun setup path.
  • config_dir: Pulsarr source and runtime directory.
  • exclude_dirs: Keeps the persistent /pulsarr/data directory during updates.
  • env.listenPort: Internal Pulsarr bind port.
  • env.dbPath: SQLite database path.
  • env.allowIframes: Allows Pulsarr to be embedded in the DUMB frontend.

Initial setup

After enabling and starting Pulsarr:

  1. Open Pulsarr from the DUMB service page or at http://<host>:3003.
  2. Create the Pulsarr admin account.
  3. Add your Plex token.
  4. Configure Sonarr and Radarr connections with their DUMB internal URLs and API keys.
  5. Start the main workflow from Pulsarr's dashboard and enable auto-start if desired.

Notes

  • Pulsarr uses SQLite by default at /pulsarr/data/db/pulsarr.db.
  • DUMB installs Bun under /config/.bun when Pulsarr is built from source.
  • DUMB runs Pulsarr's idempotent database migrations before each application start. This creates a missing schema and applies upgrades without deleting the retained SQLite database. A migration failure keeps Pulsarr stopped and preserves the migration error in DUMB's service log.
  • If you intentionally serve Pulsarr behind a separate subfolder reverse proxy, set Pulsarr's own basePath environment variable for that external proxy. DUMB's embedded UI route strips its service prefix and does not need basePath.

PostgreSQL migration

Use Database Migration on the Pulsarr service page for an existing SQLite installation. Rehearsal starts Pulsarr against an isolated PostgreSQL database so Pulsarr creates its current schema, imports application data while excluding Knex's migration bookkeeping tables, validates every copied table, and returns production to SQLite. Cutover repeats this from a cold snapshot and enables postgres_enabled only after validation.

Do not enable PostgreSQL directly when you need the existing users, settings, requests, or integrations. See SQLite to PostgreSQL Migration and the upstream Pulsarr migration guide.