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