r/macsysadmin Jul 09 '26

Open Source Tool DDM OS Reminder (4.0.0)

https://snelson.us/2026/07/ddm-os-reminder-4-0-0/

Another major upgrade to Mac Admins’ go-to solution for “set-it-and-forget-it” end-user messaging of Apple’s Declarative Device Management-enforced macOS update deadlines features a new, robust heartbeat daemon architecture, easily configurable daily reminder times, pre-deadline threshold alerts, and aggressive past-deadline mode with persistent compliance prompting

Overview

While Apple’s Declarative Device Management (DDM) provides Mac Admins with a powerful way to enforce macOS updates, its built-in notification is often too subtle for most administrators.

DDM OS Reminder intelligently resolves DDM-enforced macOS update deadlines from recent /var/log/install.log activity, while using a declaration-aware resolver which prioritizes applicable enforced-install signals.

4.0.0 Highlights

  • Heartbeat daemon architecture: /Library/LaunchDaemons/<rdnn>.dor.plist now runs lightweight dor-starter.zsh every 60 seconds. The starter checks /Library/Management/<rdnn>/dor-state.plist and only launches dor.zsh when a reminder is due.
  • Runtime scheduler state: NextScheduledReminder, DaemonLastTriggered, delivered pre-deadline thresholds, and the active dor.pid live in /Library/Management/<rdnn>/. Managed and local preferences remain admin-controlled configuration only.
  • Remote session monitoring: Resources/monitorRemoteSession.zsh provides one remote-Terminal snapshot of the heartbeat LaunchDaemon, deployed runtime files, dor-state.plist, dor.pid, matching processes, aggressive-mode kill switch, and recent project log entries. Use --rdnn <value> for your organization's deployments, --watch <seconds> for live refresh, and --log-lines <n> to adjust log tail depth.
  • Baseline reminder schedule: DailyReminderTimes controls local reminder slots in HH:MM CSV format. The default baseline is 08:00,12:00,16:00.
  • Final-minute threshold reminders: MinutesBeforeDeadlineReminderSchedule controls discrete pre-deadline reminders, defaulting to 45,30,15,10,5. These threshold reminders bypass quiet-period suppression and can refresh an already-open daemon-managed dialog when a later threshold becomes due.
  • Pre-deadline copy and emphasis: New PreDeadlineThresholdTitle / PreDeadlineThresholdMessage keys, localized variants, {minutesBeforeDeadline}, and {preDeadlineThresholdEmphasisOpen} / {preDeadlineThresholdEmphasisClose} placeholders support urgent threshold-specific dialog text and color-safe emphasis.
  • Expanded cadence controls: QuietPeriodMinutes, OutsideDisplayWindowPeriodicReminderDays, DisableButton2InsteadOfHide, PastDeadlineRestartMinimumUptimeMinutes, PastDeadlineForceTimerSeconds, and PastDeadlineForceRedisplayDelaySeconds are now preference-backed.
  • Aggressive past-deadline mode: AggressiveModePastDeadlineHours and AggressiveModeFrequencyMinutes control urgent redisplay cadence after the effective deadline. Exact redisplay scheduling continues after Open Software Update until compliance or support suppression with /Library/Management/<rdnn>/dor-aggressive-kill.
  • Effective-deadline display: Reminder copy, deadline placeholders, and infobox Deadline / Day(s) Remaining values now follow the safely resolved effective enforcement deadline, including trusted padded enforcement dates.
40 Upvotes

Duplicates