Register a URL, and Windmill pings it on a cron of your choosing, records every check, and alerts by email or Slack — but only when the up/down state actually changes.
Windmill concepts demonstrated
- Raw app — add monitors and read their status.
- Schedules created from a script — each monitor becomes a real Windmill cron.
- Schedule args — a monitor's config lives on its schedule.
- Resource — SMTP for the alert emails.
- Datatables — monitors and their check history.
Layout
uptime_create_monitor.ts Insert monitor + create its Windmill schedule
uptime_get_monitors.ts Monitors + current status
uptime_get_monitor_detail.ts One monitor + its check history
uptime_delete_monitor.ts Monitor + its schedule
uptime_check.ts The probe — run by every monitor's cron
monitor_<uuid>.schedule.yaml A generated monitor schedule (ships disabled)
uptime_dashboard__raw_app/ Monitor dashboard
uptime_check must be deployed for schedules to invoke it — a schedule
points at a workspace path, not at local files.
Try it locally
wmill script preview f/uptimerobot/uptime_check \
-d '{"monitor_id":"<uuid>","url":"https://app.windmill.dev"}'