Skip to main content

Environment Variables Reference

Complete reference of all Pulsarr environment variables. Most users only need the Configuration Guide - this reference is for development and advanced deployments.

For Developers

This includes internal variables for development and testing. Many are not needed for typical production use.

Core Application

VariableDescriptionDefault
baseUrlExternal address for webhook URLshttp://localhost
portExternal port for webhook URLs3003
listenPortInternal port server binds to3003
TZTimezone (e.g., America/Los_Angeles)UTC
basePathURL prefix for subfolder reverse proxy/

Logging

VariableDescriptionDefault
logLevelfatal, error, warn, info, debug, trace, silentinfo
enableConsoleOutputShow logs in terminaltrue
enableRequestLoggingLog HTTP requests (sensitive params redacted)false

Database

SQLite (Default)

VariableDescriptionDefault
dbPathSQLite database location./data/db/pulsarr.db

PostgreSQL

VariableDescriptionDefault
dbTypeSet to postgres to enablesqlite
dbHostPostgreSQL hostnamelocalhost
dbPortPostgreSQL port5432
dbNameDatabase namepulsarr
dbUserUsernamepostgres
dbPasswordPasswordNone
dbConnectionStringFull connection string (overrides above)None

Security & Sessions

VariableDescriptionDefault
cookieSecretSecret key for cookiesAuto-generated
cookieNameCookie namepulsarr
cookieSecuredRequire HTTPS for cookiesfalse
allowIframesAllow embedding in Organizr, etc.false
authenticationMethodrequired, requiredExceptLocal, disabledrequired
rateLimitMaxMax requests per time window500
closeGraceDelayShutdown grace period (ms)10000

Authentication Configuration Details

When using authenticationMethod=requiredExceptLocal, these IP ranges bypass auth:

  • 127.0.0.0/8 - localhost
  • 10.0.0.0/8 - Class A private
  • 172.16.0.0/12 - Class B private
  • 192.168.0.0/16 - Class C private
  • 169.254.0.0/16 - Link-local
  • ::1/128, fc00::/7, fe80::/10 - IPv6 equivalents
warning

Ensure your network is secure when using requiredExceptLocal.

Plex

VariableDescriptionDefault
plexTokensJSON array of Plex tokensNone
plexServerUrlPlex server URL (optional, auto-detected)None
skipFriendSyncSkip syncing Plex friendsfalse
skipIfExistsOnPlexSkip if content exists on Plexfalse
enablePlexPlaylistProtectionEnable playlist protectionfalse
plexProtectionPlaylistNameProtection playlist nameDo Not Delete
selfRssSelf RSS feed URLNone
friendsRssFriends RSS feed URLNone

Notifications

Discord

VariableDescriptionDefault
discordWebhookUrlWebhook URLs (comma-separated)None
discordBotTokenBot tokenNone
discordClientIdClient IDNone

Apprise

VariableDescriptionDefault
appriseUrlApprise server URLNone
enableAppriseAuto-set based on server availabilityfalse
systemAppriseUrlApprise URL for system notifications onlyNone

Tautulli

VariableDescriptionDefault
tautulliEnabledEnable Tautulli (requires Plex Pass)false
tautulliUrlTautulli server URLNone
tautulliApiKeyTautulli API keyNone

Notification Queue

VariableDescriptionDefault
queueWaitTimeQueue wait time (ms)120000
newEpisodeThresholdNew episode threshold (ms)172800000
upgradeBufferTimeBuffer between upgrades (ms)2000
pendingWebhookRetryIntervalRetry interval (seconds)20
pendingWebhookMaxAgeMax age (minutes)10
pendingWebhookCleanupIntervalCleanup interval (minutes)60

User Tagging

VariableDescriptionDefault
tagUsersInSonarrEnable user tagging in Sonarrfalse
tagUsersInRadarrEnable user tagging in Radarrfalse
tagPrefixPrefix for user tagspulsarr-user
cleanupOrphanedTagsRemove tags for deleted userstrue
removedTagModeremove, keep, special-tagremove
removedTagPrefixPrefix for removal tagspulsarr-removed

Delete Sync

VariableDescriptionDefault
deletionModewatchlist or tag-basedwatchlist
deleteMovieAuto-delete moviesfalse
deleteEndedShowAuto-delete ended showsfalse
deleteContinuingShowAuto-delete continuing showsfalse
deleteFilesDelete files from disktrue
respectUserSyncSettingOnly delete from sync-enabled userstrue
deleteSyncNotifyNotification typenone
deleteSyncNotifyOnlyOnDeletionOnly notify on actual deletionfalse
deleteSyncTrackedOnlyOnly delete approval-tracked contentfalse
deleteSyncCleanupApprovalsCleanup approvals after deletionfalse
maxDeletionPreventionMax % of library to delete10

New User Defaults

