Cross-posted from the Fluidify blog. Disclosure: I build FluidifyAI Regen, one of the tools below.
If you're looking for a commercial, proprietary on-call tool you can run on your own infrastructure, the answer is that almost none exist. PagerDuty, Opsgenie, incident.io, xMatters, and most of the category are SaaS-only, no on-premise license at any price. The tools that do run on your own infrastructure are, with rare exception, open source, so "self-hosted" and "open-source" end up covering nearly the same ground here.
So this list only asks one question: how good is each tool at the scheduling job (rotation types, overrides, calendar sync, timezones), and what does it take to run and back up yourself. For the full feature picture across the same tools, see the open-source on-call tools comparison.
Scheduling comparison at a glance
| Tool | License | Rotations | Overrides / leave | Calendar sync (iCal) | Self-host footprint | Status (2026) |
|---|---|---|---|---|---|---|
| FluidifyAI Regen | AGPLv3 | Layered, primary/secondary, multi-timezone | Overrides, leave, auto public holidays | In-app calendar only | Postgres + Redis, optional HA | Active |
| GoAlert | Apache-2.0 | Hourly/daily/weekly rotations | Overrides, temporary schedules | Yes, subscription feeds | Single Go binary + Postgres | Active |
| LinkedIn Oncall + Iris | BSD-2-Clause | Rotations, follow-the-sun | Overrides, swaps | Yes, per user and team | Two services + MySQL | Low activity |
| Grafana OnCall | AGPLv3 | Layered rotations | Overrides | Yes, import and export | Several services | Archived March 2026 |
| Keep | MIT core | None, delegates to an on-call tool | None | No | Containers | Active |
| Zabbix | AGPLv3 | None | Maintenance windows only | No | Full monitoring stack | Active |
| Icinga 2 | GPLv2 | None | Time periods only | No | Full monitoring stack | Active |
| Alerta | Apache-2.0 | None | None | No | API + database | Low activity |
| Cabot | MIT | None | None | No | Django app | Dormant |
| Alertmanager + Karma | Apache-2.0 | None | Silences only | No | Two small binaries | Active |
What actually differs on the scheduling side
Rotation types: weekly handoff is table stakes. Layered rotations (a primary layer plus a secondary layer, each rotating independently), follow-the-sun across timezones, and custom rotation lengths separate a full scheduling engine from a basic one.
Override handling: swapping a single shift without editing the underlying rotation, and treating holidays and planned leave as first-class exceptions rather than manual one-off edits.
Calendar sync: whether the schedule publishes an iCal feed that Google Calendar, Outlook, or Apple Calendar can subscribe to.
Timezone handling: a follow-the-sun rotation needs each person to see their own shift in their own local time, not everyone reading the same UTC-anchored schedule.
Backup and data ownership: self-hosting means you own the backup story: what database the schedule lives in, and what disaster recovery looks like if it's lost.
Scheduling depth, tool by tool
1. FluidifyAI Regen (AGPLv3): layer-based schedules with primary/secondary layers, overrides, and leave as first-class concepts (mark someone unavailable and the rotation skips them), public holidays pulled in automatically for several countries, and per-schedule timezones with each person seeing shifts in their own local time. Runs on Postgres and Redis, with documented PostgreSQL HA (Patroni) and Redis Sentinel support for more than one node. Imports schedules from Grafana OnCall, PagerDuty, or Opsgenie in one step. Also does escalation and incident coordination. The gap: shifts show in Regen's own calendar view, but as of v1.0 there's no iCal feed for Google Calendar or Outlook.
2. GoAlert (Apache-2.0): built by Target. Hourly, daily, and weekly rotations, overrides that add, remove, or replace someone on a shift, temporary schedules for one-off coverage, and per-user iCal subscriptions. A single Go binary plus Postgres, so one database to snapshot. Scheduling and escalation only, no incident coordination layer.
3. LinkedIn Oncall (BSD-2-Clause, paired with Iris for escalation): a dedicated scheduling calendar with follow-the-sun support, override and swap events, and iCal feeds per user and team. Proven at scale at LinkedIn. Two services to run and back up, on MySQL, and the last Oncall commit was August 2025.
4. Grafana OnCall (AGPLv3, archived March 2026): had layered rotations, overrides, and iCal import and export. Still runs if deployed, but the repo is archived, so no future fixes for a new deployment. Regen can import its schedules, except ones defined as an external iCal URL.
5. Keep (MIT core, separately licensed ee/): alert correlation and workflows, not a scheduler. No rotation engine; it hands alerts to an on-call tool that owns the schedule.
6. Zabbix (AGPLv3 since 7.0): escalation steps and maintenance windows, but no rotation concept. Who gets notified is a static user-group setting.
7. Icinga 2 (GPLv2): notification rules with time periods, but no automatic handoff. Rotations usually mean a script rewriting config.
8. Alerta (Apache-2.0): alert deduplication and routing API, no scheduling at all.
9. Cabot (MIT): lightweight checks with an on-call hook, no schedule engine, no commits since 2023.
10. Prometheus Alertmanager + Karma (Apache-2.0): routing trees and silences, with Karma as the triage UI. Routes by label, not by who's on shift.
For 5 through 10 you'd be building rotation logic yourself on top, usually a cron job or external scheduler feeding config in.
Self-hosting operational checklist
Before picking any of these: what's the backup schedule for the underlying database, what's the recovery time if it's lost, does the tool support more than one instance for availability, and who owns the upgrade process. Budget for this regardless of which one you pick. If you want rotation definitions in version control too, see escalation policies as code.
FAQ
Is there really no commercial self-hosted on-call scheduling tool? Not one we found with genuine on-premise deployment as a standard offering. A few vendors do bespoke on-prem for large enterprise contracts, but that's a custom deal, not a product on a pricing page.
Which of these has the deepest scheduling engine? FluidifyAI Regen and GoAlert: Regen for breadth of rotation types, leave, and timezone handling, GoAlert for a clean, focused implementation in a smaller footprint with iCal built in.
Which ones sync shifts to Google Calendar or Outlook? GoAlert and LinkedIn Oncall publish iCal feeds. Grafana OnCall did, but it's archived. Regen doesn't publish an iCal feed as of v1.0.
Should I pick based on scheduling depth alone? Only if scheduling is your whole need. If you also want escalation and incident coordination in the same tool, see the broader open-source on-call tools comparison.
Choosing between them
If scheduling depth and full incident coordination both matter, FluidifyAI Regen covers the most ground in one self-hosted tool; the installation guide gets a single node running. If you want the smallest footprint and iCal sync out of the box, and are fine with escalation and coordination logic elsewhere, GoAlert's rotation and override handling is solid on its own.
Top comments (0)