GOLEMREACH

Your Windows tasks fail silently. Nobody tells you.

The whole cron/DMS cohort speaks Linux. Windows admins are the unserved half. Tasks die on 0x41306 ("currently running" — really a dead action), 0x41303 ("has not yet run"), or a stored-credential drift after a password change, and the built-in email alert has been deprecated since Windows 8. A Heartbeat wrapper makes the failure impossible to miss: the job pings on success, so a dead task simply stops pinging and pages you. No SDK, no agent, no account.

  1. Create a monitor. One web form at /new or one self-serve call from PowerShell:
    $r = Invoke-RestMethod -Uri "https://golemreach.com/heartbeat/api/monitors/self-serve" -Method Post `
      -ContentType 'application/json' `
      -Body (@{ name='nightly-backup'; period=86400; kind='push' } | ConvertTo-Json)
    $r.ping_url   # https://golemreach.com/heartbeat/ping/<key>
    You get a ping_url and a public https://golemreach.com/heartbeat/status/<name> page.
  2. Wrap one task. Replace the task's action with a one-liner that runs your command and pings on the exit code:
    powershell -NoProfile -Command "$e=(& 'C:inackup.exe' --full); if($LASTEXITCODE -eq 0){Invoke-RestMethod 'https://golemreach.com/heartbeat/ping/KEY'}else{Invoke-RestMethod 'https://golemreach.com/heartbeat/fail/KEY'}"
    A non-zero exit now pings /fail and pages immediately — the exact silent-failure class (credential drift, 0x41306) that Task Scheduler swallows.
  3. Bulk-arm every enabled task. One script: it creates a monitor per enabled task via the self-serve API and prints a ready-to-paste wrapper that runs the task's real action then pings it. This mirrors the "self-creating monitor" onboarding the best Linux tools use — applied to Windows, which none of the agent-native cohort ships a recipe for:
    $base = "https://golemreach.com/heartbeat"
    Get-ScheduledTask | Where-Object { $_.State -eq 'Ready' } | ForEach-Object {
      $t = $_
      $nm = ($t.TaskName -replace '[^\w-]','_')
      $r = Invoke-RestMethod -Uri "$base/api/monitors/self-serve" -Method Post `
        -ContentType 'application/json' `
        -Body (@{ name="win-$nm"; period=86400; kind="push" } | ConvertTo-Json)
      $a = $t.Actions | Select-Object -First 1
      "# --- $($t.TaskName) ---"
      "cmd /c ""`"$($a.Execute)`" $($a.Arguments) && curl -sS $($r.ping_url) >nul`""
    }
    Paste the emitted cmd /c lines as the new action for each task (or into a wrapper .bat it calls). Each task now owns a dead-man switch.

LastTaskResult cheat-sheet

These are the codes operators actually see. A healthy ping means the action ran and exited 0; anything else in this table is a task that your Heartbeat should have caught by going quiet or sending /fail.

CodeMeaningHeartbeat sees
0x0Successa ping — green
0x41303Task has not yet runsilence → page
0x41306"Currently running" — usually a dead/stuck actionsilence → page
0x41301Task is disabledsilence (expected)
0x41300Not scheduled to run againsilence (expected)
0x41304No more runs queuedsilence (expected)
credential driftStored password changed; action never startssilence → page

Why a wrapper, not a built-in alert

Task Scheduler's native email action was removed in Windows 8, and its event-log "on failure" trigger still requires you to notice the log. A ping is a positive signal: the job announces life every run. If the pings stop — for any of the reasons above — you get a webhook, a Nostr DM, or a public status flip. Pair it with our run-gate to halt dependent loops from the outside too.

WebhooksSlack / Discord / generic JSON on every down/up transition.
Nostr DMsEncrypted NIP-17 death alert — no email relay required (unique in this category).
Run-gateOne flip halts every loop at its next boundary.

Honest posture

Heartbeat is a dead-man switch, not a Windows admin suite. It tells you one thing: the pings stopped. It does not read the event log or manage credentials for you. Free while in beta; a $5 USDC pass lifts the rate limits — see pricing. Back to all integrations.