Skip to content

Build a Workflow

The visual workflow builder lets you compose multi-step automations using 7 step types, connected as a directed acyclic graph (DAG). Workflows can be triggered manually or on a schedule.

  1. Navigate to Workflows — click Workflows in the sidebar, then click New Workflow

  2. Name your workflow and add an optional description

  3. Add steps by dragging from the step palette on the left into the canvas

  4. Connect steps by dragging from a node’s output handle (right side) to another node’s input handle (left side)

  5. Configure each step by clicking it to open the inspector panel on the right

  6. Save with Ctrl/Cmd + S or click the Save button

Every step shares these properties in the inspector panel, regardless of type.

PropertyTypeDefaultDescription
IDText (immutable)Auto-generatedLowercase alphanumeric + underscores, unique per workflow
NameTextRequiredDisplay name, max 200 characters
TypeBadge (read-only)Set when adding the step
EnabledToggleOnDisable without deleting
Timeout (s)Number300Max execution time
On ErrorDropdownFailFail (stop workflow), Continue (skip), Retry (with backoff), Fallback (jump to step)
Catch StepStep pickerError recovery step if this step fails
Depends OnStep pickerSteps that must complete first

When On Error is set to Fallback, a Fallback Step picker appears to select the target step.

When On Error is set to Retry, additional retry configuration fields appear:

PropertyDefaultDescription
Max Attempts3Retry count
Delay (s)5Initial delay
BackoffFixedFixed, Linear, or Exponential
Max Delay (s)60Maximum delay cap

Steps are grouped into three categories matching the toolbar palette: Execution, Logic, and Orchestration.

Execute a shell command or installed tool. Use this for bash scripts, CLI tools, MCP tools, or any executable task.

PropertyDescription
ToolClick Change to browse installed tools (bash, Python, MCP tools). Shows tool name and description
Tool InputArguments for the tool. For bash: the shell command. Supports {{...}} template expressions

AI-powered agentic execution with Claude. Delegates work to an AI agent with a natural language prompt.

PropertyDefaultDescription
PromptNatural language instruction. Supports template expressions
ModelSonnet (Balanced)Quick Select (Haiku / Sonnet / Opus) or browse all providers
Max Turns3Maximum agentic reasoning cycles; tool calls count as turns

Branch based on a condition. The inspector offers two modes, toggled with tabs at the top of the section.

If / Else mode:

PropertyDescription
ConditionBoolean expression. Click Add Condition to open the condition builder, Edit to modify, Test to preview the result
If TrueStep to execute when condition is true
If FalseStep to execute when condition is false

Switch / Case mode:

PropertyDescription
Switch ValueExpression resolving to a string, e.g. {{steps.classify.output}}
CasesValue-to-target-step mapping. Click Add Case to add entries
Default CaseFallback step if no case matches

Iterate over a collection. Repeats a set of steps for each item in a list.

PropertyDefaultDescription
Loop OverExpression resolving to a list. E.g., {{steps.fetch.output}}
Variable NameitemAccessible as {{loop.item}} inside the loop body
Max Iterations100Safety limit
Loop Body StepsSteps to execute per iteration (multi-select)
Break ConditionOptional; loop stops if true after an iteration

Run branches concurrently. Executes multiple paths at the same time and waits for all to complete.

PropertyDefaultDescription
BranchesEach branch is a list of steps. Click Add Branch to create. Branches run concurrently
Fail FastOnCancels all branches when any branch fails

Human-in-the-loop approval checkpoint. Pauses the workflow and waits for a human to approve or reject.

PropertyDefaultDescription
Approval MessageShown to the approver. Supports template expressions
Timeout (s)3600Wait time before timeout action (1 hour default)
Timeout ActionDenyDeny, Approve (auto-approve), or Escalate

Execute a nested workflow. Embeds another workflow as a step, allowing reuse and composition.

PropertyDescription
Subworkflow IDID of the workflow to execute. Inputs are passed via step inputs

Steps pass data to downstream steps through their outputs. Each step has an output that can be consumed by the next connected step. Configure connections by dragging from a step’s output handle (right side) to the input handle (left side) of the next step in the canvas.

Step IDs are set in the inspector panel. Use descriptive IDs: fetch_data, process, notify.

A workflow that fetches open issues, analyzes them with AI, loops over high-priority items, and gates on human approval before posting.

  1. fetch_issues — Add a Tool step. Select the bash tool and enter your fetch command (e.g. python fetch_github_issues.py --repo myorg/myrepo --label bug) in the Tool Input field.

  2. analyze_priorities — Add an LLM Agent step. Write the analysis prompt (e.g. “Analyze the fetched issues and categorize by priority: high, medium, low”) and select your preferred model.

  3. loop_high_priority — Add a Loop step. Set Loop Over to {{steps.analyze_priorities.output}}, Variable Name to issue, and select the body steps to execute per iteration.

  4. approval_gate — Add an Approval Gate step. Set the Approval Message to describe what the reviewer should check (e.g. “Review these high-priority issues before posting to Slack”).

  5. post_summary — Add a Tool step. Select the bash tool and enter the notification command (e.g. python post_to_slack.py --channel #eng-alerts) in the Tool Input field.

Connect the steps in sequence: drag from each step’s output handle to the next step’s input handle.

Click Run in the toolbar. A run panel opens at the bottom showing step-by-step progress.

Click Run on any workflow card.

  1. Open the workflow detail page by clicking a workflow from the list

  2. Go to the Schedules tab and click Add Schedule

  3. Enter the schedule — provide a cron expression (e.g., 0 9 * * 1-5 for weekdays at 9 AM) and select your timezone from the dropdown

  4. Save the schedule

Every save creates a new version. From Workflows → [Workflow] → Versions:

  • View all versions with change summaries
  • Compare two versions side-by-side (diff view)
  • Roll back to any previous version
  • Keep steps focused: one step, one responsibility. Use LLM Agent steps for anything that needs judgment.
  • Name your output variables clearly — issue_id, filtered_items, summary — so downstream steps are readable.
  • Use the Conditional step for error handling: branch on whether a previous step succeeded.
  • Test incrementally: run after each new step to verify data flows correctly.
  • Use templates as starting points — click Templates on the Workflows list page.