Pipelines and plugins

Reusable pipeline definitions (YAML/JSON DAGs) and an in-process plugin registry.

Plugin registry

List plugins:

GET /api/plugins
GET /api/plugins/trainer/ultralytics

Built-in types include trainers, exporters, validators, splitters, and auto-labelers. Third-party packages can register via the oneopen.plugins entry-point group (type:name → factory).

Pipeline schema

A pipeline is a named list of steps with optional depends_on:

name: CV Quick Path
version: 1
description: Validate, split, export
steps:
  - id: validate
    type: image_validation
  - id: split
    type: stratified_split
    depends_on: [validate]
    params:
      train: 0.7
      validation: 0.2
      test: 0.1
  - id: export
    type: yolo_export
    depends_on: [split]

Validation rejects missing dependencies and cycles. With strict: true, unknown step types are rejected.

CRUD and YAML

Method

Path

POST

/api/pipelines

GET

/api/pipelines?project_id=

GET/PUT/DELETE

/api/pipelines/{id}

POST

/api/pipelines/validate

POST

/api/pipelines/validate-yaml

POST

/api/pipelines/from-yaml

GET

/api/pipelines/{id}/yaml

Running a pipeline

POST /api/pipelines/{id}/run
{"project_id": 1, "version_id": null}

Executed step types: image_validation, data_cleaning, stratified_split, yolo_export, ultralytics_training, active_learning_select.

Skipped by the current runner: local_folder_import, human_review, yolo_auto_annotation, augmentation.

Runs are stored and listed via /api/pipelines/{id}/runs and /api/pipeline-runs/{id}.

UI

Open a project → Pipelines tab:

  • Visual editor — drag steps from the palette, connect with Shift-drag (or Link mode), save/run

  • Or paste YAML, validate, and Open in editor

  • Create from the PPE example

Step positions are stored in each step’s ui: {x, y} field (ignored by the runner).