Skip to content

Bring your own pipeline

The pipeline launcher isn’t limited to nf-core — an org admin can add any public GitHub repo that follows the standard nf-core layout, and it gets the same point-and-click parameter form, revision picker, and test mode as the official pipelines.

  • A public GitHub repo — owner/repo. That’s the only hosting we support today.
  • At least one GitHub Release (not a tag — an actual release, non-draft, non-prerelease). The launcher’s version dropdown lists your releases, newest first.
  • nextflow_schema.json at the repo root, in the nf-core schema format. This is what the parameter form is built from.
  • main.nf at the repo root (or a manifest.mainScript entry in nextflow.config pointing at your entrypoint).

Optionally, a test profile in your nextflow.config — that’s what powers the Test mode toggle, so users can shake the pipeline down on a tiny dataset before committing real data.

If you already have a pipeline built from the nf-core template, you’re done — skip to Add it to your catalog.

The nf-core template gives you all of the above for free, and it works for private organisations too — pick Custom as the pipeline type and it scaffolds under your own org prefix, skipping the nf-core-specific branding and CI.

Terminal window
uv init .
uv add nf-core
uv run nf-core pipelines create

Put your workflow logic in main.nf / workflows/ as usual.

Don’t hand-edit nextflow_schema.json — build it:

Terminal window
uv run nf-core pipelines schema build

This opens an interactive editor that writes the schema for you. Everything in it maps directly onto the launcher form:

  • Required params become required fields — launch is blocked until they’re set.
  • Grouped params ($defs sections) render as collapsible groups, in allOf order.
  • type, enum, default, and description drive the input widgets and help text.
  • Params with format: file-path or directory-path get a Browse… button into the user’s pipeline bucket, plus drag-and-drop upload.
  • --outdir is handled by the launcher itself — leave it in the schema, users never fill it in manually.

Push to GitHub and cut a release:

Terminal window
gh release create v1.0.0 --title "v1.0.0" --notes "First release"

Each new release shows up in the launcher’s version dropdown automatically (allow up to a few hours for caching).

In the console, open Pipelines → + New pipeline, paste owner/repo, and optionally give it a display name. The pipeline appears on your org’s catalog page immediately — visible to your org only.