Upkeep pings your health endpoints on a schedule, keeps idle services warm, and gives you one dashboard instead of five host consoles to check.
Get started
Method, interval, timeout, and retries - configurable per project.
Every ping sorted into up, degraded, waking, down, or unknown.
Discord, email, or a webhook - fired on status change only.
Runs on your own Supabase project, comfortably within the free tier.
Add your project's health-check URL and pick the hosting provider it runs on.
Set the method, interval, timeout, and retry threshold - or just use sensible defaults.
Every check is classified as up, degraded, waking, down, or unknown, and consecutive failures are grouped into one incident.
Discord, email, or a webhook - fired only when a project's status actually changes.
Upkeep pings each project's health endpoint on its own schedule, classifies what it finds, and keeps a live status board so you're never the last to know something's down.
Get started freeSet the method, expected status, interval, and timeout per project - plus custom headers and a body for endpoints that need them.
Every ping is sorted into up, degraded, waking, down, or unknown, so a cold start is never mistaken for an outage.
Ping a project just often enough to stop it from spinning down, tuned to that host's own idle-timeout window.
Consecutive down or degraded checks become one incident record, not disconnected rows.
Get notified when a project's status actually changes, not on every single check.
Discord webhook, email, or a generic outgoing webhook for your own integrations.
Works with Render, Railway, Vercel, Fly.io, Netlify, or any host exposing an HTTP(S) health endpoint.
Runs on your own Supabase project, comfortably within the free tier - no per-monitor pricing.
When a project goes down between checks, you usually find out the hard way - a recruiter mentions a broken demo, or you stumble onto it yourself. By then there's no record of when it started or what happened. Upkeep groups consecutive failed checks into a single incident and keeps the full history attached to the project.
Consecutive down or degraded checks become one incident record, not disconnected rows scattered across a host's own logs.
Get notified the moment a project's status actually changes, not on every single check - one alert per incident instead of a flood.
Your questions answered
Every check is classified as up, down, degraded (slow but responding), waking (a cold start - successful response above your response-time threshold), or unknown (the check itself errored, e.g. DNS failure). A project only gets marked down after a configurable number of retries fail, so a single slow response or transient blip won't trigger a false alarm.
Can't find what you're looking for? Open an issue on GitHub