Open source · made for Rails

Super simple job monitoring for Rails.

Add a gem. Point it at the schedule you already keep. The moment a job stops running, you hear about it — long before your users do.

Free & open source. Self-host it with no limits, or let us host it — unlimited monitors, free.

FREEto self-host
You already wrote this config/recurring.yml
# every job class here becomes a monitor.
# no new code. no clicking around.
stripe_reconcile:
  class: Billing::ReconcileJob
  schedule: every day at 3am
daily_digest:
  class: DailyDigestJob
  schedule: every day at 8am
nightly_backup:
  class: NightlyBackupJob
  schedule: every day at 2am
The schedule you already keep is the config. Stablemate reads it on boot and watches every line.

How it works

It's genuinely this simple.

Two minutes, tops. Then Stablemate stays out of your way — and only ever speaks up when something's actually wrong.

Step one

Add the gem

One line in your Gemfile. Bundle. That's the whole install.

gem "stablemate"
Step two

Paste your key

On boot, every recurring job signs itself up. You don't lift a finger.

STABLEMATE_KEY=sk_live_…
Step three

Get on with your day

Each run checks in. Miss the window and an email lands. No news is good news.

daily_digest · checked in 08:00
nightly_backup · down · we emailed you

Native to Solid Queue

Your recurring.yml is already the to-do list.

  • Reads config/recurring.yml on boot — not one line changes in your job code.
  • A grace window per job, so a slow night never cries wolf.
  • Keys you can rotate — shown once, hashed at rest, useless the moment they leak.
  • Delete the job, delete the monitor. Your schedule stays the single source of truth.
Watching now 4 monitors · all in sync
stripe_reconcile● healthy · 3:00am
daily_digest● healthy · 8:00am
nightly_backup● down · 4h ago
clear_sessions○ waiting for first ping

The email

When we do email you, it's worth reading.

The email you'd get the moment a job misses — and the 90-day trail it links to.

▲ A job went quiet 03 Jul · 06:04
to: [email protected]
subject: nightly_backup hasn't checked in
We expected a ping by 02:15.
Last one landed 26 hours ago (02 Jul, 02:09).

→ View monitor · Pause alerts · Rotate key
nightly_backup · last 90 days
healthy 97.8% 2 incidents back up in ~34m avg
97.8%

A paper trail for every job — kept whether or not anyone's watching.

Free forever to self-host. Fair pricing if you'd rather we run it.

The code's on GitHub, AGPLv3 — run it yourself, no limits, nothing to buy. Prefer we host it? See pricing.

Start free

A job that died at 3 a.m. shouldn't be a 9 a.m. surprise.

Set it up before your coffee's cold. Then forget it exists — we'll find you if we need to.