Files
ma/nextflow/docs/modules/module-registry.md
2026-04-29 23:01:54 +02:00

176 lines
5.2 KiB
Markdown

(module-registry-page)=
# Nextflow module registry
:::{versionadded} 26.04.0
:::
The [Nextflow module registry](https://registry.nextflow.io) is a central repository for sharing Nextflow modules.
It provides module discovery, version tracking, and integrity verification.
The module registry shares its login, access tokens, and web interface with the {ref}`Nextflow plugin registry <plugin-registry-page>`.
(module-registry-claim)=
## Claiming a namespace
A namespace is an organizational prefix (e.g., the namespace `nf-core` owns modules like `nf-core/fastqc` and `nf-core/samtools`).
As a namespace member, you can publish new modules and release new versions under that prefix.
Each namespace can have multiple members who share publishing rights.
To claim a namespace:
1. Open the [Nextflow module registry](https://registry.nextflow.io/) in a browser.
2. Log in to [Seqera](https://cloud.seqera.io/login) with your GitHub or Google account, or by providing an email address.
:::{note}
If you are logging in for the first time, Seqera sends an authentication link to your email address to complete the login process.
:::
3. Go to **My Resources** and select the **My Namespaces** tab.
4. Select **Claim Namespace**
4. Enter your **Namespace name**, **Organization**, **Project URL**, and a **Description**.
5. Select **Submit Request**.
The namespace shows as **PENDING REVIEW** until an administrator approves the request.
Admin approval is required only once.
Once approved, you can publish modules using the `nextflow module publish` command.
(module-registry-access-token)=
## Creating an access token
An API access token is required to publish modules to the registry.
To create an API access token:
1. Open the [Nextflow module registry](https://registry.nextflow.io/) in a browser.
2. Log in to [Seqera](https://cloud.seqera.io/login) with your GitHub or Google account, or by providing an email address.
:::{note}
If you are logging in for the first time, Seqera sends an authentication link to your email address to complete the login process.
:::
3. Go to **My Resources** and select the **My access tokens** tab.
4. Under **Create New Access Token**, enter a descriptive name for the **Token name** and select a token duration from the **Expiry** drop down.
5. Select **Generate Token**.
6. Copy the token and store it somewhere safe.
You cannot view it again after this step.
Once you have your token, see [Publishing modules](#publishing-modules) for instructions on how to use it.
## Viewing modules
View the modules you have published in the registry:
1. Open the [Nextflow module registry](https://registry.nextflow.io/) in a browser.
2. Log in and go to **My Resources**.
3. Select the **My Modules** tab.
The page lists all modules published under your namespaces, along with their versions and status.
(publish-modules)=
## Publishing modules
Publishing requires a {ref}`claimed namespace <module-registry-claim>` and an {ref}`access token <module-registry-access-token>`.
Provide your registry token in one of two ways:
**Environment variable:**
```console
$ export NXF_REGISTRY_TOKEN=<token>
```
**Nextflow configuration:**
```groovy
registry {
apiKey = '${MYORG_TOKEN}'
}
```
Use the `module publish` command to upload a module to the registry:
```console
$ nextflow module publish myorg/my-module
```
The module directory must include the following files:
- `main.nf`: The module script.
- `meta.yml`: The module spec with name, version, description, and license.
- `README.md`: Module documentation.
Provide a `namespace/name` reference or a relative path to the module directory.
:::{tip}
Before publishing, verify your module is ready:
- Run {ref}`module spec <cli-module-spec>` to generate or update `meta.yml` from your `main.nf`.
- Run {ref}`module validate <cli-module-validate>` to check that all required files and spec fields are present.
See {ref}`dev-modules-page` for a complete guide on creating modules.
:::
See {ref}`module publish <cli-module-publish>` for the full command reference.
## Registry configuration
By default, Nextflow uses the public registry at `https://registry.nextflow.io`.
Configure alternative or additional registries using the `registry` scope in your Nextflow configuration.
### Use a private registry
Replace the default registry with your organization's private registry:
```groovy
registry {
url = 'https://registry.myorg.com'
apiKey = '${MYORG_TOKEN}'
}
```
Nextflow uses this registry for all module operations (search, install, and publish).
### Use multiple registries
Specify multiple registries as a list.
Nextflow queries them in order when searching for or installing a module:
```groovy
registry {
url = [
'https://registry.myorg.com',
'https://private.registry.nextflow.io'
]
apiKey = '${MYORG_TOKEN}'
}
```
In this example, Nextflow searches the private registry first and falls back to the public registry.
:::{note}
The `apiKey` authenticates with the primary (first) registry.
:::
:::{tip}
Override the target registry with the `-registry` flag:
```console
$ export NXF_REGISTRY_TOKEN=<token>
$ nextflow module publish myorg/my-module -registry 'https://private.registry.myorg.com'
```
:::