Wanderland

Advaita Service: nf-driver

nf-driver is the compute plane of the echo reference application — the Nextflow driver image, launched on demand as a one-shot Kubernetes Job by echo-backend. The driver runs the fibfizz workflow with the Kubernetes executor, spawning a task pod per process, and its baked-in nf-foxfire plugin signs each lifecycle event and ships it to foxfire. It is built and pushed to ECR but never deployed as a long-lived workload.

What it does

Why it exists

It is the workload the launcher fires and the receiver observes — the async compute plane that produces provenance and billing data. Only the driver holds the signing key; task pods never see it and never call foxfire.

How it works

Deployment (k8s)

Configuration

Local build

vivarta-drones/scenarios/apps/foxfire/nf-driver-build.yml scripts the OrbStack-local build: rsync the nf-foxfire working copy to $WORKSPACE/nf-foxfire (the checkout-extra sibling, a real copy since Docker won't follow a symlink), then docker build -f driver/Dockerfile. The plugin is pinned nf-foxfire@0 in nextflow.config. Validated via bin/drone run: the image builds, the plugin bakes into /opt/nextflow/plugins, and Nextflow loads it offline (NXF_OFFLINE=true) — proven with a trivial in-container pipeline that loads the plugin without a registry fetch.

Dependencies

Dependency Use
foxfire signed event sink (/events/signed)
nf-foxfire plugin JVM emit plugin baked into the image
nextflow-work RWX PVC shared Nextflow work dir
nextflow-runner SA spawn task pods
Kubernetes API create task pods (via nextflow-runner)
ECR image registry (advaita/nf-driver)

Dependents

Impact when down

A missing or unbuildable image leaves launched runs pending (ImagePullBackOff) — the piece the fe/be/foxfire bring-up waits on. A failed driver Job yields no telemetry for that run; other runs and the standing tiers are unaffected.

The code

Open questions