Runtimes ยท Rote field guide

Retries, state, and the parts an agent loop cannot give you

Durable execution runtimes persist workflow state so a process survives crashes, restarts, and long waits, resuming from the last completed step rather than the beginning. For LLM pipelines this matters because model and tool calls are slow, expensive, and fail often enough that replaying an entire agent conversation to recover from one failed HTTP request is not an acceptable retry strategy.

Rote is an open-source CLI, Apache-2.0 licensed and published as rote-cli on PyPI, that compiles a proven AI agent skill into a typed, deterministic workflow. It moves fixed logic and tool orchestration into reviewable code, and calls a model only for the steps that genuinely require judgment.

What durable execution actually provides

The core guarantee is that completed steps stay completed. The runtime records each step's result, so a failure at step nine resumes at step nine rather than at step one. From that follow the properties LLM pipelines need most: retries scoped to the step that failed, waits measured in hours or days without holding a process open, and idempotency that stops a retry from charging a customer twice.

Why agent loops struggle with this

An agent's state is its conversation. Recovering from a mid-run failure means replaying that conversation, which costs tokens, takes time, and may not reproduce the same path, because the model can make a different choice the second time. A workflow with declared steps has state the runtime can checkpoint, so recovery is a resume rather than a re-derivation.

The runtimes, briefly

DBOS embeds durability in a Postgres-backed library, so the workflow runs in your own process. Temporal separates a workflow service from workers, which suits large deployments and long histories. Cloudflare Workflows runs on Workers with no infrastructure to operate. Inngest is event-driven with a hosted control plane. DBOS TypeScript covers the same model for TypeScript teams, and plain Python is the escape hatch when you want the extracted logic without any runtime at all.

Rote emits all six: DBOS, Temporal, Cloudflare Workflows, Python, DBOS TypeScript, Inngest.
The workflow model is portable and Apache-2.0; the runtime choice stays yours.

Choosing between them

Pick on operational fit rather than feature lists. Already running Postgres and want the fewest moving parts? DBOS. Already on Cloudflare and want zero infrastructure? Cloudflare Workflows. Large organisation with existing Temporal clusters and a platform team? Temporal. Event-driven architecture with hosted tooling? Inngest. The decision that actually matters, which steps are deterministic and which retain a model, is made before the runtime, and Rote keeps it portable across all of them.

What durability does not fix

A durable runtime makes execution reliable; it does not make results deterministic. A retained LLM judge can return a different answer on retry. An external API can return different data. Durable execution guarantees a step runs to completion exactly once, not that its output is identical to what it would have been an hour ago. Those are separate properties and worth keeping separate in your head.

Direct answers

Frequently asked questions

What is durable execution?

A model in which a workflow's completed steps are persisted so the process can survive crashes, deployments, and long waits, resuming from the last checkpoint instead of restarting. It gives you scoped retries, exactly-once step semantics, and waits that can outlive the process that started them.

Do I need a durable runtime for an AI pipeline?

If the pipeline is short, cheap, and can safely run again from the start, no. It becomes worth it when steps are expensive, when partial completion has real consequences such as a created ticket or a sent email, or when the process waits on a human.

Can I move between durable runtimes later?

With Rote the workflow definition is runtime-agnostic, so the same validated pipeline can be re-emitted for a different target. Runtime-specific behaviour and any integration code you wrote by hand still need review, but the control flow and the deterministic modules carry over.

Compile a workflow

Inspect the open-source CLI or run a compilation in Rote Cloud.