Skip to content
Documentation

Workflow engine

Cordum workflows are DAGs stored in Redis. The engine advances ready steps when dependencies succeed, persists run and step state, and writes an append-only run timeline that powers API and dashboard views.

Dedicated handlers
workerapprovalconditiondelaynotifytransformstorageswitchparallelloopsubworkflow
Generic job-dispatch fallback
llmhttpcontainerscriptinput

Any step may also setfor_eachto fan out over an array. That field is not its own step type.

Execution model

workflow.yaml
name: deploy.pipeline
steps:
  lint:
    type: worker
    topic: job.ci.lint

  build:
    type: worker
    topic: job.ci.build
    depends_on: [lint]

  approve:
    type: approval
    depends_on: [build]

  deploy:
    type: worker
    topic: job.ci.deploy
    depends_on: [approve]
  • Independent steps can run in parallel when they have no unresolved dependencies.
  • Approval steps dispatch a gate job and hold the run until an operator approves or rejects it.
  • Reruns, dry-runs, and timeline reads are exposed through /api/v1/workflow-runs/* routes.

Expressions and templates

  • input.customer.id
  • ctx.session.region
  • steps.validate.output.ok == true
  • length(input.items) > 0
  • "ticket-${input.case_id}"

The current evaluator supports literals, path lookups, comparisons, unary boolean negation, and helper functions such aslength()andfirst().