Skip to main content

The daily checkup

Every morning at 8, one job checks 18 things about the box. It fixes what is safe to fix. It emails the owner only if something is still wrong. Silence means all is well.

Where you see it​

Most days, nowhere. That is the point. When something is wrong, the owner gets one email that says the box needs attention. The details sit on the Daily checkup card on the Health tab. The email is the "come look" ping. The tab is where the owner acts.

The card is written on every run, even quiet ones. So a quiet week and a dead week never look the same.

What happens, step by step​

  1. At 8 a.m. the timer starts healthcheck.py (the checkup).
  2. It runs all 18 checks below.
  3. For anything with a safe, known fix, it applies the fix and checks that it worked.
  4. It writes its card for the Health tab.
  5. If anything is still wrong, it sends one email and files one batched report to Otto.
  6. If a repair was needed three days running, it raises a louder alarm. A repeat means a real cause.
#What it checks
1The agent's own heartbeat is fresh.
2Claude is still signed in.
3The Google logins (mail and calendar) still work.
4A tap-to-reconnect did not quietly half-fail.
5Disk space.
6Memory pressure.
7No leftover browser programs are piling up.
8The box's files match the folder in git (drift).
9Secrets match between machines.
10The six always-on services are running: sign-in, the agent page, Discord, the tool door, the WhatsApp bridge, the web server.
11Every timer still exists and is still scheduled.
12The chat page answers from the open internet. This catches an expired certificate or bad address setup that inside checks miss.
13The overnight morning prep finished.
14The help-bot gap check ran.
15The inbox assistant is alive.
16WhatsApp is still paired and fresh.
17WhatsApp can actually send.
18A login borrowed from another machine still works.

Checks 13 to 15 and 18 watch routines from the reference install. A different owner's box watches its own.

What powers it​

PartWhat it does
healthcheck.pyRuns the 18 checks, applies safe fixes, writes the card, sends the email.
agent-health.timerStarts the checkup at 8 a.m.
health_state.pyThe shared card format every Health tab card uses.
routine_report.pyFiles whatever is left as one report to Otto.
box-freshThe repair it can run for memory and browser buildup.

Why it works this way​

Up, not right

Health is "is it up", not "is it right". The checkup never judges whether the agent's answers are any good. That is a separate, scored test.

It only emails on failure, because a daily "all fine" email stops being read. Then the one that matters gets missed too.

Check 17 exists because being paired and being able to send turned out to be two different things. WhatsApp looked connected while no message could leave.

Check 12 tests from the outside in. Every inside check can pass while no one on the internet can reach the page.

Connected to​