Harmont docs
Pipeline DSL

Pipeline DSL

Python, Scheme, JSON. Three layers, one contract.

A Harmont pipeline goes through three forms before it runs:

  1. Python — what you write. from harmont import pipeline, command, ... Decorators and helpers. See Python.
  2. Scheme — what the Python transpiles to. s-expressions consumed by the s7 interpreter. You can write Scheme directly if you prefer. See Scheme.
  3. JSON — what harmont-eval emits and harmont-api consumes. Stable contract: {"version": "1", "steps": [...]}. See JSON contract.

Why three? Process isolation: harmont-eval is a subprocess, not a library. The JSON contract is the only thing that crosses the boundary, so a misbehaving DSL never crashes the API.