Skip to content
Une photo d'un éléphant avec le titre : « Ceci n'est pas un éléphant »

Absurd

Absurd is a Postgres-native durable workflow system. It moves the complexity of durable execution into the database layer via stored procedures, keeping SDKs lightweight and language-agnostic. The core principle is to handle tasks that may run for minutes, days, or years without losing state.

All you need is a Postgres database and the single absurd.sql schema file. No extra services, no message brokers, no coordination layer.

… because it's absurd how much you can over-design such a simple thing.

How It Works

A task dispatches onto a queue from where a worker picks it up. Tasks are subdivided into steps that act as checkpoints. Once a step completes successfully its return value is persisted and the step won't execute again. If a task fails, it retries from the last checkpoint.

Tasks can also sleep (suspend until a time) or await events (suspend until a named event is emitted). Events are cached — first emit wins — making them race-free.

import { Absurd } from 'absurd-sdk';

const app = new Absurd();

app.registerTask({ name: 'order-fulfillment' }, async (params, ctx) => {
  const payment = await ctx.step('process-payment', async () => {
    return await stripe.charges.create({ amount: params.amount });
  });

  const shipment = await ctx.awaitEvent(`shipment.packed:${params.orderId}`);

  await ctx.step('send-notification', async () => {
    return await sendEmail(params.email, shipment);
  });

  return { orderId: payment.id, trackingNumber: shipment.trackingNumber };
});

await app.startWorker();
  • Quickstart — install the schema, create a queue, run your first task
  • Concepts — tasks, steps, runs, events, and retry semantics
  • Patterns — practical recipes for common workflow and scheduling setups

SDKs

Tools

  • absurdctl — CLI for schema management, queue operations, and task inspection
  • Habitat — web dashboard for monitoring tasks, runs, and events