Core ConceptsWorkflow JSON Format

Workflow JSON Format

A BioNodulo workflow is just data — a JSON document describing nodes, their parameters, and the edges between them. Because the format is plain JSON, you can version it in git, diff it in code review, generate it programmatically, and re-run it months later with identical results.

Top-level shape

{
  "version": "1",
  "name": "Germline variant calling (chr20)",
  "nodes": [
    {
      "id": "fastq_in",
      "type": "io.fastq_input",
      "params": { "r1": "reads_1.fastq.gz", "r2": "reads_2.fastq.gz" },
      "position": { "x": 80, "y": 120 }
    },
    {
      "id": "bwa",
      "type": "align.bwa_mem",
      "params": { "threads": 8, "readGroup": "@RG\\tID:s1\\tSM:sample1" },
      "position": { "x": 360, "y": 120 }
    }
  ],
  "edges": [
    {
      "id": "e1",
      "source": "fastq_in",
      "sourcePort": "reads",
      "target": "bwa",
      "targetPort": "reads"
    }
  ],
  "meta": {
    "createdAt": "2026-01-01T00:00:00Z",
    "engine": ">=1.0.0"
  }
}

Fields

FieldDescription
versionSchema version of the workflow document.
nameHuman-readable workflow name.
nodes[]Each node’s id, type, params, and canvas position.
nodes[].typeFully-qualified node type (category.tool).
nodes[].paramsParameter values keyed by parameter name.
edges[]Connections: source/target node ids and their ports.
metaProvenance, engine constraints, and other metadata.

Reproducibility notes

  • Pin node versions. When you reference registry nodes, the resolved version is recorded so the same code runs every time.
  • Inputs are referenced, not embedded. Large datasets are referenced by handle/path; the document stays small and diffable.
  • Engine constraints. meta.engine records the minimum engine version a workflow needs, so an old graph won’t silently run on an incompatible engine.

Importing & exporting

  • Export from the editor’s menu to download the JSON.
  • Import by dragging a .json file onto the canvas or via New → Import.
  • Use the REST API to create and run workflows programmatically from the same JSON.