Off-box watchdog: investigation findings + Tailscale-based fix design #3836
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Originally written by @ccantynz-alt on GitHub.
Imported from https://github.com/ccantynz-alt/jarvis-platform/pull/2
What this is
Doc-only update to
docs/OFF-BOX-WATCHDOG.mdrecording the 2026-07-19 investigation into the watchdog's unreliable execution and the current "down" state, plus the redesign that fixes it.Findings
status: down(since 06:03 UTC 2026-07-19) is likely a false alarm. The routine recorded "down" ~3 hours before the commit restoring the:9212liveness endpoint (e728388) was even authored — a deploy race, not evidence of a dead box. On-box verification still needed (ss -tlnp | grep 9212,systemctl status jarvis-dashboard).ntfy.shand the Tailscale control plane, and plain HTTP to the box's raw IP is unroutable. This matches the "reads work, writes vanish" symptom and means the health check itself may not have been reaching the box.af340f2), so GitHub egress works; per-run logs in the routines web UI remain the only way to see the remaining failures.Fix design (documented, not yet executed)
Join the watchdog to the tailnet: allowlist
*.tailscale.comin the environment's network policy, add an ephemeral pre-authorized tagged auth key as an env var, runtailscaledin userspace mode, probe the gateway athttps://jarvis.tailbd6217.ts.net:8443/health, and alert via the gateway's/internal/notifywith a scoped token (heartbeat-token pattern) with ntfy/email as the dead-box backstop. Two prerequisites are owner-only (environment network policy + Tailscale admin key) and are called out in the doc.🤖 Generated with Claude Code
https://claude.ai/code/session_01HA1aZrJyqbEN29hAehKJ4c
Generated by Claude Code