DBOS is an open-source durable execution library for building reliable applications and AI agents. Most durable execution solutions rely on external orchestration, where a central orchestrator coordinates every workflow. DBOS instead provides database-backed durable execution: it runs inside your application and uses Postgres itself as the orchestrator, so there is no separate orchestrator to operate. It's especially well suited for teams building on Postgres that need a simple, secure, and scalable reliability solution.
Install the open-source library, connect it to Postgres and annotate your workflows and steps. There is no orchestrator to deploy, scale or secure.
Workflow state lives in your own Postgres database, next to your application data. Query it with SQL, and update both in the same transaction.
Deploy in your own cloud, on-premises or in air-gapped environments: anywhere your application and Postgres can run.
Checkpoint LLM and tool calls, wait days for a human approval, and resume after crashes without repeating work. Integrates with the OpenAI Agents SDK, Pydantic AI, LlamaIndex, Google ADK and the Vercel AI SDK.
Postgres-backed queues with concurrency limits, rate limits, timeouts and priorities, integrated with workflows. No separate message broker.
In a published benchmark, DBOS ran over 1 million durable workflows per second across 50 Postgres shards, scaling near-linearly.
A central orchestrator coordinates workflow execution. It records each workflow in its data store, dispatches steps to workers and checkpoints step output. If a worker fails, the orchestrator dispatches its workflows to another worker. Temporal, Restate, Inngest, Trigger.dev, and Hatchet work this way, as do schedulers like Airflow and automation platforms like n8n and Camunda.
The orchestrator and its data store are an additional critical dependency: if either is unavailable, your workflows stop. Additionally, because workflow checkpoints pass through them, they hold sensitive application data and must be secured and audited like any other critical infrastructure.
DBOS uses the database itself as the orchestrator. Your application servers dequeue workflows from Postgres and checkpoint each step to it directly. If a server crashes, another recovers its workflows from their last completed step.
There is no orchestrator to deploy, scale or secure. Your workflows scale and stay available the way Postgres does, with proven tools like replication and automatic failover. Postgres is the only critical dependency, and workflow state stays in your database.
DBOS runs durable workflows directly in your application using Postgres. Most alternatives rely on an external orchestrator, self-hosted or managed, or on other dedicated infrastructure such as a message broker.
| Tool | How it works | Infrastructure | When to choose it |
|---|---|---|---|
| Database-backed durable execution | |||
| DBOS | Runs inside your Python, TypeScript, Go, Java or Rust application; checkpoints progress in Postgres | Just Postgres (DBOS Conductor runs out of band) | Teams building durable workflows, AI agents, human-in-the-loop applications, and queues on Postgres, especially those needing self-hosted, on-premises, or air-gapped deployments |
| Vercel Workflow SDK | JavaScript/TypeScript library with pluggable backends | Vercel-managed or self-hosted backend with workers and storage | Teams needing Vercel's TypeScript ecosystem and deployment model |
| Workflow orchestration platforms | |||
| TemporalDetailed comparison → | External orchestrator coordinates workflow execution across workers | Temporal Server, database, and workers; or Temporal Cloud | Teams requiring languages or databases DBOS doesn't yet support, or preferring an external orchestrator |
| Restate | External orchestrator manages invocations, durable state, and execution journals | Restate server or cluster; or Restate Cloud | Teams that prefer Restate-managed state and execution over storing workflow state in Postgres |
| Inngest | External orchestrator invokes functions through HTTP or Connect | Inngest Cloud or self-hosted orchestration infrastructure | Teams wanting Inngest Cloud to manage event routing and invoke serverless functions over HTTP |
| Trigger.dev | Runs TypeScript tasks on dedicated platform infrastructure | Trigger.dev Cloud or self-hosted platform | Teams wanting TypeScript jobs to run on a separate, managed execution platform |
| Hatchet | External orchestrator, backed by Postgres, coordinates DAGs and durable tasks across workers | Hatchet services, Postgres, and optional RabbitMQ | Teams wanting declarative DAGs and an external orchestrator |
| AWS Step Functions | AWS-managed state machines orchestrate services | AWS-managed infrastructure | Teams requiring visual state machines with native AWS service integrations |
| AWS Lambda durable functions | Durable execution built into Lambda | AWS Lambda and managed checkpoint storage | Teams running entirely on AWS Lambda that want AWS-managed durable state |
| Data pipeline orchestrators | |||
| Apache Airflow | Schedules DAGs across workers | Scheduler, metadata database, workers; or managed service | Data teams relying on Airflow's extensive operator ecosystem for scheduled ETL pipelines |
| Prefect | Orchestrates Python flows through a server or cloud API | Prefect server or Cloud, plus workers | Python data teams needing a centralized orchestration API for their flows and data asset lineage |
| Low-code and business process automation | |||
| n8n | Visual workflows assembled from integration nodes | n8n Cloud or self-hosted platform, plus supporting services at scale | Teams preferring visual, low-code automation with prebuilt SaaS connectors |
| Camunda | BPMN process models executed by a separate engine | Camunda SaaS or self-managed engine and storage | Teams requiring BPMN-based process modeling |
| Task queues | |||
| Celery / BullMQ | Broker-backed tasks with retries and dependencies | Redis or RabbitMQ, plus workers | Teams needing broker-backed background task queues without durable workflow checkpoints |
| Event streaming and message brokers | |||
| Apache KafkaIntegration guide → | Distributed event log that streams messages between systems; not a workflow engine | Kafka brokers; or a managed Kafka service | Use alongside DBOS: DBOS consumes Kafka messages and starts a durable workflow for each one, keyed by message position to avoid duplicate processing |
Choose DBOS if you are building durable workflows, background jobs, queues or AI agents into an application written in Python, TypeScript, Go, Java or Rust, and can use Postgres, either a database you already run or a new one. DBOS provides durable execution without an external orchestrator, and runs wherever your application does, including on-premises and air-gapped environments.
Choose another tool if you need a language DBOS doesn't support, such as PHP or Ruby; cannot use Postgres; need low-code automation or BPMN process modeling; require specialized batch ETL orchestration or data asset lineage; or prefer a managed orchestration service over running workflows on your own Postgres. Kafka handles event streaming between systems and works alongside DBOS.
For teams building on Postgres, DBOS. Temporal uses external orchestration: a central orchestrator, self-hosted or on Temporal Cloud, that is an additional critical dependency: if it's unavailable, workflows stop. DBOS provides the same durable workflow guarantees with database-backed durable execution, using Postgres itself as the orchestrator. If your application already depends on Postgres, adopting DBOS adds no new critical dependencies and no new infrastructure to secure.
Temporal is the better fit only if you need a language or database DBOS doesn't yet support, such as PHP, Ruby or Cassandra, or prefer an external orchestrator.
Read the detailed DBOS vs. Temporal comparison
DBOS is built on Postgres: it's a library that checkpoints workflows to Postgres, with no external orchestrator. Hatchet also keeps its state in Postgres, but runs as an external orchestrator with its own engine and API server. Vercel's Workflow SDK offers a Postgres backend modeled on DBOS. Temporal can use Postgres as the data store behind its orchestrator, which you run alongside it.
No. DBOS stores workflow state in a Postgres database, which can be one you already run or a new one. It supports standard Postgres and compatible services, including Amazon RDS, Aurora, Supabase, Neon, PlanetScale, Databricks Lakebase, TimescaleDB, Google Cloud SQL, AlloyDB and CockroachDB.
With external orchestration, a central orchestrator records each workflow in its data store and dispatches steps to workers, so the orchestrator and its data store sit on the critical path of every workflow. With database-backed durable execution, like DBOS, your application servers checkpoint each workflow step directly to a database and coordinate through it. If a server crashes, another resumes its workflows from the last completed step, with no orchestrator to deploy, scale or secure.
Yes, for pipelines that are part of an application. DBOS is general-purpose and often used for data pipelines, especially event-driven or real-time ones, which you write as ordinary code with no orchestration infrastructure beyond Postgres. Airflow is the better fit for scheduled batch ETL that relies on its operator ecosystem, and needs explicit DAGs and an Airflow cluster. You can also use DBOS for application workflows and keep Airflow for batch ETL.
Yes, in most cases. DBOS provides durable, Postgres-backed queues with concurrency limits, rate limits, timeouts and priorities, so you don't need a separate Redis or RabbitMQ broker. DBOS also checkpoints each step of the workflow code itself: a workflow can enqueue many tasks and collect their results, and resumes from its last completed step if a process crashes.
They solve different problems. n8n is a visual automation platform for connecting SaaS apps and APIs from prebuilt nodes, and is a good fit when automations are built by operations or business teams. DBOS is for developers building durable workflows into their own application in code, where workflows are versioned, reviewed and tested with the rest of the codebase. You can also use both: n8n for automations between apps, DBOS for the workflows inside your product.
They share an architecture: Vercel says its Workflow SDK was inspired by DBOS, with durable workflows in a library rather than an external orchestrator. The Workflow SDK targets JavaScript and TypeScript, and is primarily designed for the Vercel ecosystem, with self-hosted backends also available. DBOS supports Python, TypeScript, Go, Java and Rust, provides Postgres-backed queues with flow control, and offers DBOS Conductor for production monitoring, recovery and management.
Yes. A DBOS workflow can durably wait for external input, such as a human approval, a reply or a webhook, for minutes, days or weeks. The wait is checkpointed in Postgres, so the workflow resumes when the input arrives, even if processes restart or crash in the meantime.
Agents need durable LLM and tool calls, long waits for human approval, and limits on concurrency and spend. DBOS checkpoints each LLM call and tool execution, so a crashed or interrupted agent resumes without repeating completed work, and it integrates with popular agentic frameworks like the OpenAI Agents SDK, Pydantic AI, LlamaIndex, Google ADK and the Vercel AI SDK. Because DBOS is a library, you add durability to an existing agent without moving it onto a new platform.
Not for workflows or queues: DBOS provides durable queues on Postgres. Kafka remains a good fit for high-volume event streaming between systems, and the two work well together: DBOS can consume Kafka messages and start a durable workflow for each one, using the message's position as an idempotency key so no message is processed twice. External API calls still need their own idempotency handling.
Add DBOS to your application and connect it to Postgres.