# The best workflow engine is a programming language

DevFeed: [The best workflow engine is a programming language](<https://devfeed.tech/articles/the-best-workflow-engine-is-a-programming-language-776.md>)

Original publisher: [Read original article](<https://vercel.com/blog/the-best-workflow-engine-is-a-programming-language>)

Author: Pranay Prakash

Published: 2026-08-27T07:00:00Z

Content type: opinion

Language: en

Sources: [Vercel News](<https://devfeed.tech/sources/vercel-news.md>)

Topics: [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [airflow](<https://devfeed.tech/tags/airflow.md>), [encryption](<https://devfeed.tech/tags/encryption.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [tls](<https://devfeed.tech/tags/tls.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [workflow](<https://devfeed.tech/tags/workflow.md>)

## AI overview

The article argues that programming languages can express workflow graphs more naturally than manually defined DAGs. It describes using TypeScript for durable execution and contrasts that approach with the operational setup required to run Temporal workers and infrastructure.

## Source excerpt

The idea of orchestrating long-running, stateful logic on top of unreliable, stateless infrastructure isn't new. We've had message queues, job runners, microservice choreographies, and full-blown workflow engines for a long time. What we never had was a version of it that felt good to write. I'd spent about six months working on a fork of Temporal, mostly on weekends, trying to turn it into a serverless answer with DX that felt more Vercel-native. Eventually it dawned on me that to ship that experience, I'd need to own the execution environment too. So I dropped the fork, joined Vercel, and started hacking on a new framework from scratch alongside Nathan Rajlich. Code is already a DAG A workflow is a DAG, a directed acyclic graph. Before Temporal (and Cadence before it), nearly every workflow framework made you draw that DAG by hand. Apache Airflow is the canonical example. You describe your pipeline as an explicit graph of tasks and dependencies, and your actual logic gets buried inside the nodes." That always felt backwards to me. We already have a tool for expressing "do this, then that, and these in parallel, and branch here." It's called a programming language. An abstract syntax tree is a DAG. Software itself is a DAG. I knew that in the abstract, but it didn't truly hit me until I saw Temporal, where you write what looks like normal sequential code and the engine makes it durable underneath. It was the dream all along. What running Temporal taught me Temporal is great once your infrastructure exists. I was starting from scratch, and setting it up meant: Standing up Temporal Cloud (or self-hosting the server: Frontend, History, Matching, and Worker services, plus a Cassandra/Postgres/MySQL backend and sharding). Running your own worker fleet: Temporal never executes your code. Your workers poll the server and run your workflows and activities. In practice that's a Kubernetes cluster you own. Wiring it all together: task queues, activity registration, client co