Skip to content

Backup health

The Backups card: an overdue offsite copy and a documents backup that shrank by half come first, then the healthy ones with when they ran, their size and the next run

Valet gathers every backup job your services know about into one Backups card, so “are my backups okay?” has one answer. It appears as soon as an integration reports a backup, and you place it like any other card:

layout:
- title: Services
widgets: [valet.backups]

Jobs that need a look come first: failed, overdue, never worked, or a size that changed sharply. Then the healthy ones, each with when it last worked (“2h ago”), its size, when it runs next and a small line of its size over recent runs.

  • Failed: its last run failed, and nothing has worked since.
  • Overdue: no success within the time it should take. That comes from the service’s schedule when it says one (a tenth to spare, and at least an hour), from backups.expect for that job, or from backups.overdue: 26 hours unless you change it.
  • Worth a look: the last run shrank by a third or more, or grew by half, against the one before. Changes under 50 MB don’t count. A backup that suddenly halves is often a missing mount.

Sizes come from the service’s own history when it keeps one (Proxmox does). Otherwise Valet remembers what it saw, one size per run, in data/backups.json.

ServiceWhat it reports
Backresteach plan: last good backup, last run and whether it failed, what it protects, the next run
Kopiaeach source: last snapshot, its size, errors as a warning, the next snapshot and the interval
Duplicatieach job: last finish, last error, source size, the next run and its repeat
Proxmox VEeach guest that has backups: its newest vzdump on every backup storage, sizes run by run, and a failed backup task since
Proxmox Backup Servereach backup group in each datastore: its newest snapshot, and a failed backup task since
Home Assistantits automatic backups (2025.1 and later): last success, last attempt and the next one
TrueNAScloud sync and replication tasks that are switched on
Healthchecksany check with “backup” in its name or tags

Immich and Paperless don’t report their own backups through their APIs, so they aren’t listed. A plugin can add any other.

A job going wrong and coming right is told once each: a notice on the page, a line on the timeline, and a push to your notification channels. A failed job that also goes overdue is still one notice. What was already wrong the first time Valet looked isn’t news, but it’s on the card and in the page’s summary like any other problem.

Valet checks every 15 minutes even with the page closed, so a job that goes quiet overnight reaches your phone.

“Are my backups ok?” gets the card in the chat, with the facts the assistant needs to answer: what’s wrong, when each last worked and when it should have. In ⌘K, type backups or check the backups to see the card with no model at all.

backups:
overdue: 26h # how long a job may go without a success when its service doesn't say its schedule
expect: # that, per job, by name
Offsite copy: 8d
every: 15m # how often it checks with nobody looking
notify: true # also push failures, overdue jobs and recoveries to notify.channels

backups: false turns it all off.