ai-budget-weekly |
user-timer |
Mon *-*-* 14:10:00 |
11-09 14:10 |
ok |
11-16 14:10 |
Weekly AI burn report from ccusage → Log of projects/ai-capacity.md |
ai-capacity-refresh |
user-timer |
OnBootUSec=2min |
11-11 21:59 |
ok |
11-11 22:04 |
Codex allowance refresh, read-only/no inference |
ai-work-runner |
user-timer |
*-*-* *:15,45:00 |
11-11 21:45 |
ok |
11-11 22:15 |
Bounded authorized AI draft/review jobs; capacity + task-digest checks; no live-source edits |
anacron |
system-timer |
*-*-* 07..23:30:00 |
11-11 21:31 |
ok |
11-11 22:32 |
Trigger anacron every hour |
anacron:anacron |
cron |
30 7-23 * * * |
- |
unknown |
11-11 22:30 |
anacron |
apport-autoreport |
system-timer |
OnStartupUSec=1h |
11-11 19:39 |
ok |
11-11 22:39 |
Process error reports when automatic reporting is enabled (timer based) |
apt-daily |
system-timer |
*-*-* 06,18:00:00 |
11-11 11:45 |
ok |
11-12 02:22 |
Daily apt download activities |
apt-daily-upgrade |
system-timer |
*-*-* 06:00:00 |
11-11 06:37 |
ok |
11-12 06:26 |
Daily apt upgrade and clean activities |
assistant-heartbeat |
user-timer |
OnBootUSec=1min |
11-11 21:59 |
ok |
11-11 22:00 |
Assistant heartbeat |
assistant-test |
cron |
40 6 * * * |
11-11 06:40 |
ok |
11-12 06:40 |
daily canaries: the assistant must still refuse the same things |
assistant.sqlite |
cron |
10 7 * * 1 |
- |
unknown |
11-16 07:10 |
SOP-013 weekly review |
booking-warm |
cron |
*/5 * * * * |
11-11 21:55 |
ok |
11-11 22:05 |
booking-warm: GET /api/book/slots (next 14 days) so the website's D1 busy-time cache stays under 5 min old (embeddedera-site PR #9), then POST /api/book/remin |
cf-zone-baseline |
cron |
0 4 * * 1 |
11-09 04:00 |
ok |
11-16 04:00 |
Weekly: same safe settings on every Cloudflare zone (new brand domains included) |
claude-update |
user-timer |
*-*-* 04:30:00 |
11-11 04:34 |
ok |
11-12 04:32 |
update-claude.sh — claude update, restart claude-remote if the version changed, roll back + exit 1 if it won't start |
cockpit-index |
cron |
*/15 * * * * |
11-11 21:45 |
ok |
11-11 22:15 |
Cockpit status files for Home: jobs.json/jobs.md and now.json/NOW.md (generated, read-only collectors) |
codex-auth-heal |
user-timer |
OnBootUSec=2min |
11-11 21:50 |
ok |
11-11 22:05 |
Check the Codex login every 15 minutes |
codex-remote-control |
user-timer |
OnBootUSec=20s |
11-11 21:59 |
ok |
11-11 22:00 |
Start Codex remote control at boot and recover it if stopped |
codex-update |
user-timer |
*-*-* 04:00:00 |
11-11 04:05 |
ok |
11-12 04:13 |
Daily Codex updates |
craft-update |
user-timer |
*-*-* 05:00:00 |
11-11 05:12 |
ok |
11-12 05:09 |
craft-setup — upgrade the 13 storytold Craft apps, prune to current+previous |
cron-watch |
user-timer |
*-*-* *:25:00 |
11-11 21:26 |
ok |
11-11 22:26 |
Hourly check that every wrapped cron job is still running |
dpkg-db-backup |
system-timer |
*-*-* 00:00:00 |
11-11 00:00 |
ok |
11-12 00:00 |
Daily dpkg database backup timer |
e2scrub_all |
system-timer |
Sun *-*-* 03:10:00 |
11-08 03:10 |
ok |
11-15 03:10 |
e2scrub_all — no-op (LVM only, no LVs) |
e2scrub_all:system |
cron |
30 3 * * 0 |
- |
unknown |
11-15 03:30 |
system |
e2scrub_all:system#2 |
cron |
10 3 * * * |
- |
unknown |
11-12 03:10 |
system |
erp-backup |
cron |
15 3 * * * |
11-11 03:16 |
ok |
11-12 03:15 |
Off-site encrypted backup of InvenTree/listmonk/immich DBs + vaultwarden sqlite -> R2 (embeddedera-backups), 30 days kept locally. Before the 03:30 snapraid syn |
fixer |
cron |
*/5 * * * * |
11-11 21:55 |
ok |
11-11 22:05 |
fixer |
fixer-prs-refresh |
cron |
*/15 * * * * |
11-11 21:45 |
ok |
11-11 22:15 |
fixer-prs-refresh |
fstrim |
system-timer |
Mon *-*-* 00:00:00 |
11-09 01:04 |
ok |
11-16 01:32 |
Discard unused filesystem blocks once a week |
fwupd-refresh |
system-timer |
*-*-* *:00:00 |
11-11 21:15 |
ok |
11-11 22:45 |
Refresh fwupd metadata regularly |
history-backup |
cron |
50 2 * * * |
11-11 02:51 |
ok |
11-12 02:50 |
Versioned history of immich + EmbeddedEra into a restic repo on the pool (in parity). 02:50 = after the 02:00 Immich dump, before the 03:30 sync. |
history-weekly |
cron |
30 5 * * 0 |
11-08 05:30 |
ok |
11-15 05:30 |
history-weekly |
job-failure-report |
cron |
20 7 * * 1 |
11-09 07:20 |
ok |
11-16 07:20 |
job-failure-report |
job-failure-sweep |
cron |
*/10 * * * * |
11-11 21:50 |
ok |
11-11 22:10 |
Job failure handling (SOP-043): sweep for unhooked failures, escalate deferred ones, close recovered incidents; weekly summary Monday. Detection/re-run/alert/ti |
job-fixer |
cron |
*/30 * * * * |
11-11 21:30 |
ok |
11-11 22:30 |
AI job fixer, week 1 (PR only, owner approves). Kill switch: ~/.config/job-fixer.disabled. See map/processes/job-fixer.md |
launchpadlib-cache-clean |
user-timer |
OnStartupUSec=5min |
11-11 19:04 |
unknown |
11-12 19:04 |
Clean up old files in the Launchpadlib cache |
logrotate |
system-timer |
*-*-* 00:00:00 |
11-11 00:00 |
ok |
11-12 00:00 |
Daily rotation of log files |
maint-badblocks |
system-timer |
2026-09-09 23:00:00 |
- |
unknown |
- |
One-shot: Item 17: read-only badblocks sweep of disk1 defect band |
maint-dedupe |
system-timer |
2026-09-11 08:00:00 |
- |
unknown |
- |
One-shot: Item 16 tranche B: hash and hardlink same-disk duplicate downloads |
maint-drill |
system-timer |
2026-09-09 08:00:00 |
- |
unknown |
- |
One-shot: Item 15: SnapRAID parity drill on d3 (sync, audit, undelete rehearsal) |
man-db |
system-timer |
*-*-* 00:00:00 |
11-11 02:33 |
ok |
11-12 04:00 |
Daily man-db regeneration |
market-brief-meeting |
cron |
0 8 * * 1,4 |
11-09 08:00 |
ok |
11-12 08:00 |
owner decision meeting on the brief; map: objects/automation/schedules.md |
market-brief-nag |
cron |
0 12,17 * * 1,4 |
11-09 17:00 |
ok |
11-12 12:00 |
market-brief-nag |
market-brief-pull |
cron |
30 7 * * 1,4 |
11-09 16:21 |
ok |
11-12 07:30 |
cloud Market brief routine (06:30) -> notebook projects/market-brief + ntfy; map: objects/automation/schedules.md |
marketing-snapshot |
cron |
5 8 * * * |
11-11 08:06 |
ok |
11-12 08:05 |
Marketing page data: daily read-only snapshot (GSC, Cloudflare, Meta, Bing, Listmonk, pipeline) -> ~/.local/state/marketing/ |
motd-news |
system-timer |
*-*-* 00,12:00:00 |
11-11 16:54 |
ok |
11-12 09:04 |
Message of the Day |
note-release-preflight |
cron |
20 5 * * * |
11-11 05:26 |
ok |
11-12 05:20 |
rescue-kit installed copy must match ~/rescue-kit (sudo install) — see map card storage/rescue-usb Build the production site with every queued note added; pages |
notebook-publish |
user-timer |
OnBootUSec=5min |
11-11 21:52 |
ok |
11-11 22:02 |
Notebook publish |
notes-daily |
cron |
0 23 * * * |
11-10 23:00 |
ok |
11-11 23:00 |
Daily vault upkeep: one Sonnet pass over the day (commits + session digest) keeps map cards, memory and logs in step. |
notes-nightly |
cron |
55 23 * * * |
11-10 23:55 |
ok |
11-11 23:55 |
Vault: commit + push whatever changed today. Mechanical, no AI. (notes-daily at 23:00 does the AI upkeep first) |
offbox-heartbeat |
cron |
*/5 * * * * |
11-11 21:55 |
ok |
11-11 22:05 |
secret read inside the script, never logged (2026-10-15); map: objects/automation/offbox-watchdog.md |
offsite-backup |
cron |
15 5 * * * |
11-11 05:15 |
ok |
11-12 05:15 |
Off-site (R2, free tier guarded): business data that cannot be recreated; monthly restore drill |
offsite-drill |
cron |
45 5 1 * * |
11-01 05:45 |
ok |
12-01 05:45 |
offsite-drill |
ops-commit |
cron |
20 2 * * * |
11-11 02:20 |
ok |
11-12 02:20 |
PAUSED-SOCIAL 2026-10-16 17 */3 * * * /home/angel/.local/bin/cron-run content-approve-missing /home/angel/.local/share/assistant-venv/bin/python /home/angel/.lo |
panel-photos |
cron |
*/2 * * * * |
11-11 21:58 |
ok |
11-11 22:02 |
panel-photos: photo screensaver pictures for the wall panels — random photo from Immich album "Kitchen panel" (nightstand: "Nightstand", else kitchen), fitted |
precious-sync |
cron |
20 2 * * * |
11-11 02:24 |
ok |
11-12 02:20 |
precious-sync |
precious-verify |
cron |
0 5 * * 0 |
11-01 05:36 |
ok |
11-15 05:00 |
precious-verify |
push-summary |
cron |
30 7 * * * |
11-11 07:30 |
ok |
11-12 07:30 |
push-summary |
python |
cron |
*/5 * * * * |
- |
unknown |
11-11 22:05 |
python |
qbit-killswitch |
cron |
* * * * * |
- |
unknown |
11-11 22:01 |
qbit-killswitch |
reading-weekly |
cron |
0 8 * * 0 |
11-08 08:00 |
ok |
11-15 08:00 |
weekly X article reading notes, map: processes/reading-weekly.md |
rescue-watchdog |
system-timer |
*-*-* 09:00:00 |
11-11 09:03 |
ok |
11-12 09:04 |
rescue-watchdog — archive age/size/device check |
retention-sweep |
user-timer |
*-*-02 04:30:00 |
11-02 04:30 |
unknown |
12-02 04:30 |
Monthly retention sweep |
rsnapshot:rsnapshot |
cron |
0 * * * * |
- |
unknown |
11-11 23:00 |
rsnapshot |
rsnapshot:rsnapshot#2 |
cron |
30 2 * * * |
- |
unknown |
11-12 02:30 |
rsnapshot |
rsnapshot:rsnapshot#3 |
cron |
35 2 * * 0 |
- |
unknown |
11-15 02:35 |
rsnapshot |
rsnapshot:rsnapshot#4 |
cron |
40 2 1 * * |
- |
unknown |
12-01 02:40 |
rsnapshot |
rsnapshot:rsnapshot#5 |
cron |
45 2 1 1 * |
- |
unknown |
01-01 02:45 |
rsnapshot |
sec-watch |
cron |
*/5 * * * * |
11-11 21:55 |
ok |
11-11 22:05 |
sec-watch: intrusion and exposure checks, pages on a finding (SOP-049) |
snap.firmware-updater.firmware-notifier |
user-timer |
*-*-* 00:00:00 |
11-02 21:00 |
ok |
- |
Timer firmware-notifier for snap application firmware-updater.firmware-notifier |
snapd.snap-repair |
system-timer |
*-*-* 05,11,17,23:00:00 |
- |
unknown |
- |
Timer to automatically fetch and run repair assertions |
snapraid-age |
cron |
17 * * * * |
11-11 21:17 |
fail |
11-11 22:17 |
snapraid-age: parity freshness check; exit 1 when the last snapraid-sync.service run failed or the newest log ending summary:exit:ok is ≥36 h old. No root |
snapraid-scrub |
system-timer |
Sun *-*-* 04:00:00 |
11-08 04:00 |
ok |
11-15 04:00 |
SnapRAID scrub -p 12 -o 7 |
snapraid-sync |
system-timer |
*-*-* 03:30:00 |
11-11 03:30 |
fail |
11-12 03:30 |
SnapRAID sync via guard → precheck → snapraid -l … sync |
storage-forecast |
cron |
0 8 * * * |
11-11 08:01 |
ok |
11-12 08:00 |
storage-forecast |
store-backup |
cron |
30 2 * * * |
11-11 02:30 |
ok |
11-12 02:30 |
store-backup = erp-backup store — production store DB dump + uploads, age-encrypted → /mnt/storage/EmbeddedEra/backups/store/ (30 d) + R2 store/<stamp>/ |
surfaces-check |
user-timer |
*-*-* 06:40:00 |
11-11 15:40 |
ok |
11-12 06:41 |
Internal pages check |
sysstat-collect |
system-timer |
*-*-* *:00/10:00 |
11-11 22:00 |
ok |
11-11 22:10 |
Run system activity accounting tool every 10 minutes |
sysstat-summary |
system-timer |
*-*-* 00:07:00 |
11-11 00:07 |
ok |
11-12 00:07 |
Generate summary of yesterday's process accounting |
sysstat:null |
cron |
5-55/10 * * * * |
- |
unknown |
11-11 22:05 |
Activity reports every 10 minutes everyday |
sysstat:null#2 |
cron |
59 23 * * * |
- |
unknown |
11-11 23:59 |
Additional run at 23:59 to rotate the statistics file |
systemd-tmpfiles-clean |
system-timer |
OnBootUSec=15min |
11-11 19:14 |
ok |
11-12 19:14 |
Daily Cleanup of Temporary Directories |
ua-timer |
system-timer |
OnUnitActiveUSec=6h |
- |
unknown |
- |
Ubuntu Pro Timer for running repeated jobs |
update-notifier-download |
system-timer |
OnStartupUSec=5min |
11-11 19:04 |
ok |
11-12 19:04 |
Download data for packages that failed at package install time |
update-notifier-motd |
system-timer |
Sun *-*-* 06:00:00 |
11-08 18:07 |
ok |
11-16 14:21 |
Check to see whether there is a new version of Ubuntu available |
vault-push |
user-timer |
*-*-* 02:47:00 |
11-11 02:47 |
fail |
11-12 02:47 |
vault-push — copy every ~/.config/*/env, */*.env, credentials/* file into Vaultwarden as Secure Notes "server · " (org Plex Server, account server |
vpn-check |
cron |
*/5 * * * * |
- |
unknown |
11-11 22:05 |
VPN egress check → Homepage VPN tile (via hub /api/vpn-*) |
wg-docker-watchdog |
system-timer |
OnBootUSec=2min |
11-11 21:59 |
ok |
11-11 22:00 |
restart wg-easy if stopped |