Skip to content

Adding apple-container as a new executor#7066

Closed
Joon-Klaps wants to merge 1 commit intonextflow-io:masterfrom
Joon-Klaps:apple-containers-executor
Closed

Adding apple-container as a new executor#7066
Joon-Klaps wants to merge 1 commit intonextflow-io:masterfrom
Joon-Klaps:apple-containers-executor

Conversation

@Joon-Klaps
Copy link
Copy Markdown
Contributor

(Attemps to) Adress #7064

Claude* and I have tried to implement the container as a new executor and as a mini project to learn more about apple containers and nextflow.

Changes

  • New apple container engine (apple { enabled = true }) and apple_container executor
  • CLI flag -with-apple-container (analogous to -with-docker)
  • Cross-architecture support: when process.arch = 'x86_64', emits --platform linux/amd64 --rosetta so x86_64 images run via Rosetta
  • Wave compatibility: apple added to the DOCKER_LIKE engines list in WaveContainerResolver, since Apple uses the same OCI format as Docker

Testing

Tested on Apple Silicon (macOS) with the Apple container CLI installed.

nf-core/rnaseq with Wave (recommended):

NXF_PLUGINS_MODE=prod NXF_PLUGINS_DIR=$HOME/.nextflow/plugins \
  ./launch.sh run nf-core/rnaseq \
    -profile 'test',wave,arm64 \
    -with-apple-container \
    --outdir ./test-output

Pipeline ran end-to-end successfully (51+ processes, containerEngine: apple shown in run summary).

Simple pipeline without Wave:

./launch.sh run nextflow-io/rnaseq-nf -with-apple-container -c custom.config

Where custom.config contained process.arch = 'x86_64' as container assumes the container is linux/arm64.

*I mention claude as a declaration of the use of AI and that it has heavily assisted me in the development of the code & docs of this PR

@Joon-Klaps Joon-Klaps requested a review from a team as a code owner April 23, 2026 14:17
@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 23, 2026

Deploy Preview for nextflow-docs-staging ready!

Name Link
🔨 Latest commit dcb34a0
🔍 Latest deploy log https://app.netlify.com/projects/nextflow-docs-staging/deploys/69ea2a09e278ca0008a672d4
😎 Deploy Preview https://deploy-preview-7066--nextflow-docs-staging.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@pditommaso
Copy link
Copy Markdown
Member

Thanks for the contribution but nor sure we need this

@Joon-Klaps
Copy link
Copy Markdown
Contributor Author

Hi @pditommaso, could you elaborate a bit more on this?

I would assume that reducing overhead would still be beneficial, even if small relative to task execution time. Is it because it doesn't translate into meaningful gains for large analyses (which would get run on HPC/cloud), or that macOS is mostly used for development, where such optimisations don’t matter as much?

@bentsherman
Copy link
Copy Markdown
Member

I would try to implement this in a plugin instead of adding it to core. Since you just need a local executor that uses the apple container runtime, it should be possible.

You already have the executor, you just need to use the apple container runtime "under the hood" instead of exposing it is a user-facing container runtime.

https://docs.seqera.io/nextflow/plugins/developing-plugins

@pditommaso
Copy link
Copy Markdown
Member

pditommaso commented Apr 23, 2026

I mean, as developer, what's benefits of this approach considering docker is mainstream ?

@pditommaso
Copy link
Copy Markdown
Member

I've thought a bit more about this, and I agree that could make sense supporting apple container, however as container engine not as an executor. Made an implementation here #7073. Thanks for opening this discussion.

Closing in favour of #7073

@pditommaso pditommaso closed this Apr 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants