nf-lakefs @ 0.7.0
Summary
This plugin integrates Nextflow with lakeFS, allowing you to use lakefs:// URIs as inputs and outputs in your pipelines. It brings the power of data versioning, reproducibility, and atomic operations to your Nextflow workflows. The plugin treats lakeFS repositories and branches as a native file system, enabling seamless data management without requiring manual pre-loading or post-processing steps.
Key Features:
- Native URI Support: Use
lakefs://<repo>/<branch>/<path>URIs directly in your Nextflow scripts andnextflow.config - Read Inputs: Stage input files from a lakeFS repository for use in your processes
- Publish Outputs: Publish output files from your processes directly to a lakeFS repository branch
- Transparent Authentication: Securely configure your lakeFS credentials
- Multiple Transfer Modes: Support for both
signed_urlandphysical_pathmodes - Auto-commit Support: Automatically commit changes on successful workflow completion
Get Started
Installation
Add the following to your nextflow.config file. Replace <version> with the desired plugin version (e.g., 0.1.0):
plugins {
id 'nf-lakefs@<version>'
}
Configuration
Configure the plugin with your lakeFS server details and credentials in your nextflow.config:
lakefs {
apiUrl = 'https://your-lakefs-server.example.com/api/v1'
accessKey = 'YOUR_LAKEFS_ACCESS_KEY'
secretKey = 'YOUR_LAKEFS_SECRET_KEY'
transferMode = 'signed_url'
autoCreateBranch = false
autoCreateBranchSource = 'main'
}
Configuration Options:
| Option | Required | Default | Description |
|---|---|---|---|
apiUrl |
Yes | - | lakeFS API endpoint URL (must end with /api/v1) |
accessKey |
Yes | - | lakeFS access key |
secretKey |
Yes | - | lakeFS secret key |
transferMode |
No | signed_url |
Transfer mode: signed_url or physical_path |
autoCreateBranch |
No | false |
Automatically create branch if it doesn't exist when writing |
autoCreateBranchSource |
No | main |
Source branch to create new branches from |
readTimeout |
No | 60s |
HTTP read timeout for lakeFS API calls |
connectTimeout |
No | 30s |
HTTP connect timeout for lakeFS API calls |
allowedSchemaBucketsForLinking |
No | [] |
Whitelist of cloud storage scheme+bucket prefixes (e.g. s3://bucket, gs://bucket) allowed as link sources when the source bucket differs from the repository's backing bucket |
autoCommit |
No | false |
Automatically commit the branch backing the workflow output directory once the workflow completes successfully |
For S3-backed repositories with physical_path mode, also configure AWS credentials:
aws {
accessKey = '<AWS_ACCESS_KEY_ID>'
secretKey = '<AWS_SECRET_ACCESS_KEY>'
region = 'eu-central-1'
}
Auto-Create Branch Example
When autoCreateBranch is enabled, new branches are automatically created if they don't exist:
lakefs {
apiUrl = 'https://your-lakefs-server.example.com/api/v1'
accessKey = 'YOUR_LAKEFS_ACCESS_KEY'
secretKey = 'YOUR_LAKEFS_SECRET_KEY'
autoCreateBranch = true
autoCreateBranchSource = 'main'
}
Writing to lakefs://my-repo/new-branch/file.txt will automatically create new-branch from main if it doesn't already exist.
allowedSchemaBucketsForLinking Configuration
When using the physical_path transfer mode with different backing storage, whitelist compatible cloud storage backends:
lakefs {
allowedSchemaBucketsForLinking = [
'gs://bucket1',
'gs://bucket2'
]
}
Or for S3-backed repositories:
lakefs {
allowedSchemaBucketsForLinking = [
's3://bucket1',
's3://bucket2'
]
}
Examples
Basic Pipeline with lakeFS Input and Output
Create a main.nf pipeline that reads a file from a lakeFS repository, processes it, and publishes the result:
params.input = 'lakefs://my-repo/main/path/to/**/config.yaml'
params.output_dir = 'lakefs://my-repo/output/path/to/'
process EXAMPLE_PROCESS {
input:
path my_file
output:
path 'result.txt'
script:
"""
echo "Processing ${my_file}..."
cat "${my_file}" | wc -l > result.txt
"""
}
workflow {
Channel.fromPath(params.input, type: 'file')
| view
| EXAMPLE_PROCESS
}
Run the pipeline:
nextflow run main.nf
Automatic Commit on Workflow Completion
Enable automatic commits by setting autoCommit = true in your configuration:
lakefs {
apiUrl = 'https://your-lakefs-server.example.com/api/v1'
accessKey = 'YOUR_LAKEFS_ACCESS_KEY'
secretKey = 'YOUR_LAKEFS_SECRET_KEY'
autoCommit = true
}
outputDir = 'lakefs://my-repo/output-branch/path/to/'
Run the pipeline with a commit message:
nextflow run main.nf --lakefs_commit_message "my commit message"
Manual Commit Control
For finer-grained control, use the lakefsCommit() function to commit specific branches:
workflow.onComplete {
if (workflow.success) {
lakefsCommit(params.output_dir, params.lakefs_commit_message)
}
}
The path parameter can be any lakefs://<repo>/<branch>/... URI; only the repository and branch components are used. The function returns the created commit ID.
License
This Nextflow plugin is distributed under the Apache 2.0 License.
| Nextflow version | >=25.10.6 |
|---|---|
| Depends On | - |
| Release Date | 23 Sep 2026 17:10:07 (UTC) |
| Release Notes | - |
| Download URL | https://registry.nextflow.io/api/v1/plugins/nf-lakefs/0.7.0/download/nf-lakefs-0.7.0.zip |
| Store URL | https://public.cr.seqera.io/v2/nextflow/plugin/nf-lakefs/blobs/sha256:929eaff7418b2da7990a90451c99de9f9f0c29e4f883e30949bb3741255e2bdb |
| Size | 7.0 MB |
| Checksum | aa80bc5b842079fa252c0406d0989a5f8868697ef80300e5706b7e71d99f8e0647a8dd10ae755169d6df8893cb27f9d16142c574fbac0c735834900928cd82dd |
| Total downloads | 10 View trends |
| Security Scan |
| Version | Nextflow version | Date | Status | Downloads |
|---|---|---|---|---|
| 0.7.0 | >=25.10.6 | 23 Sep 2026 17:10:07 (UTC) | 10 | |
| 0.6.1 | >=25.10.6 | 28 Jun 2026 21:04:38 (UTC) | 81 | |
| 0.6.0 | >=25.10.4 | 25 Jun 2026 23:32:42 (UTC) | 3 | |
| 0.5.0 | >=25.04.0 | 03 Jun 2026 10:40:08 (UTC) | 745 | |
| 0.4.1 | >=25.04.0 | 08 Feb 2026 15:09:40 (UTC) | 835 | |
| 0.4.0 | >=25.04.0 | 07 Feb 2026 23:26:44 (UTC) | 465 | |
| 0.3.4 | >=25.04.0 | 06 Feb 2026 18:30:33 (UTC) | 5 | |
| 0.3.3 | >=25.04.0 | 20 Jan 2026 21:24:16 (UTC) | 292 | |
| 0.3.2 | >=25.04.0 | 20 Jan 2026 20:29:37 (UTC) | 5 | |
| 0.3.1 | >=25.04.0 | 22 Dec 2025 18:27:40 (UTC) | 395 | |
| 0.3.0 | >=25.04.0 | 16 Dec 2025 22:36:36 (UTC) | 83 | |
| 0.2.2 | >=25.10.0 | 06 Dec 2025 17:23:47 (UTC) | 161 | |
| 0.2.1 | >=25.04.0 | 03 Nov 2025 20:18:00 (UTC) |