Intro to Render Workflows

Orchestrate chains of distributed, long-running computation.

Render Workflows is an end-to-end orchestration and execution engine for distributed, long-running computation.

Define units of work as standard functions with Render's lightweight SDK, then run them across hundreds of concurrent .

Use workflows to orchestrate AI agents, background jobs, data pipelines, and more:

run_agent()30s
gather_context()
execute_skills()
compose_response()
fetch_docs()
search_web()

Render bills you for compute usage (prorated by the second) and for temporary retention of your run arguments and return values. Queuing and provisioning are provided at no additional cost.

At a glance

  1. You define tasks and flows as standard TypeScript or Python functions and register them with Render.
  2. Trigger runs from anywhere: web apps, agents, CI/CD, etc.
    • A task can runs of other tasks (or itself!) as illustrated above.
  3. Render automatically spins up a separate for each run and deprovisions instances as runs complete.

Create your first workflow

Core features

What's in a workflow?

A workflow service contains a collection of function definitions that you register with Render. You designate each function as one of two types: a task or a flow.

TypeDescription

Task

A single unit of work that executes in its own .

Tasks can runs of additional tasks to distribute work across multiple .

Flow

A sequence of that run in order, all on a single .

Flows persist the return value of each step. If an infrastructure issue interrupts a flow run, Render automatically replays it from the beginning and reuses the return values from completed steps.

After you register your tasks and flows, you can trigger individual of your functions using the Render SDK or API:

Each run executes in its own , which Render spins up on demand within seconds. If you trigger more simultaneous runs than your workflow's compute limits allow, Render queues up the excess until resources become available.

A run executes whatever logic you define in its function. For tasks, this can include runs of other tasks in the same workflow:

run_agent()30s
gather_context()
execute_skills()
compose_response()
fetch_docs()
search_web()

In this example, we trigger a run of the run_agent task. This task chains runs of other tasks (gather_context, execute_skills, and so on). Each run in the chain also executes in its own .

The run_agent task depends on the results of its various chained runs, so it awaits their completion before chaining additional runs and eventually returning its own result.

Defining tasks and flows

Every workflow service pulls its task and flow definitions from a repo. In this repo, you define tasks and flows as TypeScript or Python functions using the Render SDK.

Here's a single-file workflow definition that defines two basic tasks:

You can define tasks and flows across any number of files and directories, importing frameworks and libraries as needed.

As part of registering your tasks and flows, Render builds your project into a custom image and caches it. Render pushes this image to each instance as part of spin-up.

Create your first workflow

Triggering runs

You trigger of your tasks and flows from anywhere using the Render SDK or API:

For all the details, see Triggering Workflow Runs.

Workflows versus job queues

Historically, job queue architectures (as managed by Celery, BullMQ, etc.) have required setting up multiple pieces of infrastructure and configuring them to work together:

Diagram of a background worker polling a task queue

Render Workflows unifies this architecture into a single, fully managed system:

RoleTraditional job queueRender Workflows

Task submission

You deploy a custom that listens for incoming requests and enqueues workloads.

Trigger runs from anywhere using the Render SDK or API.

Queue management

You manage your own queue state in a instance or similar datastore.

Render manages your task queue at no additional cost.

Worker provisioning

You maintain a fleet of always-running that pull and execute tasks.

Render provisions workers on demand and scales to zero when all runs finish.

For new projects that require long-running background execution, Render Workflows helps you move faster with fewer moving parts.

Create your first workflow

FAQ

How do I get started with Render Workflows?

Get started with Your First Workflow.

Which languages can I use to define tasks and flows?

You define tasks and flows with the Render SDK, which is currently available for TypeScript and Python.

SDKs for additional languages are planned for future releases.

Can I trigger runs without using the Render SDK?

Yes! You can trigger runs via the Render SDK, API, CLI, or Dashboard.

For details, see Triggering Workflow Runs.

Can runs interact with my other Render services?

Yes! Runs can initiate connections to your other Render services and datastores in the same region via .

Can runs receive incoming network connections?

No. Similar to Render's service type, runs do not expose any ports. They initiate any network connections they need.

Can I use Render Workflows with Blueprints?

Yes! You can create and manage workflows with , Render's infrastructure-as-code model.

You include workflow definitions alongside other services in your Blueprint file's services list. For example:

See the Blueprint YAML Reference for workflow-specific field support.

Workflows do not yet support preview environments or Blueprint replication.

  • Render automatically skips creating preview copies of workflows when preview environments are enabled for a Blueprint.
  • Render rejects a Blueprint that defines a workflow with the same name as an existing Blueprint-managed workflow.
How are workflows billed?

Workflows are billed for the compute usage of each run, based on compute plan and duration. They are also billed for temporary retention of each run's arguments and return value.

For details, see Limits and Pricing for Render Workflows.

What are the known limitations of Render Workflows?

We'll address these limitations in future releases:

  • Workflows currently only support TypeScript and Python for defining tasks and flows.
    • SDKs for other languages are planned for future releases.
  • Workflows do not yet natively support scheduling runs.
    • To schedule runs, you can create a cron job that triggers runs on the desired schedule.
  • are not yet able to chain runs of other tasks or flows.
  • Workflows do not yet support preview environments or Blueprint replication. For details, see Can I use Render Workflows with Blueprints?.
  • If a workflow belongs to a network-isolated environment, its runs cannot communicate with other services in that environment over its private network.
  • Workflows do not yet support HIPAA-compliant hosts.
    • To prevent accidental PHI exposure, it is not currently possible to create new workflows in a HIPAA-enabled workspace.
    • If you enable HIPAA compliance for a workspace that already has workflows, do not process PHI in workflow runs.
  • are not yet available in the Oregon region for workspaces created before January 23, 2022.