> For the complete documentation index, see [llms.txt](https://help.fovus.co/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.fovus.co/docs/pipeline/miniwdl/miniwdl-submission/prepare-inputs.md).

# Prepare inputs and configure WDL

Upload large shared inputs to Fovus Storage and configure inputs.json and runtime{} with Fovus Tokens before submitting.

This page covers two preparation steps: uploading large shared inputs to Fovus Storage so every task can read them efficiently, and configuring `inputs.json` and `runtime{}` with Fovus Tokens.

See [Pipeline overview](/docs/pipeline/pipeline-overview.md) for how Pipelines differ from Jobs and when to choose a workflow manager.

## Upload large input files

Large shared inputs — reference genomes, shared datasets — should live under the storage mount point before you run the pipeline (`/fovus-storage/pipelines` by default for `miniwdl-fovus run`, or wherever you mounted storage when [driving miniwdl directly](/docs/pipeline/miniwdl/miniwdl-submission/local-manager.md)). Upload once to this folder and every task reads the same path, avoiding a per-task copy of multi-gigabyte files.

Small files (scripts, sample sheets, params) can ship alongside the WDL and pass through `inputs.json` without a separate upload step.

{% columns %}
{% column %}
**Upload to the storage mount when:**

* The file is large
* Many tasks read the same path
* Copying into every task's working directory would waste I/O
  {% endcolumn %}

{% column %}
**Skip a separate upload when:**

* Files are small
* You only need paths already under the storage mount
  {% endcolumn %}
  {% endcolumns %}

For large files, avoid `remoteInputsForAllTasks` — it copies into every task working directory. Pre-stage once under the storage mount instead. See [remoteInputsForAllTasks](/docs/pipeline/miniwdl/miniwdl-config-reference.md) in the config reference for the small-file case.

{% tabs %}
{% tab title="Fovus CLI" %}

```bash
fovus pipeline upload LOCAL_PATH [FOVUS_PATH]
```

* `LOCAL_PATH` — local file or folder to upload
* `FOVUS_PATH` — optional relative path under the storage mount

Example:

```bash
fovus pipeline upload /data/genome-data/ genome-data/
```

Files are available at `/fovus-storage/pipelines/genome-data/`.
{% endtab %}

{% tab title="Mounted storage" %}
If [Fovus Storage is mounted locally](/docs/storage/mount-storage-locally.md), copy files using any standard tool:

```bash
cp -r /data/genome-data/ /fovus-storage/pipelines/genome-data/
```

Or with `rsync` if available:

```bash
rsync -avh /data/genome-data/ /fovus-storage/pipelines/genome-data/
```

{% endtab %}
{% endtabs %}

### To use uploaded files in your workflow

Treat files under the storage mount like any path on Fovus Storage — pass the absolute path in through a `File` input:

```json
{
  "align.ref": "/fovus-storage/pipelines/genome-data/GRCh38.fa"
}
```

## Configure inputs.json and runtime{}

Fovus Tokens (`benchmarkingProfileName`, `minvCpu`, `maxvCpu`, `minvCpuMemGiB`, `walltimeHours`, and the rest of the [attribute table](/docs/pipeline/miniwdl/miniwdl-config-reference.md)) are set as keys in a task's `runtime{}` block. To make a value overridable per run without editing the WDL file, declare it as a workflow input, pass it into the task call, and reference that input as the `runtime{}` value:

```wdl
version 1.0

workflow align_workflow {
    input {
        File reads
        File ref

        String benchmarkingProfileName = "Default CPU"
        Int minvCpu = 4
        Int minvCpuMemGiB = 16
    }

    call align {
        input:
            reads = reads,
            ref = ref,
            benchmarkingProfileName = benchmarkingProfileName,
            minvCpu = minvCpu,
            minvCpuMemGiB = minvCpuMemGiB,
    }

    output {
        File aligned = align.aligned
    }
}

task align {
    input {
        File reads
        File ref
        String benchmarkingProfileName
        Int minvCpu
        Int minvCpuMemGiB
    }

    command <<<
        bwa mem -t $FovusNodeVcpu ~{ref} ~{reads} > aligned.sam
    >>>

    output {
        File aligned = "aligned.sam"
    }

    runtime {
        docker: "biocontainers/bwa:latest"
        benchmarkingProfileName: benchmarkingProfileName
        minvCpu: minvCpu
        minvCpuMemGiB: minvCpuMemGiB
    }
}
```

Then override any of those values per run in `inputs.json`, without touching the WDL file:

```json
{
  "align_workflow.reads": "/fovus-storage/pipelines/genome-data/sample.fastq",
  "align_workflow.ref": "/fovus-storage/pipelines/genome-data/GRCh38.fa",

  "align_workflow.benchmarkingProfileName": "Default CPU",
  "align_workflow.minvCpu": 8,
  "align_workflow.minvCpuMemGiB": 32
}
```

Any Fovus Token you omit from `inputs.json` falls back to the WDL-declared default, or — if the WDL doesn't declare one — to your Fovus account's default job config for the chosen `benchmarkingProfileName`.

{% hint style="warning" %}
Keep these overrides at the `<workflow_name>.<input_name>` level, as shown above. `miniwdl-fovus run` also scans `inputs.json` for a separate, task-scoped key shape (`<workflow_name>.<task_name>.<attribute>`) used for pre-configuring benchmarking ahead of submission — see [Run with local miniwdl-fovus run](/docs/pipeline/miniwdl/miniwdl-submission/local-manager.md#pre-configuring-benchmarking) for that pattern and the naming collision to avoid.
{% endhint %}

For the complete Fovus Token list and their Fovus job-config field mappings, see the [miniWDL configuration reference](/docs/pipeline/miniwdl/miniwdl-config-reference.md).

## Choose how to run

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h4><i class="fa-terminal" style="color:$primary;">:terminal:</i> Run with local miniwdl-fovus run</h4></td><td>Prerequisites, submission commands, and stop/resume behavior.</td><td><a href="/docs/pipeline/miniwdl/miniwdl-submission/local-manager.md">Run with local miniwdl-fovus run</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.fovus.co/docs/pipeline/miniwdl/miniwdl-submission/prepare-inputs.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
