Systemd Timers

53 timers total. No user crontab — everything scheduled lives in systemd timers.
Host clock is UTC; OnCalendar entries carry Asia/Singapore suffixes where the
intent is SGT.

Monitoring / supervision (short cycle)

Timer Interval Purpose
vps-supervise.timer 5 min 7-layer self-heal (VPS/Supervision)
ops-collect.timer 5 min ops registry → state.json + index.html
signal-outcomes.timer 5 min in-run signal → outcome settlement
hermes-gateway-watch.timer 5 min Hermes gateway liveness/duplicate-poll watchdog
red-metrics.timer 10 min red-metrics
sysstat-collect.timer 10 min sar-style metric collection
sportstlm-warm.timer ~45 s keep the main hub warm
llm-cost-report.timer 15 min LLM cost JSON (Sportstlm/LLM Pipeline)
vps-tmp-cleanup.timer 15 min /tmp hygiene
vps-module-monitor.timer 7 min module freshness
vps-inrun-signal.timer 7 min in-run signal monitor
vps-docker-cleanup.timer 30 min image prune

Data pipelines

Timer Schedule (UTC) Purpose
inrun-settle.timer 15:19 settle in-run outcomes
vps-leak-scan.timer 15:30 credential leak scan
code-backup.timer 15:30 code snapshot → GitHub (VPS/Backups)
nba-odds.timer 15:40 NBA odds web scrape
unified-games.timer 16:00 unified games rollup
nba-metrics.timer 16:10 NBA metrics
snooker-sync.timer 16:17 snooker sync
hub-previews.timer 16:20 hub previews
nba-odds-api.timer 16:20 NBA odds API
provider-balance.timer 20:40 LLM provider balance
db-guards.timer 21:40 DB guard checks
ufc-refresh.timer 22:00 UFC refresh
matches-mirror.timer 22:20 matches mirror
daily-report.timer 23:00 daily report
predictz-push.timer 23:30 Predictz push
api-odds-fill.timer 00:15 API odds fill
tips-settle.timer 00:30 tips settlement
ufc-espn-sync.timer 00:40 UFC ESPN sync
goals-engine-report.timer 01:00 goals engine report
odds-fill.timer 01:00 odds fill
sportsmole-online.timer 01:04 (09:00 & 18:00 SGT) Sportstlm/Sports Mole Pipeline
tips-engine.timer 01:30 tips engine

Backups / housekeeping

Timer Schedule Purpose
inrun-db-backup.timer Mon & Fri (15:00 SGT) in-run DB archive (VPS/Backups)
hub-db-backup.timer 19:30 hub DB backup
restore-drill.timer monthly restore drill
sysstat-rotate.timer daily 00:00 rotate sysstat
vps-supervise-digest.timer daily 00:00 (08:00 SGT) health digest → Telegram
llm-cost-digest.timer daily 13:00 (21:00 SGT) LLM cost digest
sysstat-summary.timer daily 00:07 sysstat summary
goals-engine-digest.timer daily 01:05 goals engine digest
logrotate.timer / fstrim / apt-daily* / dpkg-db-backup / man-db / systemd-tmpfiles-clean / e2scrub / xfs_scrub various OS-level (Ubuntu defaults)

Inspect

systemctl list-timers --no-pager
systemctl list-timers 'vps-*' 'inrun*' 'sportsmole*' --no-pager