Skip to content
Subscribe

Cron & Automation Infrastructure

Status: Production (14 active cron jobs)

ScheduleScriptPurpose
7:05 AMmorning-briefing.sh9-source morning digest to Telegram
7:00 AMcron-canvas-sync.shCanvas LMS assignment sync
8 AM, 2 PM, 8 PMdeadline-watcher.sh48h deadline alerts via Telegram
Every 15 mincron-telegram-watchdog.shBot health check + auto-restart
Every 15 mindomain-sync.shDomain state JSON generation
Every 4hNC v5 auto-syncSnapshot + cloud redeploy
7 AM dailynews-scanner.pyAI/tech news scan
Every 6hgithub-enrichmentQuery repos for project status
11 PM dailytrack-costs.shDaily cost summary to Telegram
Sunday 8 PMcron-weekly-review.shWeekly review generation
Monday 7 AMweek-ahead.shStudy plan generator
Every 3hPlaud sync (launchd)Audio recording transcription
Nightlyceo-aggregate.shExecutive summary from all domains
9 PM dailyhabit-checkin.shFamily habit check-in
  • Runs every 15 minutes
  • Checks: launchd service loaded, daemon PID exists, tmux session alive
  • Auto-restarts via launchctl kickstart if down
  • Sends Telegram alert on failure/recovery (rate-limited to 1/hour)
  • Process checks, disk space monitoring
  • Auto-restart with cooldown
  • Alert escalation via Telegram
  • Reusable script for any cron job to send Telegram alerts
  • Used by watchdog, deadline watcher, grade alerts, cost tracker
ScriptTriggerAction
grade_alerts.pyCanvas grade change detectedTelegram notification
followup_alerts.pyConsulting deal stale >7 daysTelegram reminder
birthday_alerts.pyBirthday at 7/3/1/0 day marksTelegram + gift reminder
deadline-watcher.shAssignment due within 48hTelegram alert
  1. ValueError in cron parsing: Added try/except for * in cron expressions
  2. iCloud deadlock: Keep local backup on copy failure
  3. Timeout protection: 120s timeouts on all sync scripts via perl alarm wrapper
  4. Zombie processes: Killed ~20 hanging processes from iCloud file locks
  5. PATH issues: Added /opt/homebrew/bin to crontab PATH
  6. Daemon restart: Changed KeepAlive to unconditional <true/>

40+ launch agents managed via launchd. Key ones:

  • Telegram bot daemon (KeepAlive: true)
  • Audio sync (every 3h)
  • Various deprecated agents flagged for cleanup

Maintain your crontab in a versioned config file. Install with crontab path/to/config.txt. This keeps cron configuration in source control and makes it reproducible.