Early access · v0.1.0 — the engine is feature-complete & tested; npm publish + hosted billing land this week.
Open-core · Apache-2.0

Durable background jobs on the Postgres you already run.

A payment succeeds but the receipt email never sends because the process died in between. flow-keeper makes that impossible: retryable, crash-safe, step-based workflows for payments, email sequences, and AI pipelines — without the ops burden. No Redis. No new infra. Just your DB.

npm i @flow-keeper/core — free forever, self-hosted.

checkout.ts
import { FlowKeeper, defineWorkflow } from "@flow-keeper/core";

const fk = new FlowKeeper({ connection: process.env.DATABASE_URL });

const checkout = defineWorkflow("checkout", async (ctx, order) => {
  const charge = await ctx.step("charge-card", () =>
    stripe.charge(order));               // retries with backoff on failure

  await ctx.step("send-receipt", () =>
    email.receipt(order, charge));       // memoized — replays skip completed steps

  await ctx.sleep("wait-1-day", 86_400_000);   // durable. survives restarts.

  await ctx.step("ask-for-review", () => email.review(order));
});

fk.register(checkout).start();
await fk.trigger("checkout", order, { idempotencyKey: order.id });

Built for the stack you already run — Next.js, Node, Bun, and any Postgres (Neon, Supabase, RDS, local).

Everything a queue should have. None of the ops.

Define steps as plain functions. flow-keeper makes them durable.

Automatic retries

Every step retries with exponential backoff. A flaky payment API or a 3am network blip resolves itself — no dead-letter babysitting.

Pause & resume

ctx.sleep() durably suspends a run for seconds or weeks. Email drips, trial reminders, and cooldowns survive deploys and crashes.

Visual run timeline

See every run, every step, every retry on a live timeline. Replay a failed run from the exact step it died on — in one click.

Zero new infra

No Redis. No SQS. No separate worker fleet. State lives in the Postgres you already pay for, in its own schema.

Why not Temporal or a Redis queue?

Both are great at scale. Both are overkill — and a real ops cost — for a solo dev or a small team.

flow-keeperTemporalBullMQ + Redis
Runs on your existing Postgres
No Redis / no separate queue
Set up in < 5 minutes
Durable sleep / pause-resume
Self-hostable, open-core
Ops burdenNoneHighMedium

Ship reliable jobs this afternoon.

The library is free and open-source. The hosted dashboard — alerting, replay, and a live timeline — is $29/mo (₹2,499/mo).