Durable AI Workflow Orchestration

Build reliable software effortlessly

Add durable workflows & queues to your application or AI agent
to make it resilient to any failure

Works with your favorites

Build reliable & observable AI agents

Use durable workflows to make AI agents fault-tolerant, observable, and reproducible. Integrate natively with popular agent frameworks like Pydantic AI, LlamaIndex, and the OpenAI Agents SDK.

agent.py
from dbos_openai_agents import DBOSRunner

# Define a tool for your agent
@function_tool
@DBOS.step()
async def get_weather(city: str) -> str:
    """Get the weather for a city."""
    return f"Sunny in {city}"

# Create an agentic workflow
@DBOS.workflow()
async def run_agent(user_input: str) -> str:
    agent = Agent(name="weather", tools=[get_weather])
    result = await DBOSRunner.run(agent, user_input)
    return str(result.final_output)

Orchestrate durable workflows

Write your business logic in normal code, with branches, loops, subtasks, and retries. DBOS makes it resilient to any failure.

checkout.py
@DBOS.workflow()
def checkout_workflow(items: Items):
    
    # First, create an order
    order = create_order()

    # Then, reserve inventory
    reserve_inventory(order, items)

    # Next, process payment
    payment_status = process_payment(order, items)

    if payment_status == 'paid':
        # If payment succeeds, fulfill the order
        fulfill_order(order)

    else:
        # If payment fails, release inventory
        # and cancel the order
        undo_reserve_inventory(order, items)
        cancel_order(order)

Scale reliably with durable queues

Use durable queues to simplify fault-tolerant orchestration of thousands of concurrent tasks. Control how many tasks can run concurrently or how often tasks can start.

queue.py
# Create a named queue for indexing tasks,
# It runs no more than 10 functions concurrently
queue = Queue("indexing_queue", concurrency=10)

@DBOS.workflow()
def indexing_workflow(urls):
    handles = []

    # Enqueue an index task for each URL
    for url in urls:
        handle = queue.enqueue(index_doc, url)
        handles.append(handle)

    # Wait for each task to complete
    # and get result
    return [h.get_result() for h in handles]

Monitor workflows and queues in real time

Get real-time visibility into workflow health and performance. Inspect workflow executions, track queue metrics, and cancel, resume, or restart your workflows from the dashboard.

Dynamic cron schedules made easy

Schedule durable workflows to run exactly once per interval. Create, update, or backfill schedules dynamically without managing external schedulers.

Record a stock's price once a minute, migrate customer data once every hour, or send emails to inactive users once a week.

create-schedule.py
@DBOS.workflow()
def customer_workflow(scheduled_time: datetime,
customer_id: str):
    # Code to sync customer data
    ...

def on_customer_registration(customer_id: str):
    # Create a schedule dynamically per user
    # to run the customer_workflow
    DBOS.create_schedule(
        schedule_name=f"cus-{customer_id}-sync",
        workflow_fn=customer_workflow,
        schedule="0 * * * *",  # Runs every hour
        context=customer_id,
    )

Run human-in-the-loop workflows

Run workflows that pause, wait for human input, and resume reliably, even across restarts and redeploys.

Durable sleep and notifications let workflows wait for days or weeks, or until an external signal arrives, before continuing.

human-in-the-loop.py
@DBOS.workflow()
def durable_agent(request):
    # Upon reaching a step that needs approval,
    # await an approval notification.
    approval = DBOS.recv()

    # If approved, continue execution.
    # Otherwise, raise an exception to stop execution
    if approval is None:
        raise Exception("Agent timed out awaiting")
    elif approval.response == "deny":
        raise Exception("Agent denied approval")
    else:
        print("Agent approved:", agent_status)

@app.post("/agents/{agent_id}/respond")
def respond_to_agent(agent_id, response):
    # Notify an agent it has been approved or denied
    DBOS.send(agent_id, response)

How it works

It's like putting a PhD in your code

Based on years of MIT-Stanford R&D, DBOS makes it simple to build durable, fault-tolerant, and scalable applications and AI agents.

Step 1

Install DBOS

Just install the open-source DBOS library to your code and connect it to a Postgres database. No new infrastructure required.

Step 2

Annotate your code

Annotate workflows and steps in your code to make your applications fault-tolerant and observable by default.

Step 3

Observe & manage

Use DBOS Conductor to facilitate workflow and queue troubleshooting, alerting, and remediation for all your apps.

Agentic-Ready Features

Built for reliable agents & workflows

Visualize Workflows & Queues

Monitor and manage performance in real time.

Integrations

