Skip to content

Key Concepts

Recipe

A recipe is a named, versioned DAG (directed acyclic graph) definition. It describes a pipeline as a list of steps, where each step declares what it consumes and produces.

Recipes are identified by name + version together. If you submit a job with an inline recipe that matches an existing name+version, Ordo reuses it.

A recipe includes:

  • A list of steps forming the main pipeline
  • An optional on_exit hook that runs after the pipeline finishes

Recipes are stored in Ordo's recipe table and validated against registered executors at creation time.

Step

A step is a single unit of work within a recipe. Each step has:

FieldDescription
idUnique identifier within this recipe (e.g. "reproject")
typeExecutor type — must match a registered step_executor
inputsMaps executor input slot names to artifact references
outputsMaps executor output slot names to artifact references
param_keysNames of runtime params the job must supply

Executor

An executor (step_executor in the database) defines what a step type accepts and produces. It's the contract that recipes are validated against.

Each executor declares:

  • accepts — input slot names and their artifact types
  • produces — output slot names and their artifact types
  • params — optional runtime parameters

Executors are implemented as n8n workflows. See 04-executors/ for the full reference.

Artifact

An artifact is a named, typed, URI-referenced data object scoped to a job. Examples: a LAS file, an EPT directory, a JSON metadata file.

Artifacts flow through the DAG as named references. The name you give an artifact in a recipe is the name it has everywhere — there is no aliasing.

Artifact types: las, tif, ept, potree, copc, json.

Artifact reference

Artifact references are namespaced strings used in recipe step inputs and outputs:

FormatMeaning
job:nameA job-level input artifact named name
step:stepId.slotNameThe artifact produced by step stepId in slot slotName

See Artifact References for details.

Job

A job is an instance of a recipe with concrete inputs. When you submit a job, you provide:

  • A recipe (inline or by reference)
  • Input artifacts (the actual data to process)
  • Params (runtime values for steps that need them)
  • Optional output declarations (where to finalize artifacts in MinIO)

Ordo creates the job, validates everything, and inserts the step queue. Workers then pick up steps and execute them.

Job Output

A job output declaration maps a produced artifact to a final MinIO destination path. This is how you tell the system where to write results. Storage operations are performed by n8n after step completion; Ordo stores the declaration.

on_exit hook

The on_exit field in a recipe definition specifies a single step that runs after the main pipeline completes. It runs regardless of whether the main steps succeeded or failed. The canonical use is CALL_WEBHOOK — sending a notification once processing is done.