Skip to main content
thenping.me is no longer maintained - Crontinel is the active Laravel-native alternative. Read more →
all.systems.operational · 99.987% last 30d

Laravel cron
is lying
to you.

Crontinel watches Laravel scheduled tasks, queue workers, Horizon supervisors, backups, and agent runs, so you hear about the failure before your users do.

node · python · go · php · ruby · rails · cli · dotnet · MIT licensed · free tier, no card
live.monitor · app.crontinel.com
jobs1,847 latency42ms
heartbeat · every 60s failure · detected in < 60s drift · scheduler out of sync
0s
avg time to detect
a silent cron failure
0%
of production apps
run a silently broken job
2 cmds
to monitor jobs,
queues, workers & agents
$0/mo
starts at, or
self-host for free
The gap

Your uptime monitor says green.
Your queue disagrees.

A URL responding 200 doesn't mean your cron ran. It doesn't mean your workers are draining. It doesn't mean your invoices queue isn't 6,000 deep, or that your agent isn't looping on a broken tool call. Generic monitors can't tell you any of that.

scheduled.task

Scheduler stops. Site stays up.

A deploy clobbers your cron entry. The app responds 200. No one fires the scheduler. Your nightly emails stop.

GET /health         200 ok
schedule:run        · 17h ago
agent.loop

The agent loops. The bill climbs.

A model retry storm or a tool-call loop runs for 40 minutes. The endpoint returns 200 for every request. You find out from billing.

api.status          200 ok
agent.run.874       42m · 318 tool calls
worker.crash

Worker crashes. Queue is dead.

A worker process died. Your queue manager shows "running" because one worker is still up. Your billing queue is dead. No errors. No alerts. Just silence.

queue.manager       running
worker.emails       · crashed
Everything uptime tools miss

Paranoid monitoring,
without the instrumentation.

One SDK hooks into your scheduler, queue driver and agent runner. It watches job runs, queue depth, worker state, model latency and agent tool calls, end to end. No endpoint pings. No per-task wrapping. No missed instrumentation.

Workers & supervisors

See the worker, not just the URL.

Per-worker status, paused detection, queue sparklines, failed job rate. Horizon, Sidekiq, Celery, BullMQ, RQ, Temporal. The moment one blinks, you know.

Heartbeat

60-second detection.

Every scheduled task registers a run attempt, exit code, and duration. Missed runs trip an alert before the next cron tick.

pulse
60s
Zero wrap

No per-task instrumentation.

Hooks into your framework's events, not your code.

Self-hosted

Works offline. MIT.

OSS first. Local dashboard, CLI, no SaaS needed.

Alerts

Route once, quiet forever.

One alert fans out to the channels your team actually watches - per-service routing, quiet hours, auto-resolve.

Slack PagerDuty Webhook Email
CI/CD

crontinel:check in your deploy hook.

One command verifies scheduler, supervisors and queues after each deploy. Zero-downtime monitoring that fails loud.

$ crontinel check
 scheduler           last run 00:00:12 ago
 workers.default     2 supervisors · running
 queue.invoices      127 pending · 2m oldest
 agents.support      12 runs · p95 8.2s
 queue.emails        backpressure · 6,413 pending
Agents & models

Monitor the agent like any other worker.

Track runs, tool calls, token spend, model latency and loop detection. Ask via MCP, so your own agent can answer "are any queues or agents backing up?" with real data.

› are any queues backing up?
Yes · emails is at 6,413 and rising. Oldest job 12m 04s. invoices is healthy.
How it works

Two commands.
One source of truth.

01 · INSTALL

One SDK, your stack

Drop the SDK in. No scheduler wrapping. No per-job decorators. No changes to existing jobs.

# pick your runtime
$ npm i @crontinel/node
$ pip install crontinel
$ go get github.com/crontinel/go
$ gem install crontinel
$ composer require crontinel/laravel
$ dotnet add package Crontinel
02 · ROUTE ALERTS

Pick a channel

Slack, PagerDuty, email, webhook. HMAC-signed payloads. Quiet hours. Route once, in .env.

# .env
CRONTINEL_ALERT_CHANNEL=slack
CRONTINEL_SLACK_WEBHOOK=...
03 · SLEEP

