Pipelines

Background jobs that don't keep you up.

Queue work, schedule cron, fan out to workers. Built-in retries, dead-letter queues, and real-time logs — without standing up Redis.

  • Durable queues with at-least-once delivery
  • Cron triggers down to the minute
  • Auto-scaling workers, scale-to-zero
  • Webhooks in, side effects out
  • Full execution timeline and replay
  • Per-pipeline secrets and scoped keys
send-welcome.ts
import { pipeline } from "@savannah/sdk";

export default pipeline({
  name: "send-welcome",
  retries: 5,
  async run({ email }) {
    await sc.email.send({
      to: email,
      template: "welcome",
    });
  },
});