47 builders on the waitlist

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

Completion rate 99.97%
Setup time <5 min
Extra infra cost $0
Supported languages 2
$pip install steadyrun
✓ Installed steadyrun 1.0.0
$steadyrun init --redis localhost
✓ SteadyRun ready. Start adding @job decorators.

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

Three steps. That's it.

No Kubernetes. No Temporal. No cloud lock-in. Works with Redis and Postgres you already have.

01

Install in 60 seconds

pip install steadyrun — point it at your existing Redis and Postgres. No new services, no new cloud accounts.

02

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.

03

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.

Python Node.js Async-native

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

01

"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."

Marcus K.
Solo founder
★★★★★
02

"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."

Sophia D.
Indie hacker
★★★★★
03

"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."

Raj J.
B2B SaaS founder
★★★★★

Honest pricing

No seats, no usage limits, no surprise bills. One price for unlimited jobs.

Starter

$0

Free forever

  • ✓Up to 3 concurrent jobs
  • ✓7-day history
  • ✓Email alerts
  • —Dashboard
  • —Telegram/Slack
Get started

Teams

$89

per month · up to 5 seats

  • ✓Everything in Pro
  • ✓5 team seats
  • ✓Role-based access
  • ✓Audit logs
  • ✓SLA guarantee
  • ✓Dedicated support
Contact us

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.

No spam. Unsubscribe any time.