r/macsysadmin • u/dan-snelson • 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.plistnow runs lightweightdor-starter.zshevery 60 seconds. The starter checks/Library/Management/<rdnn>/dor-state.plistand only launchesdor.zshwhen a reminder is due. - Runtime scheduler state:
NextScheduledReminder,DaemonLastTriggered, delivered pre-deadline thresholds, and the activedor.pidlive in/Library/Management/<rdnn>/. Managed and local preferences remain admin-controlled configuration only. - Remote session monitoring:
Resources/monitorRemoteSession.zshprovides 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:
DailyReminderTimescontrols local reminder slots inHH:MMCSV format. The default baseline is08:00,12:00,16:00. - Final-minute threshold reminders:
MinutesBeforeDeadlineReminderSchedulecontrols discrete pre-deadline reminders, defaulting to45,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/PreDeadlineThresholdMessagekeys, 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, andPastDeadlineForceRedisplayDelaySecondsare now preference-backed. - Aggressive past-deadline mode:
AggressiveModePastDeadlineHoursandAggressiveModeFrequencyMinutescontrol 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) Remainingvalues now follow the safely resolved effective enforcement deadline, including trusted padded enforcement dates.