Background jobs
that actually
finish.
One decorator. Automatic checkpoints at every step. When your job crashes at step 8,471 of 10,000 — SteadyRun resumes from 8,472. No duplicate sends. No lost progress. No 3am pages.
No credit card · Runs on your own VPS · Python & Node.js
The problem & the fix
Without SteadyRun
Crashes lose everything. You restart from zero.
# Processes 10k users. # Crashes at user 8,471. # You lose EVERYTHING. def send_campaign(users): for user in users: send_email(user) # 💥 OOM at 8,471 # Job dead. Start over. # 8,471 emails sent twice.
With SteadyRun
Checkpoint every step. Resume exactly where it stopped.
# Same job. # Crashes at 8,471. # Resumes at 8,472 automatically. @steadyrun.job(retry=5, checkpoint=True) def send_campaign(users): for user in users: yield steadyrun.step(send_email, user) # ✅ Resumes at 8,472 # ✅ Zero duplicates # ✅ Zero intervention
Install in 60 seconds
pip install steadyrun — point it at your existing Redis and Postgres. No new services, no new cloud accounts.
Wrap your function
Add @steadyrun.job to any Python or Node.js function. Use yield steadyrun.step() at each checkpoint. That's the entire API surface.
Sleep through the night
Jobs survive crashes, server restarts, and deploys. Dashboard shows real-time status. Telegram or Slack pings you only if something genuinely needs attention.
Everything your jobs need to survive
Not another task queue. A durability layer that sits on top of what you already have.
Core capability
Automatic checkpointing at every step
Jobs save their exact position at each yield. OOM crash? Server restart? Deploy mid-run? SteadyRun resumes from the last successful checkpoint, not the beginning. Zero duplicate processing.
Dashboard
Every job, visible in real time
Running, queued, failed, completed — with per-step logs and state inspection. One-click retry on any job, from any step.
Reliability
Smart retry logic
Exponential backoff, configurable attempts, dead-letter queue. Per-job or global config.
Alerts
Telegram & Slack notifications
Get paged only when it matters. Configurable thresholds: failures, timeouts, completion.
Infrastructure
Runs on your server
Your data never leaves your VPS. Zero new costs — uses Redis and Postgres you already run.
What builders are saying
"I lost a 12-hour job because my VPS ran out of memory at 2am. With SteadyRun it would have resumed automatically. Signed up the same morning."
"Finally something that works on a $5/mo VPS without needing Temporal or a $500/mo cloud workflow service. The dashboard alone is worth the price."
"Replaced a nightmare of cron + Redis flags I'd been maintaining for two years. Took one afternoon. My email campaigns now run without me watching them."
Honest pricing
No seats, no usage limits, no surprise bills. One price for unlimited jobs.
Starter
Free forever
- ✓Up to 3 concurrent jobs
- ✓7-day history
- ✓Email alerts
- —Dashboard
- —Telegram/Slack
Pro
per month · cancel any time
- ✓Unlimited concurrent jobs
- ✓90-day history + analytics
- ✓Telegram & Slack alerts
- ✓Full dashboard with logs
- ✓Python + Node.js SDKs
- ✓Priority support
Teams
per month · up to 5 seats
- ✓Everything in Pro
- ✓5 team seats
- ✓Role-based access
- ✓Audit logs
- ✓SLA guarantee
- ✓Dedicated support
Get early access
First 50 builders get three months free.
No credit card. We'll email setup instructions within 24 hours. Your data stays on your server — always.