Host agent
A small binary and systemd unit that discovers jobs on Linux hosts.
- crontab
- systemd timers
- Proxmox vzdump
- any command via exec
Push-based job monitoring
LastPulse is dead man's switch monitoring for Kubernetes CronJobs, backups, certificate renewals and host cron jobs. An agent finds them for you, and silence past the grace period is the alert.
helm install · 5 minutes · alerts to Telegram or Slack, no server needed
| Status | Job |
|---|---|
| FAILED | db/pg-backupOOMKilled · exit 137 · image changed 1.4.2 → 1.5.0 |
| MISSED | velero/nightlyshould have run 02:30, nothing started |
| SLOW | billing/export14m 02s, usual 3m 10s |
| OK | kube-system/etcd-snapshot |
| OK | pve-01/vzdump |
| OK | ingress/wildcard-cert |
Kubernetes auto-discovery
Install one Helm chart. The agent watches the cluster and starts monitoring every scheduled thing it finds, including the ones added next month.
The usual way, in every job
command:
- sh
- -c
- |
./backup.sh && \
curl -fsS https://hc.example/ping/8f2c…LastPulse, once per cluster
helm install jobwatch-agent \
oci://ghcr.io/…/charts/jobwatch-agent \
-n jobwatch -f values.yaml🔴 FAILED · pg-backup
db/pg-backup · CronJob · hetzner-prod
pg-backup:1.4.2 → 1.5.0, changed since the last success2m 14s, usual 6m 05sconnecting to postgres://backup:***@pg-rw.db.svc:5432/app
pg_dump: dumping contents of table "public.rounds"
pg_dump: dumping contents of table "public.sessions"
Killeddb/pg-backup · incident 7f3a9c
Alerts that say why
Every alert carries what you would otherwise go and look up: the failure reason and exit code, the last log lines with secrets masked, what changed since the last good run, and how long it took against the usual.
Outside Kubernetes too
A small binary and systemd unit that discovers jobs on Linux hosts.
Wrap any command on Windows, macOS, CI runners or serverless. One static binary.
jobwatch-report run --check billing/export \
--schedule "0 3 * * *" --grace 30m \
-- /opt/billing/export.shOne authenticated POST /v1/report from anything that can make an HTTPS call, with report-only API keys.
Trust you can check
The agent, the contracts and the deploy files are Apache-2.0. The threat model and the release checks are public.
The agent's RBAC is get, list and watch. Reruns need an opt-in runner role.
Agents push over HTTPS. Nothing in your cluster opens a port.
Every agent batch is signed with the agent's own Ed25519 key.
Agents seal logs with your organization's public key. Only members' devices can decrypt.
Passwords, tokens, keys and credentials in URLs are masked before a line leaves the pod.
Images and charts are signed with cosign keyless, with SBOMs and build provenance.
Notifications
Events become incidents, a router picks the route, and channel adapters render one neutral message per platform. Acknowledge, snooze or resolve from the alert itself.
Teams
Organizations own their agents, clusters, routes and keys. Members are Owner, Admin, Operator or Viewer, and any role can be limited to some clusters, so a second team sees only its own.
How it works
Watches the cluster or host, detects failed, missed and slow runs, masks and seals logs, signs the batch.
Verifies signatures, keeps status and timing, stores logs as ciphertext, catches silent agents.
Alerts in your channels, history in the web app, logs decrypted locally on your device.
The agent also runs on its own with no server: alerts go straight from your cluster to your channels.
FAQ
Instead of only watching for errors, the monitor expects a signal every time a job is due. If the signal doesn't arrive within the grace period, that silence is the alert. LastPulse applies this to every CronJob, backup and host job it finds.
No. The agent watches the Kubernetes API with read-only RBAC and discovers CronJobs, Jobs, Velero, CloudNativePG and Longhorn backups, k3s etcd snapshots and cert-manager certificates. Optional annotations such as jobwatch.dev/grace or jobwatch.dev/ignore tune or skip a job.
No. The agent runs standalone and sends alerts straight from your cluster to Telegram, Slack, Discord or a webhook. The server adds history, the web app, server-side missed-run checks, teams and the Report API.
Yes. The host agent discovers crontab entries, systemd timers and Proxmox vzdump backups on Linux. For Windows, macOS, CI runners or serverless, the jobwatch-report CLI wraps a command, or anything can call the Report API with a report-only API key.
Status and timing, so it can detect failed, missed and slow runs. In sealed mode, agents encrypt log lines with your organization's public key and the server stores only ciphertext; only members' devices can decrypt them. A metadata-only mode sends no logs at all.
The agent, the message contracts and the deployment files (Helm chart, manifests) are Apache-2.0. Release images and the chart are signed with cosign keyless and ship with SBOMs and build provenance.
Install the agent with Helm, point it at Telegram or Slack, and break a job to see it work.