Skip to main content

First Steps

Use a generated task for an independent job such as an email, thumbnail, or webhook. For a function-first, multi-step process, use the hosted workflow quick start.

The task shape​

A task definition describes its name and input. A generated task reference gives application code a typed enqueue method; the worker runs the registered handler:

producer -> broker -> worker -> result backend

See Tasks and Producer API for current definition and registration APIs. Keep generated code and the stem_builder dependency on the same version. Do not mix snippets from a source checkout with a published release.

Reliability and local development​

Task delivery and execution are at least once. A retry, lease expiry, or crash can run a handler again. Make handlers idempotent and pass a stable idempotency key to external systems. Task retry policy controls delivery attempts; it is separate from a workflow action's logical retry policy.

Use an in-memory client for tests and demos only: its state is not restart-durable. A broker and result backend are separate choices. Move to a persistent configuration with Choosing a backend.

For a user-facing foreground workflow, see the stem_flutter bindings and Next Steps.