Listen instead of watch

We read scheduler events, worker state, queue internals and agent traces. When something drifts, you hear from us, not a user.

# ci/cd deploy hook
$ crontinel check
✓ 47 jobs · 3 workers · 2 queues · 4 agents
The dashboard

Not a heartbeat ping chart.
The inside of your queue.

Every scheduled task with its last run, duration and exit code. Every worker with its state. Every queue with depth, oldest job, and failure rate. Every agent run with its tool calls and token spend.

app.crontinel.com/invoice-processor
⌘K

invoice-processor

production · eu-west-1 1 alert
schedule runs / 24h
1,447
+2.1% vs yesterday
avg run time
842ms
−120ms vs p50
queue depth · total
241
healthy
failed last 1h
12
+12 vs 0
Scheduled tasks14 tasks
TaskLast runDurationStatus
generate:daily-invoices2m ago1.82sok
dunning:send-reminders14m ago940msok
sync:stripe-webhooks17m ago...exit 1
export:accounting-feed29m ago4.1sok
telemetry:roll-up1h 02m ago12.4sslow
cleanup:stale-sessions3h ago220msok
Workers · 3 supervisorsrunning
QueueDepthOldestTrend
default12200ms
invoices1272m 04s
emails6,41312m 04s
analytics88400ms
notifications380ms
Routed, not noisy

Alerts go where you listen.

Native · shipping

Slack PagerDuty Email / SES Webhook · HMAC Telegram MCP · any agent

Coming soon

Discord Opsgenie Linear Zapier Microsoft Teams

Trusted by developers worldwide

- developers
MIT open-source license
14-day Pro trial included
Pricing

Free for one app.
Generous for teams.

Free

For one app. Forever.

$0/mo
  • 1 connected app
  • 5 monitors per app
  • 7 days of run history
  • All alert channels
  • Team access
  • Audit log
Start free
most teams

Pro

For the team with real pagers.

$19/mo
  • 5 connected apps
  • 90 days of history
  • PagerDuty, Slack, webhook
  • Quiet hours & routing
  • MCP server access
Start Pro trial

Team

Unlimited apps, teammates, history.

$49/mo
  • Unlimited apps
  • 1 year of history
  • Unlimited teammates
  • Audit log, SSO (soon)
  • Priority support
Start Team trial
Open by default

A family of open-source packages.

Crontinel is SDKs and a CLI, not a vendor lock-in. Every runtime has its own MIT-licensed package that works against your own database. The cloud dashboard is an option layered on top, not a dependency.

Self-hosted or fully managed?

The open-source package is free forever. The SaaS adds the things you would have to build yourself.

Self-hosted free, MIT
  • Full queue and cron visibility
  • Blade dashboard on your own server
  • Slack alerts built in
  • Your data, your infra
  • No hosted dashboard
  • No team access or roles
  • 7-day history max
  • You manage the server
Crontinel SaaS
  • Everything in the open-source package
  • Hosted dashboard at app.crontinel.com
  • Team access with roles
  • Up to 1-year run history
  • Multi-app overview in one place
  • PagerDuty, webhooks, status pages
  • REST API and MCP server access
  • Zero server management
Hosted · app.crontinel.com

Crontinel Cloud

Everything the OSS packages do, plus multi-app dashboards, team access, long-horizon history, an MCP server, and routing rules. You keep the self-hosted SDKs; we handle the rest.

  • Multi-app view & search
  • History retention (90d → 1y)
  • Team access, audit log, SSO (soon)
  • MCP server for agents

Prefer to self-host? Every package is free forever.

MIT licensed. Every SDK works standalone - Blade dashboard, CLI health check, Slack alerts, queue and cron monitoring. No SaaS required. Own your data.

npm i @crontinel/node pip install crontinel go get github.com/crontinel/go composer require crontinel/laravel gem install crontinel
Install

Two commands. No pings.

$ npm i @crontinel/node
$ npx crontinel init
$ npx crontinel check # add to your CI
Ready?

Stop finding out
from your users.

Free plan, no credit card. Two commands to install. Slack alert in under five minutes.

Launch updates

Join the waitlist

Get launch updates and the first release notes when Crontinel is ready.

Loading current count...