← Back to archive

Repo of the Day

dbos-inc/dbos-transact-ts: Database-Backed Durable TypeScript Workflows

Published: Oct 8, 2026

Open repository ↗

Database-Backed Durable TypeScript Workflows. Contribute to dbos-inc/dbos-transact-ts development by creating an account on GitHub.

Summary

DBOS Transact is a TypeScript library that adds durable workflows, queues, and scheduling to applications using PostgreSQL as the backing store. It checkpoints workflow state in Postgres so programs automatically resume from the last completed step after a crash, with no separate orchestrator server required. It is published as @dbos-inc/dbos-sdk on npm under the MIT license.

What it is useful for

DBOS is suited for TypeScript applications that need to recover reliably from crashes, restarts, or other interruptions. Documented use cases include orchestrating business processes like payments, building observable data pipelines, operating AI agents that call unreliable external APIs, and handling webhook or Kafka events with exactly-once semantics. It also provides durable queues with concurrency limits, rate limits, deduplication, and prioritization; cron-style scheduling; durable sleeps that survive restarts; and send/receive notifications with timeouts. Workflows are stored as rows in Postgres, so they can be queried, paused, resumed, or forked from specific steps through a client API, which is useful for batch operations across many in-flight workflows.

How engineers can use it

The README does not include inline install commands; it directs readers to the quickstart for installation and Postgres connection steps, so engineers should start there. The pattern shown in the README is to register ordinary async functions as workflows and steps using DBOS.registerWorkflow and DBOS.runStep, then call DBOS.launch() to initialize against a Postgres database. After launch, queues and cron schedules are registered with DBOS.registerQueue and DBOS.applySchedules, with the schedule stored as a cron string such as '*/30 * * * * *'. The DBOSClient can be used from separate processes to list, fork, or inspect workflows; the README shows finding errored workflows in a time range and forking them from a specific step to recover from an outage. A related pattern is passing a unique event ID as workflowID to DBOS.startWorkflow to guarantee exactly-once event handling.

Documented limitations include the Postgres dependency, lower throughput compared with Redis-backed queues like BullMQ, and the absence of Airflow's ecosystem of data connectors, and the README implies that languages other than the ones currently supported are not yet available.