VariableDescriptionDefault
newUserDefaultCanSyncDefault sync permissiontrue
newUserDefaultRequiresApprovalDefault approval requirementfalse
newUserDefaultMovieQuotaEnabledEnable movie quotasfalse
newUserDefaultMovieQuotaTypedaily, weekly_rolling, monthlymonthly
newUserDefaultMovieQuotaLimitMovie quota limit10
newUserDefaultMovieBypassApprovalAuto-approve when exceededfalse
newUserDefaultShowQuotaEnabledEnable show quotasfalse
newUserDefaultShowQuotaTypedaily, weekly_rolling, monthlymonthly
newUserDefaultShowQuotaLimitShow quota limit10
newUserDefaultShowBypassApprovalAuto-approve when exceededfalse

JSON Configuration Variables

These variables accept JSON strings for complex configuration:

Plex Session Monitoring

plexSessionMonitoring='{"enabled":false,"pollingIntervalMinutes":15,"remainingEpisodes":2,"filterUsers":[],"enableAutoReset":true,"inactivityResetDays":7,"autoResetIntervalHours":24,"enableProgressiveCleanup":false}'
FieldDescriptionDefault
enabledEnable session monitoringfalse
pollingIntervalMinutesCheck interval (1-1440)15
remainingEpisodesEpisodes before trigger (1-10)2
filterUsersUsernames to monitor (empty = all)[]
enableAutoResetAuto-reset inactive showstrue
inactivityResetDaysDays before reset (1-365)7
autoResetIntervalHoursReset check interval (1-168)24
enableProgressiveCleanupProgressive season cleanupfalse

Quota Settings

quotaSettings='{"cleanup":{"enabled":true,"retentionDays":90},"weeklyRolling":{"resetDays":7},"monthly":{"resetDay":1,"handleMonthEnd":"last-day"}}'
FieldDescriptionDefault
cleanup.enabledEnable old record cleanuptrue
cleanup.retentionDaysDays to keep history (1-3650)90
weeklyRolling.resetDaysDays between resets (1-365)7
monthly.resetDayDay of month for reset (1-31)1
monthly.handleMonthEndlast-day, skip-month, next-monthlast-day

Approval Expiration

approvalExpiration='{"enabled":false,"defaultExpirationHours":72,"expirationAction":"expire","autoApproveOnQuotaAvailable":false,"cleanupExpiredDays":30}'
FieldDescriptionDefault
enabledEnable auto-expirationfalse
defaultExpirationHoursHours before expiration (1-8760)72
expirationActionexpire or auto_approveexpire
autoApproveOnQuotaAvailableAuto-approve when quota resetsfalse
cleanupExpiredDaysDays to keep expired records (1-365)30

Plex Label Sync

plexLabelSync='{"enabled":false,"labelPrefix":"pulsarr","concurrencyLimit":5,"cleanupOrphanedLabels":false,"removedLabelMode":"remove","removedLabelPrefix":"pulsarr:removed","autoResetOnScheduledSync":false,"tagSync":{"enabled":false,"syncRadarrTags":true,"syncSonarrTags":true}}'
FieldDescriptionDefault
enabledEnable label syncfalse
labelPrefixPrefix for user labelspulsarr
concurrencyLimitMax concurrent operations (1-20)5
cleanupOrphanedLabelsRemove labels for deleted usersfalse
removedLabelModeremove, keep, special-labelremove
removedLabelPrefixSpecial removal label prefixpulsarr:removed
tagSync.enabledSync Sonarr/Radarr tags to Plexfalse
tagSync.syncRadarrTagsSync Radarr tagstrue
tagSync.syncSonarrTagsSync Sonarr tagstrue

Public Content Notifications

publicContentNotifications='{"enabled":false,"discordWebhookUrls":"","discordWebhookUrlsMovies":"","discordWebhookUrlsShows":"","appriseUrls":"","appriseUrlsMovies":"","appriseUrlsShows":""}'

TMDB API Configuration

Required for TMDB metadata features when building from source:

  1. Create account at themoviedb.org
  2. Get Read Access Token at themoviedb.org/settings/api
  3. Add to .env: tmdbApiKey=your_read_access_token_here
note

Use the Read Access Token (starts with eyJ), not the legacy API Key.

Development Only

warning

These variables are for development/testing only. Do not use in production.

Sonarr Instance Seeding

VariableDescription
sonarrBaseUrlSonarr instance URL
sonarrApiKeyAPI key
sonarrQualityProfileQuality profile
sonarrRootFolderRoot folder path
sonarrBypassIgnoredBypass ignored
sonarrSeasonMonitoringSeason monitoring
sonarrMonitorNewItemsMonitor new items
sonarrTagsTags (JSON array)

Radarr Instance Seeding

VariableDescription
radarrBaseUrlRadarr instance URL
radarrApiKeyAPI key
radarrQualityProfileQuality profile
radarrRootFolderRoot folder path
radarrBypassIgnoredBypass ignored
radarrTagsTags (JSON array)