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_exithook 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:
| Field | Description |
|---|---|
id | Unique identifier within this recipe (e.g. "reproject") |
type | Executor type — must match a registered step_executor |
inputs | Maps executor input slot names to artifact references |
outputs | Maps executor output slot names to artifact references |
param_keys | Names 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 typesproduces— output slot names and their artifact typesparams— 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:
| Format | Meaning |
|---|---|
job:name | A job-level input artifact named name |
step:stepId.slotName | The 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.