cronlag
Reads workflow files and their commit history from GitHub repositories (public, or private via token) so crons added or changed mid-week aren't counted as missed, and scans all non-archived repos in a GitHub organization to list those with schedules, worst lag first.
Analyzes on: schedule GitHub Actions workflows: expands cron expressions with GitHub's rules (DOM/DOW OR, timezone:, DST gaps), ties each run to its cron slot, and reports slot-by-slot lag, late runs, and skipped slots. Also provides a catch-up command that dispatches the latest missed slot via workflow_dispatch, and a guard mode that lets GitHub's late run skip itself when a slot is already covered.
The problem
Since late August 2026, on: schedule workflows across many repos have been created hours late or skipped entirely (community #206019, #206134, #210037). The Actions tab doesn't show which cron slot a run was for, so every thread rebuilds the same table by hand: which slots ran, how late, which never ran, and whether it's your setup (disabled after 60 days, bad cron, minute 0, fork, wrong branch) or GitHub's scheduler.
cronlag does that for every scheduled workflow in a repo. It reads the workflow file and its commit history (so a cron you changed mid-week, or a workflow you added mid-week, isn't counted as missed), expands the cron with GitHub's rules (DOM/DOW OR rule, timezone:, DST gaps), ties each run to its slot, and reports lag from slot to run creation, before any runner is involved.
Related MCP server: Cron Job Doctor MCP
Install
npx github:Blackman99/cronlag owner/repo # Node 18.17+, no install
npm i -g github:Blackman99/cronlag # or the .tgz from ReleasesNo token is needed for public repos. For private repos it uses GITHUB_TOKEN, GH_TOKEN or gh auth token (Actions: read).
Example
npx github:Blackman99/cronlag robhunter/agentdeals -w reverify.yml
cronlag catchup owner/repo --dispatch (from any non-GitHub cron) runs the latest missed slot via workflow_dispatch. Add uses: Blackman99/cronlag@v0 with mode: guard to your workflow and GitHub's late run skips itself when that slot is already covered. cronlag org <org> (or --org) scans every non-archived repo in an organization and lists those with schedules, worst first. The docs cover the Action, the MCP server (cronlag mcp), Markdown/JSON output and every flag.
MIT · Contributing · Roadmap
This server cannot be deployed
Maintenance
Related MCP Connectors
Explain cron expressions in English, list next run times, and catch scheduling gotchas.
Triage failing GitHub Actions jobs and see what self-heal repaired, in natural language.
Check your cron jobs, recent runs, workflows and webhooks, and run a job now when you confirm.
Finds the GitHub Actions workflow eating your CI bill and suggests fix diffs, verified against runs.
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server that surfaces scheduled-job state and detects silent failures (exit 0 but no useful output) for cron, systemd timers, and OpenClaw schedulers, enabling AI agents to query job health and overdue status directly.640 PyPIMIT
- FlicenseNot gradedqualityDmaintenanceDiagnoses scheduled GitHub Actions workflows for anomalies like stuck jobs, retry storms, duration creep, or recent failures.-
- AlicenseNot gradedqualityDmaintenanceAnalyzes GitHub Actions workflows and performance, helping identify bottlenecks, failures, and optimization opportunities in CI/CD pipelines.11 npmMIT
- AlicenseNot gradedqualityAmaintenanceThe watchdog for unattended AI agents: flags MISSED, FAILED, NO_EVIDENCE, RETRY_STORM, BUDGET, DRIFT and STALLED runs of Claude Code routines, OpenClaw, n8n and cron jobs, and alerts via Telegram, Slack or webhook. MIT and self-hostable.MIT