Skip to main content

Workflow Builder Guide

The Workflow Builder is a visual drag-and-drop editor for creating processing pipelines.

Nodes

Nodes are the building blocks of workflows. Each node performs one operation.

Node Types

  • Input Nodes (blue) — select files to process
  • Process Nodes (purple) — apply transformations (resize, texture generation, 3D conversion, etc.)
  • Output Nodes (green) — define where results go
  • Logic Nodes — conditional branching (If/Else, Switch, Split)

Adding Nodes

  1. Node Library (left panel) — browse by category, search by name
  2. Drag and Drop — drag a node from the library onto the canvas
  3. Context Menu — right-click a connection to insert a node inline

Connecting Nodes

Click an output port and drag to an input port. The builder validates connections — incompatible types show a warning.

Execution

Single Run

Click Run with files selected on input nodes.

Batch Mode

Select multiple files on an input node. Each file is processed independently through the workflow.

Monitoring

  • Per-run progress bar with rolling ETA based on the scheduler's prediction model (refines as upstream nodes finish).
  • Click any running node to open its live log tail (streamed from Redis as the worker writes).
  • Failed nodes show the error message inline; retry / skip / cancel options surface on hover.
  • Long-running batches show per-file status in the Build queue panel — open it from the canvas toolbar at any time.

Saving & Loading

  • Save — saves the current workflow version
  • Save As — creates a copy with a new name
  • Load — browse your saved workflows and versions
  • Import/Export — share workflows as JSON files

Edit Node Definitions

Click Edit (pencil icon) in the toolbar to manage node definitions:

  • View all registered nodes
  • See hardware variant build status
  • Trigger calibration runs (POST /node_definitions/{id}/calibrate)
  • Delete custom nodes

Automate it (API)

Anything you build visually can be driven over the API. A workflow is versioned — you run a specific version id.

BASE=https://dev-api.modtechlabs.com

# Get a Bearer token from your sk_ key (see /api-reference#authentication)
TOKEN=$(curl -s -X POST "$BASE/api-keys/token" -H "Content-Type: application/json" \
-d '{"api_key": "sk_your_key_here"}' | jq -r .access_token)
AUTH="Authorization: Bearer $TOKEN"

# Export a workflow as a ZIP bundle (back it up, diff it, or move it between tenants)
curl -s "$BASE/workflows/7/export" -H "$AUTH" -o my-workflow.zip

# Import that ZIP elsewhere (multipart upload)
curl -s -X POST "$BASE/workflows/import-zip" -H "$AUTH" \
-F "file=@my-workflow.zip"

# Run a saved version against input files
curl -s -X POST "$BASE/workflows/workflow-versions/42/run" -H "$AUTH" \
-H "Content-Type: application/json" -d '{"cog_ids": [123]}'

See Getting Started → Quickstart with the API for the full upload → run → poll → download loop in Python and JavaScript.

Versions

Every Save creates a new version of the workflow; Save As makes a copy under a new name. You can Load any saved workflow and pick an earlier version to open or run. (There's no in-place "rollback" button — load the older version and save it forward if you want to revert.)