In short
Both watch scheduled jobs the same way. Each job reports when it runs, and you get an alert when a run fails or its report doesn't arrive in time. They differ in who sets it up and where alerts can go.
Choose Healthchecks.io if you need Slack, text messages, PagerDuty or another of its many alert channels, your team shares the checks, or you want to host your monitor yourself. Choose Sereno if you want your AI agent to set up your checks and tell you what's failing, or you have more than 20 jobs to watch for free.
Where Healthchecks.io is stronger
- Alerts in 27 places, including Slack, Discord, Microsoft Teams, PagerDuty, Opsgenie, Telegram, ntfy and Pushover. healthchecks.io
- Text messages, WhatsApp and phone calls, as monthly credits on its Business plans. healthchecks.io/pricing
- Team access, with Team Member, Manager and Read-only roles. healthchecks.io/docs/projects_teams
- Open source under the BSD 3-clause license, so you can host it yourself. healthchecks.io/docs/self_hosted
- It keeps the first 100 kB of each report's body, where Sereno keeps the last 2 KB. healthchecks.io/docs/http_api
- Reports by email as well as web requests, and filters that look for keywords in them. healthchecks.io/docs/configuring_checks
- Systemd OnCalendar schedules, besides cron and simple intervals. healthchecks.io/docs/configuring_checks
- Its Business plan is free for open-source projects and nonprofits. healthchecks.io/pricing
Where Sereno is stronger
- Your AI agent can set it up. Sereno has a hosted MCP server, and you connect Claude Code, claude.ai, ChatGPT, Cursor or VS Code by signing in. Your agent then finds your scheduled jobs, adds a report line to the ones you pick, and tells you what's failing. Healthchecks.io's home page and docs don't mention MCP or agent setup (as of October 26, 2026). An agent can use its Management API instead, with an API key you make and copy. healthchecks.io/docs/api
- Sereno gives you 200 checks free. Healthchecks.io's free plan has 20. healthchecks.io/pricing
- Sereno hides the passwords and keys it recognizes in job output. Before it saves a report, sends an alert or shows a report to your agent, it replaces them with [hidden]. This is a best-effort safety net. Healthchecks.io's HTTP API docs say it stores the first 100 kB of each report's body, and don't mention hiding anything. healthchecks.io/docs/http_api
- Sereno has a separate maximum run time. In Healthchecks.io, Grace Time also sets how long a started run may take. healthchecks.io/docs/configuring_checks
Who Sereno is for
Sereno is for people who build with an AI agent like Claude Code or Cursor, and have scheduled jobs on a server, Vercel, GitHub Actions or Supabase. It's the wrong pick if you need alerts in Slack, Discord or by text message, or shared access for a team, or you want to host your monitor yourself.
Side by side
| Healthchecks.io | Sereno | |
|---|---|---|
| Free plan | 20 jobs, with 100 log entries each.healthchecks.io/pricing | Up to 200 checks, 50 alert emails a day, and phone alerts through ntfy.asksereno.com/docs#limits |
| Paid plans | Supporter is $5 a month and keeps the 20-job limit. Business is $20 a month for 100 jobs, and Business Plus is $80 a month for 1,000.healthchecks.io/pricing | Sereno is free, and comes as is, with no guarantee.asksereno.com/terms |
| Alerts | 27 ways, including email, Slack, Discord, webhooks, Telegram, ntfy and Pushover.healthchecks.io | Email, and push notifications on your phone through the free ntfy app.asksereno.com |
| How a job reports | A web request ending in /start, /fail, /log or an exit code, by UUID or by ping key and slug.healthchecks.io/docs/http_api | A web request to the check's report address, ending in /ok, /start, /fail, an exit code or /test. No ending means ok. GET, HEAD and POST all work.asksereno.com/docs#reports |
| Job output | The first 100 kB of each report's body.healthchecks.io/docs/http_api | The last 2 KB of each report, with passwords and keys it recognizes hidden first.asksereno.com/docs#secrets |
| Run time | Grace Time, which also limits how long a started run may take.healthchecks.io/docs/configuring_checks | A grace period for late runs, and a separate maximum run time.asksereno.com/docs#limits |
| Schedules | Simple (every N), cron with a time zone you set for each check, and systemd OnCalendar.healthchecks.io/docs/configuring_checks | Every N minutes, hours or days, or a cron expression with its time zone.asksereno.com/docs#start |
| AI agents | A Management API that creates and changes checks, with read-write or read-only API keys you make for each project. Its home page and docs don't mention MCP or agent setup (as of October 26, 2026).healthchecks.io/docs/api | A hosted MCP server. You connect Claude Code, claude.ai, ChatGPT, Cursor or VS Code by signing in, with no key to copy.asksereno.com/docs#agents |
| History kept | 100 log entries per job on the free plan, 1,000 on Business. The oldest go first.healthchecks.io/pricing | 90 days of runs and alerts.asksereno.com/privacy |
| Teams | Team access per project, with Team Member, Manager and Read-only roles.healthchecks.io/docs/projects_teams | One person per account. |
| Self-hosting | Open source under the BSD 3-clause license, and you can host it yourself.healthchecks.io/docs/self_hosted | Hosted only. Its code isn't open source. |
| Status pages | Its home page doesn't list status pages (as of October 26, 2026). Its public status badges can go in your READMEs, dashboards or status pages.healthchecks.io | Not included.asksereno.com |
Healthchecks.io's side comes from its own pages, linked in each row and read on October 26, 2026. Sereno's side comes from its own code, checked on October 26, 2026. Each of its rows links the page here that says so, where there is one. Sereno's docs have the details. If something here is wrong or out of date, write to [email protected].
Moving a job from Healthchecks.io
- Make a check in Sereno for each job first, with New check on your dashboard and the same schedule, time zone and grace. Sereno makes the check's slug, the last part of its report address, from its name, unless you type one. Sereno doesn't make a check from a report the way Healthchecks.io does with
create=1, so a report to a check that doesn't exist yet gets a 404. If the job also reports when it starts (with/start, or through Sereno's alerts-run), open More options in New check and set Max run time to the job's grace in Healthchecks.io, up to 2 days. It's 1 hour unless you change it, and a run still going after that counts as failed. healthchecks.io/docs/http_api - In each report line, swap the start of the URL and keep its ending, such as
/start,/fail, an exit code or?rid=. A line with no ending still means the run worked. A line that reports tohttps://hc-ping.com/UUIDnow reports to:healthchecks.io/docs/http_apihttps://asksereno.com/k/PROJECT_KEY/CHECK_SLUGhttps://asksereno.com/k/PROJECT_KEY/CHECK_SLUG - PROJECT_KEY and CHECK_SLUG stand for your project's key and your check's slug, and the check's page shows the address with both filled in. A line with a ping key and slug,
https://hc-ping.com/PING_KEY/SLUG, becomeshttps://asksereno.com/k/PROJECT_KEY/SLUGwhen the Sereno check has the same slug. Sereno slugs use only lowercase letters, digits and dashes, so a slug likedb_backupbecomesdb-backupin Sereno: change it in the line too. healthchecks.io/docs/http_api - A line ending in
/loggets a 404, since Sereno has no such ending. Send that output as the body of the run's/okor/failinstead, for example with curl's--data-binary. healthchecks.io/docs/http_api - Reports by email don't carry over, since Sereno takes web requests only: give those jobs a report line from the setup guides below. An OnCalendar schedule needs a cron expression instead. For a Simple schedule, pick Every in New check and give it the same period, in minutes, hours or days. Its grace stays the same. healthchecks.io/docs/configuring_checks
- Send a test report from the server where the job runs, or from your own computer for a job on Vercel, GitHub Actions or Supabase. It prints
OK, and on the check's page in Sereno, Test report gets a tick. A test report never changes the check's status.curl -fsS -m 10 https://asksereno.com/k/PROJECT_KEY/CHECK_SLUG/test
curl -fsS -m 10 https://asksereno.com/k/PROJECT_KEY/CHECK_SLUG/test - Once the job's first real run shows in Sereno, remove its check in Healthchecks.io, so one failure doesn't alert you twice.
Sereno's setup guides cover crontab jobs and alerts-run, Vercel cron jobs, GitHub Actions schedules and Supabase cron jobs. Your AI agent can also make the checks and swap the lines for you.
More guides
- Ask your AI agent why a cron job failed
- Monitor Vercel cron jobs
- Monitor GitHub Actions scheduled workflows
- Monitor Supabase cron jobs that call Edge Functions
- Get an alert when a cron job fails or doesn't run
- Cronitor alternative with 200 free checks
New here? Sign up with your email. Free: up to 200 checks, 50 alert emails a day, and phone alerts through ntfy.