First-party integrations with agent frameworks like OpenAI Agents, LlamaIndex, and Pydantic AI.

New

MCP Server

Monitor and debug your workflows directly from your preferred coding agent.

Workflow Management

Using DBOS Conductor, automatically recover failed workflow executions; cancel, resume, or restart workflows from a dashboard; set up alerts when workflows fail; and monitor workflow progress and queue status in real time—across all your AI applications.

Secure & Private

DBOS is SOC 2, GDPR and CCPA compliant. DBOS never stores your data and is fully private.

Run Anywhere

Run on-prem or in any cloud. Self-host DBOS Conductor or connect from any environment.

Custom Alerts

Define custom alerts to notify your team of workflow orchestration issues.

Testimonials

Loved by AI, Cloud & Data teams

Helping more devs, AI engineers, and SREs orchestrate fault-tolerant workflows.

"We've been impressed by how lightweight and flexible DBOS is, the speed at which their team ships, and the level of support offered. We, at Yutori, are happy customers and excited to scale with DBOS."

Abhishek Das

CEO & Co-founder

“DBOS makes it dead simple for our engineering team to build reliable, low-latency, AI-powered user experiences."

Cameron Spiller

CTO and Co-founder

"I love the design of DBOS. If you're a gamer, it's like having a “save point” in your programs. If a function fails, a new function can start, picking up at the last checkpoint."

Paul Copplestone

CEO & Co-Founder

“DBOS is really simple to manage. It gives us durable orchestration and observability without a lot of coding and without having to run additional infrastructure.”

Devin Stein

CEO and Co-founder

‍“We looked at Google Workflows, Temporal, Airflow and Celery but DBOS was the one framework that solved many pieces of the puzzle while giving us implementation flexibility.”

Shelby Vanhooser

Engineer

"DBOS makes it impossible to screw up."

Alp Karavil

CTO and Co-founder

"We've been impressed by how lightweight and flexible DBOS is, the speed at which their team ships, and the level of support offered. We, at Yutori, are happy customers and excited to scale with DBOS."

Abhishek Das

CEO & Co-founder

“DBOS makes it dead simple for our engineering team to build reliable, low-latency, AI-powered user experiences."

Cameron Spiller

CTO and Co-founder

"I love the design of DBOS. If you're a gamer, it's like having a “save point” in your programs. If a function fails, a new function can start, picking up at the last checkpoint."

Paul Copplestone

CEO & Co-Founder

“DBOS is really simple to manage. It gives us durable orchestration and observability without a lot of coding and without having to run additional infrastructure.”

Devin Stein

CEO and Co-founder

‍“We looked at Google Workflows, Temporal, Airflow and Celery but DBOS was the one framework that solved many pieces of the puzzle while giving us implementation flexibility.”

Shelby Vanhooser

Engineer

"DBOS makes it impossible to screw up."

Alp Karavil

CTO and Co-founder

"We've been impressed by how lightweight and flexible DBOS is, the speed at which their team ships, and the level of support offered. We, at Yutori, are happy customers and excited to scale with DBOS."

Abhishek Das

CEO & Co-founder

“DBOS makes it dead simple for our engineering team to build reliable, low-latency, AI-powered user experiences."

Cameron Spiller

CTO and Co-founder

"I love the design of DBOS. If you're a gamer, it's like having a “save point” in your programs. If a function fails, a new function can start, picking up at the last checkpoint."

Paul Copplestone

CEO & Co-Founder

“DBOS is really simple to manage. It gives us durable orchestration and observability without a lot of coding and without having to run additional infrastructure.”

Devin Stein

CEO and Co-founder

‍“We looked at Google Workflows, Temporal, Airflow and Celery but DBOS was the one framework that solved many pieces of the puzzle while giving us implementation flexibility.”

Shelby Vanhooser

Engineer

"DBOS makes it impossible to screw up."

Alp Karavil

CTO and Co-founder

Insights

Read the latest on workflow durability

The latest in durable execution, AI workflows & more.

How To
Apr 1, 2026

Async Python is Secretly Deterministic

How Python async functions work, and how to produce async workflows that execute steps concurrently, but with a deterministic, durable execution order.
Peter Kraft
Qian Li
How To
Mar 24, 2026

Running Durable Workflows from Postgres UDFs

Using the Postgres workflows client from DBOS to enqueue durable workflows and send messages to them directly via a SQL function.
Peter Kraft
Qian Li
How To
Mar 16, 2026

Bridging Languages with Postgres and Workflows

In this blog post we explain how services written in different languages can interoperate by using Postgres to exchange data through workflows, messages, events, and streams. 
Peter Kraft
Qian Li