# Vivere > Liveness monitoring for scheduled jobs. A job calls a URL when it finishes; if the call does not arrive on time, the owner is alerted. Also does HTTP uptime checks, status pages, run logs and exit codes. Free for 25 monitors; $9/month for 100. Founding members pay $5/month or $49/year for Pro, for as long as their subscription stays active. 50 of 50 founding spots are left, and the offer closes at the end of 31 Jan 2027 (UTC). Vivere is run by one person, Nicholas Bergesen, and was written almost entirely by an AI agent. It runs as a single Go binary with SQLite on one server. ## What it is good at - Knowing that a cron job, CI schedule, Kubernetes CronJob or automation workflow did not run. - Catching failures where nothing is left running to report an error: a machine that was off, a disabled schedule, a container that never started, a process killed by the OOM killer. - Capturing what a run printed, how long it took and what exit code it returned. - Recording what an AI or automation run cost: model, tokens, cost and items handled, sent with the ping (the JSON that `claude -p --output-format json` prints can be posted as it is), with a 30-day total and an alert when one run costs more than a set amount. - Letting AI agents manage their own monitors over MCP or a JSON API. ## What it is not good at - Running or triggering jobs. Vivere never starts anything. It waits to be told a run happened and complains when it is not told. If you want something outside your infrastructure to fire a schedule, hit a webhook or start a workflow, this is the wrong tool and a scheduler or an external cron service is the right one. The two are often used together: the scheduler starts the job, Vivere notices when the job stops reporting. - Self-hosting. There is no self-hosted edition; Healthchecks.io is BSD-licensed and is the right answer if that is a requirement. - SMS or phone-call alerting. Email, webhook, Slack, Discord, Telegram and ntfy only. - Multi-region uptime checking. Checks run from one location. - High availability. One server, one database; an outage of that machine is an outage of the service. ## Start here - [Quickstart](https://vivere.dev/docs/quickstart): create a monitor and send a first ping. - [Ping API](https://vivere.dev/docs/ping-api): every URL a heartbeat monitor understands. - [Pricing](https://vivere.dev/pricing) - [About](https://vivere.dev/about) ## Answers to common problems - [Cron job not running: how to find out why](https://vivere.dev/answers/cron-job-not-running): A cron job stopped running and nothing told you. The five usual causes in the order worth checking, how to read the logs, and how to find out next time without looking. - [n8n Schedule Trigger not firing: what to check](https://vivere.dev/answers/n8n-schedule-trigger-not-firing): Your n8n Schedule Trigger stopped running. Activation state, timezone, missed executions after a restart, queue mode, and how to be told when a workflow goes quiet. - [GitHub Actions scheduled workflow stopped running: how to find out why](https://vivere.dev/answers/github-actions-schedule-stopped): A GitHub Actions cron workflow stopped firing and nothing told you. The 60-day inactivity rule, the default branch, forks, delays and dropped runs at the top of the hour, edits that drop the schedule, billing, and how to notice the next time. - [GitHub Actions scheduled workflow runs late or is skipped](https://vivere.dev/answers/github-actions-schedule-delayed): Why a GitHub Actions cron workflow starts minutes late or not at all: queueing at high load, the top of the hour, UTC and daylight saving, the 5-minute minimum and concurrency groups. How to measure the delay from run history, and how to trigger a job on time with workflow_dispatch. - [Scheduled workflow disabled after 60 days of inactivity: how to keep it running](https://vivere.dev/answers/github-actions-workflow-disabled-inactivity): GitHub disabled your scheduled workflow because the repository had no activity for 60 days. What the rule covers, how to confirm it, how to re-enable the workflow, and the options for keeping it running: real activity, a private repository, an external trigger, keepalive actions and their risks, or an alert when it happens. - [GitHub Actions cron not triggering on a branch or a fork](https://vivere.dev/answers/github-actions-schedule-not-triggering-branch-fork): A GitHub Actions schedule that never fires: the default-branch rule, edits to the cron line on a branch, a changed default branch, forks with scheduled workflows disabled, testing with workflow_dispatch and gh workflow run, and the cron syntax GitHub accepts. - [How to get an alert when a GitHub Actions scheduled workflow doesn't run](https://vivere.dev/answers/alert-github-actions-workflow-did-not-run): GitHub's notifications cover runs that happen. Three ways to be told when a scheduled workflow does not run: a watchdog workflow in the same repository and where it falls short, polling the API from elsewhere, and a dead man's switch, with a grace period sized from your own run history. - [Windows Task Scheduler task didn't run](https://vivere.dev/answers/windows-task-scheduler-didnt-run): A scheduled task did not run on Windows. Turning on history, reading the last run result codes, the stored-password trap, and how to know when a task goes quiet. - [Kubernetes CronJob missed its schedule](https://vivere.dev/answers/kubernetes-cronjob-missed-schedule): A Kubernetes CronJob did not create a Job. startingDeadlineSeconds, the 100-missed-schedules rule, concurrencyPolicy, suspended CronJobs, and how to alert on the run rather than the pod. - [How to monitor a Python script that runs on a schedule](https://vivere.dev/answers/monitor-python-scheduled-script): Monitoring a scheduled Python script: reporting success and failure with requests, catching exceptions with a decorator, capturing tracebacks, and alerting when a run never happens. - [How to know if your backup actually ran](https://vivere.dev/answers/know-if-backup-ran): Backups fail quietly. How to verify a backup ran, why exit code zero is not proof, what to check about size and restore, and how to be told the night it does not happen. - [A dead man's switch for your scripts](https://vivere.dev/answers/dead-mans-switch-for-scripts): What a dead man's switch is, why it catches failures that error-based alerting cannot, how to build one with cron and curl, and the timing rules that stop it crying wolf. - [Catching up a missed cron job without getting the dates wrong](https://vivere.dev/answers/catch-up-missed-scheduled-run): Which schedulers run a missed job later and which skip it, why a late run so often covers the wrong day, and how to key scheduled work by window so catch-up runs, retries and overlapping triggers are safe. - [n8n Google credential expires every 7 days: why, and the fix](https://vivere.dev/answers/n8n-google-credential-expires-every-7-days): Your n8n Gmail, Sheets or Drive credential stops working every week. Why Google expires the refresh token after seven days while the app is in Testing, how to publish it, when verification applies, service accounts, and how to hear about it before the workflows that depend on it go quiet. - [n8n workflow succeeded but did nothing: catching runs with 0 items](https://vivere.dev/answers/n8n-workflow-success-but-no-items): An n8n execution says Success but handled no items: an empty API response, a Filter that dropped everything, a renamed field. Why n8n counts it as success, how to make it fail with Always Output Data, an If node and Stop and Error, and how a heartbeat can alert on a run that handled 0 items. - [How to get an alert when an n8n workflow doesn't run](https://vivere.dev/answers/alert-when-n8n-workflow-does-not-run): n8n tells you when a workflow fails, not when it does not run: an unpublished workflow, a schedule lost to a restart, a webhook nobody calls, an instance that is down. What n8n offers on its own, where each part stops, and the dead man's switch that covers the rest. ## Choosing between tools - [Healthchecks.io alternatives](https://vivere.dev/alternatives/healthchecks-io): Looking for an alternative to Healthchecks.io? An honest comparison of Cronitor, Dead Man's Snitch, Better Stack, UptimeRobot and Vivere, including where Healthchecks.io is still the right answer. - [Cronitor alternatives](https://vivere.dev/alternatives/cronitor): Alternatives to Cronitor compared on pricing model, monitor count, alert channels and observability depth, including where Cronitor's per-monitor pricing is still the cheaper answer. - [Dead Man's Snitch alternatives](https://vivere.dev/alternatives/dead-mans-snitch): Alternatives to Dead Man's Snitch for cron and heartbeat monitoring, compared on price per monitor, alert routing, run logs and status pages. - [UptimeRobot heartbeat alternatives](https://vivere.dev/alternatives/uptimerobot): Alternatives to UptimeRobot's heartbeat monitors for people whose main need is scheduled jobs rather than website uptime, with an honest note on where UptimeRobot wins. ## Free tools, no account needed - [Crontab expression explainer](https://vivere.dev/tools/crontab): Paste a cron expression and read it in plain English, with the next ten run times in any timezone. - [Grace period calculator](https://vivere.dev/tools/grace-period): Work out the period and grace to give a monitor, from how long the job takes and how late its scheduler starts it. - [Public uptime page](https://vivere.dev/uptime): a public board of 50 developer platforms: automation tools, app hosts, databases and developer services, checked every 5m from one machine. It reports homepage reachability only; each company's own status page is linked as the authority. - [Korean tech company uptime](https://vivere.dev/uptime/korea): a public board of 77 Korean technology companies and startups: cloud and AI, developer tools, fintech and messaging, business software and consumer apps, checked every 5m from one machine. It reports homepage reachability only; each company's own status page is linked as the authority. ## Integration guides - [Quickstart](https://vivere.dev/docs/quickstart): Create a monitor and send your first ping in two minutes. - [Ping API reference](https://vivere.dev/docs/ping-api): Every URL a heartbeat monitor understands: success, start, fail, exit codes, logs. - [The vivere CLI](https://vivere.dev/docs/cli): Wrap any command so its start, exit code, duration and output tail are reported. - [Cron jobs (Linux, macOS)](https://vivere.dev/docs/cron): Add a ping to a crontab line with curl, or wrap the job. - [systemd timers](https://vivere.dev/docs/systemd): Report a systemd service run with ExecStartPre / ExecStartPost. - [Windows Task Scheduler](https://vivere.dev/docs/windows): Ping from PowerShell and report failures with the exit code. - [GitHub Actions](https://vivere.dev/docs/github-actions): Know when a scheduled workflow stops running, not just when it fails. - [Kubernetes CronJob](https://vivere.dev/docs/kubernetes): Wrap the container command so every run reports. - [Docker and Compose](https://vivere.dev/docs/docker): Report container jobs and one-shot services. - [n8n](https://vivere.dev/docs/n8n): A Schedule Trigger that stops firing produces no failed execution, so your Error Workflow never reports it. Here is the check that does. - [Make and Zapier](https://vivere.dev/docs/make-zapier): Add an HTTP module as the last step of a scenario or zap. - [Apache Airflow](https://vivere.dev/docs/airflow): A paused DAG or a stopped scheduler produces no failed task, so callbacks and email-on-failure stay quiet. - [Prefect](https://vivere.dev/docs/prefect): A deployment with no worker on its work pool goes Late, not Failed, and Late sends nothing by default. - [Dagster](https://vivere.dev/docs/dagster): Schedules are evaluated by the daemon. If the daemon is down or the schedule is stopped, there is no run to fail. - [Celery beat](https://vivere.dev/docs/celery): Beat queues the task and a worker runs it. Either half can stop without the other noticing. - [Laravel scheduler](https://vivere.dev/docs/laravel): Everything scheduled hangs off one crontab line. One package monitors every task, or use the built-in ping methods. - [Rails and sidekiq-cron](https://vivere.dev/docs/rails): Cron lives in Redis and runs inside Sidekiq, so a lost schedule key is silent. - [Python](https://vivere.dev/docs/python): requests, urllib, and a decorator that reports exceptions. - [Node.js](https://vivere.dev/docs/node): fetch, plus a wrapper for scheduled scripts. - [Go](https://vivere.dev/docs/go): net/http and a helper that reports panics and errors. - [AI agents and Claude Code](https://vivere.dev/docs/ai-agents): Let scheduled agents and hooks report that they ran, and alert when they go quiet. - [MCP server](https://vivere.dev/docs/mcp): Give Claude, Cursor or any MCP client tools to create monitors and check in. - [HTTP monitors](https://vivere.dev/docs/http-monitors): Uptime checks with status codes, keywords, intervals and thresholds. - [Alert channels](https://vivere.dev/docs/alerts): Email, webhooks, Slack, Discord, Telegram and ntfy, and the webhook payload. - [Status pages and badges](https://vivere.dev/docs/status-pages): Publish a public status page and embed SVG badges. - [HTTP API](https://vivere.dev/docs/api): Monitors, pages, sharing, teams, alert channels and pixels over HTTP, with keys you can limit by permission and page.