Temporal is an MIT-licensed durable execution platform: workflows are ordinary code in one of eight SDK languages, and the service persists every step so a function can keep running across crashes, restarts, and deploys for minutes or for months.
You run workers; the Temporal service persists every event and replays state after failures, self-hosted over PostgreSQL or MySQL, or as Temporal Cloud from $100 a month billed on Actions and storage. Schedules cover time-based starts; anything event-driven is a service you write calling the API. Activities retry until complete and must be idempotent.
How Temporal answers the questions Workflow Orchestration turns on.
| How it works | |
| Authoring model | Code in the host language, SDKs for Go, Java, Python, TypeScript, .NET, PHP, Ruby and Rust |
| Unit of work | A workflow execution (durable code that runs for minutes or months) made of activities, the only parts allowed to touch the outside world; child workflows nest them, and signals, queries and updates talk to one while it runs |
| Passing data | Arguments and return values are payloads serialised by a pluggable data converter, JSON by default, and travel inside the event history rather than a store, so the limits bind: 2MB a payload, 4MB a gRPC message, 50MB or 51,200 events a history, warning at 256KB. Custom codecs add encryption or compression |
| Triggers | A client calling start, and Schedules for time, calendar or interval specs, an overlap policy, a catchup window defaulting to a year, and pause. Nothing event-driven exists in the platform, so a webhook means writing the service that receives it |
| Delivery guarantee | Activities are at-least-once and must be idempotent; retried until observed complete exactly once |
| Caching and reruns | No result cache and no rerun-from-failure, because the event history makes both moot, a completed activity is never executed twice, and workers keep hot executions in an LRU sticky cache to skip replay altogether. A rerun is a reset to a chosen event, copying history to that point and continuing with current code; continue-as-new keeps a long history off the limits |
| Running it | |
| Where tasks run | Workers you run yourself, connected to a service that holds the event history |
| Connections | |
| Task languages | The same eight SDKs, and not necessarily the one the workflow is written in, an activity can be implemented by a worker in another language, routed by giving it its own task queue. Seven are GA; Rust is still pre-release |
| Connectors | None: an activity is code you write, so the integration is whatever client library you import; Nexus connects Temporal namespaces to each other, not to outside systems |
| Cost | |
| Billing unit | Free to self-host. Cloud bills Actions plus storage (active at $0.042 a GB-hour against retained at $0.00105) charged as the greater of a plan floor or 5–10% of usage, from $100 a month for Essentials, with Actions volume-tiered from $50 down to $25 a million |
vs Temporal: Free · Python, TypeScript
vs Temporal: Self-hosted · Free · Java
vs Temporal: Self-hosted · Free