A lightweight Docker app that watches Radarr and Sonarr for new additions and episode downloads, sending push notifications via Pushover. Includes a web UI showing a live history of everything that's been added.
7070 with cards for every event — auto-refreshes every 30 secondsCards update every 30 seconds automatically. Filter buttons at the top let you narrow by type.
┌───────────────────────────────────────────────────────
│ Media Monitor [LIVE] ● │
│ Radarr & Sonarr additions │
├───────────────────────────────────────────────────────
│ [All] [Movies] [Series] [Episodes] 42 items │
├───────────────────────────────────────────────────────
│ 🎬 Deadpool │ 🎞️ 9-1-1 │
│ 2016 │ S09E18 │
│ Action, Comedy │ Panic │
│ [marvel] │ Fox │
│ May 7, 23:50 │ May 8, 07:19 │
└───────────────────────────────────────────────────────
New Movie Added New Series Added New Episode Downloaded
──────────────── ───────────────── ──────────────────────
Deadpool (2016) 1883 (2021) 9-1-1 S09E18
Action, Comedy Drama, Western Panic
Added to: marvel Paramount+ · 2 seasons Fox
git clone [email protected]:rapdragon/arrivalr.git
cd arrivalr
Edit docker-compose.yml and fill in your values:
environment:
RADARR_URL: http://<radarr-ip>:7878
RADARR_API_KEY: <your-radarr-api-key>
SONARR_URL: http://<sonarr-ip>:8989
SONARR_API_KEY: <your-sonarr-api-key>
PUSHOVER_TOKEN: <your-pushover-app-token>
PUSHOVER_USER: <your-pushover-user-key>
POLL_INTERVAL: "300"
HISTORY_RETENTION_DAYS: "30"
Getting your API keys:
Getting your Pushover keys:
docker compose up -d
Web UI will be available at http://<host>:7070.
TrueNAS Scale doesn't pick up docker-compose.yml changes automatically. When updating the code:
monitor.py to the hostdocker restart arrivalr
To change environment variables, edit the app in Apps → arrivalr → Edit.
| Variable | Default | Description |
|---|---|---|
RADARR_URL | required | Base URL of your Radarr instance |
RADARR_API_KEY | required | Radarr API key |
SONARR_URL | required | Base URL of your Sonarr instance |
SONARR_API_KEY | required | Sonarr API key |
PUSHOVER_TOKEN | required | Pushover application token |
PUSHOVER_USER | required | Pushover user key |
POLL_INTERVAL | 300 | Seconds between checks |
HISTORY_RETENTION_DAYS | 30 | Days to keep history entries before pruning |
WEB_PORT | 7070 | Port for the web UI |
STATE_FILE | /data/seen.json | Path to state persistence file |
The container stores two files in /data/:
| File | Purpose |
|---|---|
seen.json | Tracks known movie/series IDs and the Sonarr history cursor |
history.json | Full log of every event shown in the web UI |
Mount a volume at /data/ to persist these across container recreations.
On first run the monitor snapshots your existing Radarr library, Sonarr library, and Sonarr download history — no notifications are sent for anything that already exists. From that point on:
downloadFolderImported event in Sonarr history → New Episode Downloaded notificationHistory entries older than HISTORY_RETENTION_DAYS are pruned automatically on each poll cycle.
Content type
Image
Digest
sha256:d8f1d3661…
Size
17.2 MB
Last updated
6 months ago
docker pull rapdragon/arrivalr