Visual editor for Temporal workflows
Temporal runs the durable workflow. Workflow Builder gives your end-users the canvas. Mount a React-embedded editor on top of your Temporal backend in 1 day and let PMs, ops, and customers author flows - without writing Go, Java, or Python. WB Reference backend ships with a Temporal adapter on day one.

Temporal for the runtime, Workflow Builder for the editor
Temporal is the industry-standard durable execution platform from Temporal Technologies - MIT-licensed, 8 official SDKs (Go, Java, Python, TypeScript, .NET, PHP, Ruby, Rust), battle-tested at Snap, DoorDash, OpenAI, Cloudflare, GitLab, and many others. It runs your workflow state machine with deterministic replay, signals, and queries.
Workflow Builder is a React SDK that mounts a complete workflow editor inside your product - canvas, palette and properties panel, end-user friendly, no Go, Python, or Rust required. It gives your authors the surface.
Together: Temporal runs the workflow. Workflow Builder lets non-developers author, inspect, and approve the flows. The Temporal adapter is @workflowbuilder/temporal, an open-source package on npm under Apache 2.0, and the WB Reference backend runs on it. You install the package and write a handler for each of your node types; the engine that runs the diagrams is already written.
The 1-line summary: Temporal for the runtime, Workflow Builder for the editor.
Last updated: October 2026 · Sources: Temporal public docs, GitHub repository, @workflowbuilder/temporal on npm.
The pairing problem
Temporal runs the workflow. Who builds the UI for your end-users?
Temporal is the right tool for durable execution at scale. Sagas, compensation, retries, deterministic replay, signals, queries, child workflows - all first-class. If your team runs long-running workflows that absolutely must complete (payment flows, KYC, multi-day onboarding, agent backends), Temporal earns its place.
The editor is your problem. Your PM cannot author a workflow in Go. Your ops team cannot tune a saga in their IDE. Your customer cannot see the long-running job their workflow kicked off, let alone change it. Temporal Web UI is an engineer-oriented operations console - search executions, send signals, terminate stuck workflows, reset state, inspect event history. Excellent for ops and debugging, but not packaged as a product UI for the non-developers who actually use your product.
Workflow Builder fills that gap. The canvas lives inside your application. The end-user authors flows visually. The output is a typed JSON graph definition. The @workflowbuilder/temporal plugin runs that graph on Temporal: each run of a diagram is one Workflow Execution, and each node runs as an Activity. You keep the Temporal runtime you already trust, and add the editor your customers expect.
How Temporal and Workflow Builder fit together
- Your product mounts the WB React component - one import, one component.
- End-users build flows on the canvas - drag-drop nodes, connect edges, fill custom node form schemas.
- WB outputs a typed JSON graph definition on save.
- The @workflowbuilder/temporal plugin runs the JSON graph as it is: one workflow interprets every diagram, so a new diagram needs no redeploy - this adapter ships day one.
- Temporal executes with full durable execution (deterministic replay, retries, timeouts, full Event History).
| Layer | Temporal | Workflow Builder |
|---|---|---|
| Durable execution engine | Yes | No |
| Visual canvas | No | Yes |
| Deterministic replay | Yes | No |
| End-user authoring | No | Yes |
| Signals + Queries (external influence) | Yes | No (approval decisions use a Workflow Update) |
| Custom node form schemas | No | Yes |
| Child workflows + sagas + compensation | Yes | No (a failed node can route to an error branch) |
What Workflow Builder adds to your Temporal stack
Visual canvas for non-developers - PMs, ops, customers can author workflows without writing Go, Java, or Python.
Embeddable React component - mount it in your product, in your design system, on your URL.
Custom node form schemas - typed inputs end-users fill in (model, prompt, recipients, thresholds, anything).
Production UX - snap-to-grid built in, undo / redo and copy-paste as open-source plugins, auto-layout and edge routing with the Enterprise license.
Theme tokens - CSS variables that match your product's design system.
No Go, Python, or Rust required for authors - the JSON contract is the only thing they touch indirectly.
Generic node shapes - data, approval, HITL, and domain-specific nodes are first-class, not workarounds.
Code example: from canvas to Temporal
The minimum wiring. Adapt to your node types, your data shape, your storage. The worker uses the Temporal TypeScript SDK.
import { WorkflowBuilder } from '@workflowbuilder/sdk';
import '@workflowbuilder/sdk/style.css';
// Your palette items: schema, default values, icon, label per node type.
import { nodeTypes } from './nodes';
export function WorkflowEditor({ workflowId }: { workflowId: string }) {
return (
<WorkflowBuilder.Root
name={`workflow-${workflowId}`}
nodeTypes={nodeTypes}
integration={{
strategy: 'api',
endpoints: { load: `/api/workflows/${workflowId}`, save: `/api/workflows/${workflowId}` },
}}
/>
);
}@workflowbuilder/temporal is a Temporal Plugin. On the worker you register it with one executor per node type and a store for execution events, and your workflows module re-exports its runWorkflow. On the backend, TemporalWorkflowEngine starts runs, cancels them and delivers approval decisions.
import { NativeConnection, Worker } from '@temporalio/worker';
import { WorkflowBuilderPlugin } from '@workflowbuilder/temporal';
import { fileURLToPath } from 'node:url';
type MyNode =
| { id: string; type: 'my-app/http-request'; config: { url: string } }
| { id: string; type: 'my-app/approval'; config: null };
const plugin = new WorkflowBuilderPlugin<MyNode>({
// One executor per node type.
executors: {
'my-app/http-request': async (node) => ({ output: await callApi(node.config) }),
'my-app/approval': () => ({ waiting: true }), // parks the run until a decision arrives
},
// Where execution events and statuses are stored.
store: { emitExecutionEvent, updateExecutionStatus },
});
const worker = await Worker.create({
connection: await NativeConnection.connect({ address: process.env.TEMPORAL_ADDRESS }),
taskQueue: plugin.taskQueue,
workflowsPath: fileURLToPath(new URL('workflows.ts', import.meta.url)),
plugins: [plugin],
});
await worker.run();// workflows.ts
export { runWorkflow } from '@workflowbuilder/temporal/workflow';import { Client, Connection } from '@temporalio/client';
import { TemporalWorkflowEngine } from '@workflowbuilder/temporal/client';
const engine = new TemporalWorkflowEngine({
client: async () => new Client({ connection: await Connection.connect({ address }) }),
});
// definition = { workflowId, nodes, edges }, mapped from the saved diagram
await engine.submit({ workflowId, executionId, definition, triggerPayload: {}, variables: {}, global: {} });
await engine.resolveNode({
executionId,
nodeId: 'approval-1',
resolution: { output: 'approved', nextPort: 'approved' },
});The adapter is @workflowbuilder/temporal on npm (Apache 2.0). apps/backend and apps/execution-worker in the public repository show it wired into a full stack. See Quick start below.
Where Temporal + Workflow Builder pays off
Human-in-the-loop approval flows
Temporal can pause a running workflow until an outside decision arrives, without breaking determinism. In code, the run parks at the approval node and resumes on a Workflow Update that carries the decision. For your end-user, it is a flow on a canvas with an approval gate node, a reviewer assignment, and a notification step. Workflow Builder draws the nodes; the plugin parks the run at the approval node and delivers the decision to it. PMs author the approval flow; Temporal executes it with full durable replay. The reviewer never sees Go.
Customer-facing workflow builders
Your B2B SaaS sells workflow automation. Your customers - operations teams, line-of-business owners, compliance officers - need to configure their own workflows. They are not developers. You can either build a custom canvas (3-6 months of engineering before you add a single activity) or embed Workflow Builder and run customer-authored workflows on Temporal. The adapter is already in the Reference backend.
Visual production view for non-engineers
Temporal Web UI is an engineer-oriented operations console - search executions, view event history, send signals, terminate stuck workflows, reset state. Excellent for ops and debugging. Your product team also needs to see what is happening in business terms: which step is running, where the workflow paused waiting for a decision, what data flowed through the approval gate. Workflow Builder lives in your product and renders the same workflow mental model for non-engineers - business-facing surface, same source-of-truth state.
Long-running orchestration UI (KYC, billing, onboarding)
Multi-day workflows - KYC checks, subscription billing cycles, customer onboarding - are Temporal's sweet spot. They are also impossible for a PM to reason about by reading Go code. Workflow Builder renders the topology - which activity calls which, where a failure routes to an error branch, where the workflow waits for a human. Product teams author and modify the flow without reading code.
Athena Intelligence: visual editor on top of a durable backend
Athena's specific backend is a custom Python runtime, not Temporal, but the architectural pattern is identical - end-users author flows on a visual canvas inside the Athena product, and the backend translates and executes. The Temporal pairing inherits the same shape, with the bonus that the WB Reference backend ships the Temporal adapter on day one.
Athena Intelligence is a US-based, VC-backed AI platform for legal and renewable-energy data intelligence. Their customers - enterprise analysts, not developers - need to build multi-step pipelines without writing Python. Before Workflow Builder, Athena offered a Python SDK on a lambda-style runtime. End-users had to write code. That model did not scale to the non-developer customers the platform was built for.
If you already run Temporal, the integration is even faster: the @workflowbuilder/temporal plugin interprets the diagrams, and you only add handlers for your node types.
Pricing
Pricing: pair without paying twice
Temporal
Free under MIT to self-host.
Temporal Cloud is usage-based, see temporal.io/pricing.
Workflow Builder
Community: free under Apache 2.0 - React SDK, reference backend, Temporal plugin, undo/redo.
Enterprise license: EUR 6,990 one-time - adds auto-layout, smart edge routing and edge reshaping.
Self-host on Apache 2.0: free, no addendum, white-label allowed.
No per-workspace, per-seat, or per-execution fee on the editor side.
Three steps to your first Temporal flow
Read the package README
How the plugin runs a diagram, one executor per node type, and pausing a run for a human. Open the README on GitHub.
Clone the reference repository
The WB Reference backend ships a working Temporal adapter - a sample canvas plus a TypeScript worker that compiles and runs end-to-end. View on GitHub.
Book an architecture review
30 minutes with our team. We sketch the integration shape on a call. No slides. Book here.
CASE STUDIES
FAQ
Temporal + Workflow Builder, answered
- Does Workflow Builder replace Temporal?
No. They pair. Temporal runs the durable workflow engine - deterministic replay, signals + queries, sagas + compensation, child workflows, multi-language workers. Workflow Builder is the editor your end-users author on. The WB Reference backend ships a Temporal adapter on day one - this is documented integration, not a roadmap promise. Temporal is MIT and Workflow Builder Community is Apache 2.0; both self-host, so neither locks you in.
- Can I use Workflow Builder without Temporal?
Yes. Workflow Builder is runtime-agnostic: the editor outputs a JSON graph, and what runs it is your choice. Temporal is the only runtime adapter we ship. Another engine (LangGraph, Inngest, a custom executor) plugs into the reference backend behind the WorkflowEnginePort interface, plus a runner that walks the graph on that engine's primitives - an adapter you write, not a configuration switch.
- What is Temporal?
Temporal is the industry-standard durable execution platform from Temporal Technologies, licensed under MIT. It models long-running workflows as code with deterministic replay, signals, queries, sagas, and compensation. Eight official SDKs - Go, Java, Python, TypeScript, .NET, PHP, Ruby, Rust. It runs in production at Snap, DoorDash, OpenAI, Cloudflare, GitLab, and many others. It is a backend runtime and library - not a product UI for end-users.
- Why does Temporal need a visual editor?
Temporal workflows are written in Go, Java, Python, TypeScript, .NET, PHP, Ruby, or Rust code. That works for backend engineers. It does not work for the PM who needs to design an approval flow, the ops team tuning a saga, or the customer who buys your workflow automation product and expects to configure it. Temporal Web UI is an engineer-oriented operations console, not a product UI for non-developer authors.
- How does Workflow Builder integrate with Temporal?
Through @workflowbuilder/temporal, a Temporal Plugin on npm. One workflow, runWorkflow, interprets any diagram: a diagram run becomes one Workflow Execution and each node one Activity. You register the plugin on your Worker with one executor per node type and re-export runWorkflow from your workflows module. A new diagram needs no redeploy; a new node type needs its executor.
- Does Temporal Web UI do this already?
Temporal Web UI is an engineer-oriented operations console - search workflows, view event history, send signals, terminate stuck workflows, reset state. Excellent for ops and debugging. It is not embeddable in your product, not designed for non-developers to author workflows, and not packaged as a customer-facing surface. Workflow Builder fills that gap.
- Can end-users author HITL flows visually?
Yes. Any node type can pause the run: the run parks at that node, at no cost while it waits, across worker restarts and redeploys. The reviewer opens the inbox you build and approves or rejects; your backend delivers the decision as a Temporal Workflow Update, checked before it is accepted, so an invalid decision leaves no trace in the run. The run continues on the branch the decision picked. End-users never see Go or TypeScript, and AI Studio, the reference app, ships a human decision node built this way.
- What does Workflow Builder cost when paired with Temporal?
Workflow Builder Community - the React SDK, the reference backend and the Temporal plugin - is free under Apache 2.0. The optional Enterprise license is EUR 6,990 one-time and adds auto-layout, smart edge routing and edge reshaping. Temporal charges separately on the runtime side. No double-billing on the same dimension.