Introduction
Completed is not done. A process can exit 0 and still produce nothing. Crontinel keeps process status and business result as separate states. Missing evidence is never shown as healthy.
The problem
Generic monitors check whether a heartbeat arrived or a URL returned 200. They cannot tell you:
- That a nightly import exited 0 with
processed_records: 0 - That a scheduled agent wrote an empty digest
- That Horizon or a queue stopped reporting freshness (Laravel package path)
How it works
- Your job posts an HTTP receipt to
/api/v1/ingest/cronwith the command, exit code, times, and optional outcome metrics. - Crontinel evaluates schedule and outcome rules on the server.
- Alerts fire without waiting for a model. Your coding assistant can read the same evidence over MCP.
The Laravel package is the deep integration: it attaches that receipt from the scheduler and can add queue depth and Horizon freshness. Other languages use the HTTP recipes. Unowned language packages are not a support claim.
Plans and pricing
See the pricing page on the marketing site for current tiers. Hosted monitoring and alerts do not depend on a language SDK.
Open source
The Laravel package is MIT licensed. Self-hosted local dashboards are not a substitute for hosted detection when the same host dies.