Example: Monitor a scheduled GitHub Actions workflow with Gabe.
This repo has a scheduled workflow that runs every hour. After the job completes, it pings Gabe. If the workflow stops running (disabled by GitHub, cron misfire, job failure), Gabe sends a Slack/Discord alert.
- Create a free Gabe monitor:
curl -X POST https://gabe.usegabe.workers.dev/api/signup \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com"}'
curl -X POST https://gabe.usegabe.workers.dev/api/monitors \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"hourly-job","interval_minutes":90,"webhook_url":"https://hooks.slack.com/services/..."}'- Add your ping URL as a repo secret named
GABE_PING_URL - Copy
.github/workflows/scheduled-job.ymlto your repo
GitHub Actions scheduled workflows can silently stop running:
- After 60 days of repository inactivity
- When cron expressions don't match GitHub's UTC-only scheduling
- When the default branch is renamed
- When the workflow file has a syntax error
A heartbeat monitor catches all of these failure modes.
- Gabe — the monitoring service
- gabe-action — the GitHub Action
- gabe-monitor — CLI tool