<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/pi-durable-cloudflare-workflows-or-vercel-workflow--f8uhdigua" -->

---
title: Pi Durable, Cloudflare Workflows, or Vercel Workflow?
description: Three different tools let a support-reply agent survive a restart during any stage: Pi Durable, Cloudflare Workflows, and Vercel's Workflow SDK. Pi Durable is...
canonical: https://daily.dev/posts/pi-durable-cloudflare-workflows-or-vercel-workflow--f8uhdigua
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Pi Durable, Cloudflare Workflows, or Vercel Workflow? | daily.dev
og:description: Three different tools let a support-reply agent survive a restart during any stage: Pi Durable, Cloudflare Workflows, and Vercel's Workflow SDK. Pi Durable is...
og:url: https://daily.dev/posts/pi-durable-cloudflare-workflows-or-vercel-workflow--f8uhdigua
og:image: https://api.daily.dev/og/posts/f8uHDiGUA.png
og:image:alt: Pi Durable, Cloudflare Workflows, or Vercel Workflow?
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Pi Durable, Cloudflare Workflows, or Vercel Workflow?

**[Flavio Copes](https://daily.dev/sources/flaviocopes)** · 7 min read · 2 upvotes · 0 comments

## Summary

Three different tools let a support-reply agent survive a restart during any stage: Pi Durable, Cloudflare Workflows, and Vercel's Workflow SDK. Pi Durable is an agent harness that persists conversation and tool-call state using local SQLite, JSONL, or a Cloudflare Durable Object adapter, leaving process restarts and request routing to your application. Cloudflare Workflows runs business logic as durable steps using step.do, with step.waitForEvent handling approval waits, and its rules advise making API and binding calls idempotent. Vercel's Workflow SDK splits workflow and step code with 'use workflow' and 'use step' directives, backed by a 'World' that can be the managed Vercel World, a self-hosted Postgres backend, or a custom implementation, and hooks suspend work for external decisions requiring explicit authorization.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://flaviocopes.com/durable-agent-platforms>

## Questions this post answers

### What's the difference between Cloudflare Workflows and Vercel's Workflow SDK for building durable AI agents?

Cloudflare Workflows runs business logic as managed durable steps using step.do, with Cloudflare supplying execution and step state storage, plus step.waitForEvent for approval-style waits. Vercel's Workflow SDK instead separates workflow code and step functions using 'use workflow' and 'use step' directives, backed by a pluggable 'World' that can be Vercel's managed backend, a self-hosted Postgres backend, or a custom implementation.

_Compare durable workflow options like these on daily.dev before locking in an agent's infrastructure._

### How do I make sure an agent doesn't send a duplicate email or action if a workflow retries after a crash?

Treat remote side effects like email sends as requiring separate deduplication regardless of which workflow runtime is used. Cloudflare's rules of Workflows explicitly advise making API and binding calls idempotent, since a recorded successful step and a remote request that completed just before a crash are different situations. Test this by having a provider accept a fake message, stopping the worker before the receipt saves, then resuming to check for a duplicate send.

_Developers hardening agent pipelines track idempotency practices like this on daily.dev._

### What is Pi Durable and what storage backends does it support for persisting agent state?

Pi Durable is a library that persists an AI agent's conversation and execution state, including model requests and tool calls, so an unfinished investigation can be recovered after a crash. It supports local SQLite and JSONL storage, plus a Cloudflare Durable Object SQLite adapter, letting it work in a hosted application or a local Node program. The database must stay on persistent storage with backups for recovery to work.

_Evaluating agent harness libraries like this one is easier when you follow updates on daily.dev._

## Similar posts on daily.dev

- [A new programming model for durable execution](https://daily.dev/posts/a-new-programming-model-for-durable-execution-8hk6zrkca) · Vercel · 0 upvotes · 0 comments
- [Durable AI Workflows 2026: Inngest, Trigger.dev, Vercel Workflow](https://daily.dev/posts/durable-ai-workflows-2026-inngest-trigger-dev-vercel-workflow-un2tgyyqs) · Alex CloudStar · 0 upvotes · 0 comments
- [Introducing Dynamic Workflows: durable execution that follows the tenant](https://daily.dev/posts/introducing-dynamic-workflows-durable-execution-that-follows-the-tenant-d9y25qo3w) · Cloudflare · 0 upvotes · 0 comments
- [Vercel Workflows tutorial: build a durable background job](https://daily.dev/posts/vercel-workflows-tutorial-build-a-durable-background-job-27npsfaqy) · Flavio Copes · 0 upvotes · 1 comments

---

Tags: [#ai-agents](https://daily.dev/tags/ai-agents), [#career](https://daily.dev/tags/career), [#vercel](https://daily.dev/tags/vercel)

[View this post on daily.dev](https://daily.dev/posts/pi-durable-cloudflare-workflows-or-vercel-workflow--f8uhdigua)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Pi Durable, Cloudflare Workflows, or Vercel Workflow?","url":"https://daily.dev/posts/pi-durable-cloudflare-workflows-or-vercel-workflow--f8uhdigua","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/pi-durable-cloudflare-workflows-or-vercel-workflow--f8uhdigua"},"datePublished":"2026-10-29T16:23:58.769Z","dateModified":"2026-10-29T16:34:21.156Z","description":"Three different tools let a support-reply agent survive a restart during any stage: Pi Durable, Cloudflare Workflows, and Vercel's Workflow SDK. Pi Durable is...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5986d5f25d187897ccf3cc14ebc3a783?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/5986d5f25d187897ccf3cc14ebc3a783?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Flavio Copes","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Flavio Copes","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/1f2dbd275797411bbd37bfdaaf0951a9","url":"https://daily.dev/sources/flaviocopes"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/pi-durable-cloudflare-workflows-or-vercel-workflow--f8uhdigua","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"ai-agents,career,vercel","timeRequired":"PT7M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Flavio Copes","item":"https://daily.dev/sources/flaviocopes"},{"@type":"ListItem","position":3,"name":"Pi Durable, Cloudflare Workflows, or Vercel Workflow?"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/pi-durable-cloudflare-workflows-or-vercel-workflow--f8uhdigua#faq","mainEntity":[{"@type":"Question","name":"What's the difference between Cloudflare Workflows and Vercel's Workflow SDK for building durable AI agents?","acceptedAnswer":{"@type":"Answer","text":"Cloudflare Workflows runs business logic as managed durable steps using step.do, with Cloudflare supplying execution and step state storage, plus step.waitForEvent for approval-style waits. Vercel's Workflow SDK instead separates workflow code and step functions using 'use workflow' and 'use step' directives, backed by a pluggable 'World' that can be Vercel's managed backend, a self-hosted Postgres backend, or a custom implementation. Compare durable workflow options like these on daily.dev before locking in an agent's infrastructure."}},{"@type":"Question","name":"How do I make sure an agent doesn't send a duplicate email or action if a workflow retries after a crash?","acceptedAnswer":{"@type":"Answer","text":"Treat remote side effects like email sends as requiring separate deduplication regardless of which workflow runtime is used. Cloudflare's rules of Workflows explicitly advise making API and binding calls idempotent, since a recorded successful step and a remote request that completed just before a crash are different situations. Test this by having a provider accept a fake message, stopping the worker before the receipt saves, then resuming to check for a duplicate send. Developers hardening agent pipelines track idempotency practices like this on daily.dev."}},{"@type":"Question","name":"What is Pi Durable and what storage backends does it support for persisting agent state?","acceptedAnswer":{"@type":"Answer","text":"Pi Durable is a library that persists an AI agent's conversation and execution state, including model requests and tool calls, so an unfinished investigation can be recovered after a crash. It supports local SQLite and JSONL storage, plus a Cloudflare Durable Object SQLite adapter, letting it work in a hosted application or a local Node program. The database must stay on persistent storage with backups for recovery to work. Evaluating agent harness libraries like this one is easier when you follow updates on daily.dev."}}]}
```

