×

nf-blocks @ 0.7.0-beta.1

Provider: robsyme
Claimed: 26 Oct 2025 22:23:14 (UTC)
Description: `nf-blocks` is a Nextflow plugin that integrates with content-addressed storage (local or S3) and lineage tracking to replace traditional output directories, solving the problem of reproducible pipeline output management and traceability. It enables users to publish pipeline outputs into a versioned store with full lineage records and supports cloud environments like AWS Batch, making it valuable for research groups running complex bioinformatics workflows with nf-core pipelines.
Latest version: 0.7.0-beta.1
Total downloads: 767 View trends

Summary

nf-blocks is a Nextflow plugin that publishes pipeline outputs into a content-addressed store and records their lineage there. It owns the cas URI scheme, allowing users to configure outputDir = 'cas://lab' to send published files through the plugin into a content-addressed store instead of a traditional results/ directory. The plugin provides a lineage store for lineage.store.location = 'cas://lab', enabling Nextflow's lid:// records to live in the same store. It supports cloud environments (AWS Batch with S3), nf-core pipeline integration, and retention policies. The plugin is currently in beta (0.7.0-beta.1) and is built against Nextflow 26.04.6.

Get Started

Enable the plugin and configure both the lineage store and output directory to point at the same store alias:

plugins {
    id 'nf-blocks@0.7.0-beta.1'
}

lineage.enabled = true
lineage.store.location = 'cas://lab'   // alias of the writable member
outputDir = 'cas://lab'                // optional: unset, it is the lineage alias

cas {
    stores {
        lab {
            location = '/data/cas'     // the writable member
        }
    }
    resolve = ['lab']                  // optional; default is every alias, writable first
    asserted_by = 'anonymous'          // optional opaque label; never the OS user name
}

An alias must match ^[a-z][a-z0-9_-]{0,31}$ and must not parse as a content address. outputDir may be left out; when unset, it defaults to the alias in lineage.store.location. When set, it must name that alias, or the run aborts. Nextflow downloads the plugin from the Nextflow Registry the first time the pipeline runs.

When adding nf-blocks to another pipeline via a -c config file, note that a plugins { } block replaces the pipeline's own plugin list rather than adding to it. Repeat the pipeline's pinned plugins alongside nf-blocks to avoid Nextflow installing the latest release of each plugin.

Examples

Any pipeline with a workflow output block publishes into the store. With the configuration above, running a pipeline writes each published path under the store's coordinate tree:

/data/cas/coords/aligned/A/A.bam
/data/cas/qc/A/A_qc/summary.txt
/data/cas/nf/<run hash>/aligned/A/A.bam/.data.json

The lineage record for a published file names its coordinate rather than a work directory path:

{"kind":"FileOutput","spec":{"path":"cas://lab/aligned/A/A.bam", ...}}

To read outputs from another pipeline, configure a read-only member alongside your writable one:

plugins {
    id 'nf-blocks@0.7.0-beta.1'
}

manifest.name = 'downstream'

lineage.enabled = true
lineage.store.location = 'cas://mine'

cas {
    stores {
        mine { location = '/data/cas-downstream' }   // writable: this pipeline's own outputs
        lab  { location = '/data/cas' }              // the producer's store, read-only here
    }
    resolve = ['mine', 'lab']
}

Then use fromStore in your workflow:

include { fromStore } from 'plugin/nf-blocks'

workflow {
    main:
    picked  = channel.fromStore(selection: '<selection address>')
    aligned = channel.fromStore(run: 'latest', pipeline: 'cas-test-pipeline', output: 'aligned', where: [sample: 'B'])

    picked.mix(aligned).view()
}

For S3-based publishing with AWS Batch:

plugins {
    id 'nf-blocks@0.7.0-beta.1'
}

lineage.enabled = true
lineage.store.location = 'cas://lab'

workDir = 's3://my-work-bucket/work'
process.executor = 'awsbatch'
process.queue = 'my-queue'

aws {
    region = 'us-east-1'
    profile = 'my-profile'
}

cas {
    stores {
        lab { location = 's3://my-cas-bucket/cas' }
    }
    tmpDir = '/scratch/nf-blocks'
}

To browse a store, use:

nextflow plugin nf-blocks:explore

To manage content retention and cleanup:

nextflow plugin nf-blocks:prune --keep-last 3
nextflow plugin nf-blocks:prune --keep-last 3 --apply true
nextflow plugin nf-blocks:sweep
nextflow plugin nf-blocks:sweep --apply true

License

Apache License 2.0. See the COPYING file for details.

What's new

  • Status: beta - This is version 0.7.0-beta.1. Pin the version in plugins { } as breaking changes may occur before 1.0 release.
  • Milestone 4 (cloud): Any store member, including the writable one, can be a local directory or S3 location. Runs on AWS Batch publish into writable S3 members with optimized hashing (under Fusion, task nodes hash their own outputs; between S3 buckets, server-side copies compute SHA-256).
  • Milestone 5 (nf-core pipelines): Lineage recording from workflow output { } blocks only. Processes using publishDir are warned once; files are stored but counted as unjoined.
  • Milestone 6 (retention): Every run's content is a root by default and kept until released. Sweeps only delete released, unpinned content past its grace period.
  • Index Snapshot seeding: Large stores can seed their cache from Index Snapshots to avoid reading every block on cold starts.
  • Selections: Curate Output Items across runs into named groups via the explorer or command-line tools.

Breaking changes

  • The on-disk format (block kinds, the index, the Store Log) may change before version 1.0. Block address changes will include migrations, and existing stores retain their blocks since a block's address is its content.
  • In typed scripts (nextflow.enable.types = true), Nextflow 26.04.6 does not reach plugin channel factories through channel.fromStore until nextflow-io/nextflow#7694 is fixed. Call nextflow.Channel.fromStore(..., records: true) instead.
  • nf-blocks requires the nf-amazon plugin (>=3.9.2). If installed via local build into NXF_PLUGINS_DIR, manually install the dependency: nextflow plugin install nf-amazon@3.9.2.
Nextflow version >=26.04.6
Depends On nf-amazon@>=3.9.2
Release Date 15 Oct 2026 13:56:25 (UTC)
Release Notes -
Download URL https://registry.nextflow.io/api/v1/plugins/nf-blocks/0.7.0-beta.1/download/nf-blocks-0.7.0-beta.1.zip
Store URL https://public.cr.seqera.io/v2/nextflow/plugin/nf-blocks/blobs/sha256:32282e71e0e5459b414275c5e73f3b0c7bb3224a38698ef6f9b383c3f66334e9
Size 15.2 MB
Checksum c03edac4f41aa4bb152844a55ea8b5dae160a4e3ce64c414d61cb363b034a460472134b6522e78c23b222388e9245fa97770b5faee97a7e0e12f5f2c979dbfa3
Total downloads 40 View trends
Security Scan
Version Nextflow version Date Status Downloads
0.7.0-beta.1 >=26.04.6 15 Oct 2026 13:56:25 (UTC) 40
0.6.0-beta.1 >=26.04.6 14 Oct 2026 19:51:36 (UTC) 44
0.5.0-beta.1 >=26.04.6 01 Oct 2026 03:22:16 (UTC) 94
0.4.0-beta.1 >=26.04.6 01 Oct 2026 00:05:41 (UTC) 96
0.3.0-beta.2 >=26.04.6 30 Sep 2026 21:07:45 (UTC) 97
0.3.0-beta.1 >=26.04.6 30 Sep 2026 16:02:49 (UTC) 96
0.2.0-beta.1 >=26.04.6 30 Sep 2026 01:00:32 (UTC) 100
0.1.0-beta.2 >=26.04.6 28 Sep 2026 00:13:44 (UTC) 100
0.1.0-beta.1 >=26.04.6 28 Sep 2026 00:02:12 (UTC) 100