> 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/local-manager.md).

# Run with local miniwdl-fovus run

Prerequisites, submission commands, and stop/resume behavior for miniwdl-fovus run.

Run `miniwdl run` (directly, or via the bundled `miniwdl-fovus run` wrapper) on your machine or [Fovus Workstation](/docs/workstation/launch-workstation.md). It drives orchestration locally; Fovus executes each task as a cloud job.

{% hint style="warning" %}
The `miniwdl run` process must keep running for the entire pipeline. If the terminal closes, the host loses network connectivity, or the host shuts down, the pipeline stops. For unattended runs, use [Fovus-hosted execution](/docs/pipeline/miniwdl/miniwdl-submission/fovus-hosted-manager.md).
{% endhint %}

## When to use local manager mode

| Situation                                    | Recommendation                                                                    |
| -------------------------------------------- | --------------------------------------------------------------------------------- |
| Developing or testing a new pipeline         | Local manager — fast iteration, full terminal output                              |
| Short pipelines that finish in one session   | Local manager                                                                     |
| Pipeline must continue if your laptop sleeps | [Fovus-hosted](/docs/pipeline/miniwdl/miniwdl-submission/fovus-hosted-manager.md) |
| Unattended or overnight runs                 | [Fovus-hosted](/docs/pipeline/miniwdl/miniwdl-submission/fovus-hosted-manager.md) |

## Prerequisites

* A Fovus account, and the workspace's storage mount already provisioned (or provisionable via `fovus storage mount`).
* Python 3.9+ and `pip`, on a host that can FUSE-mount the Fovus shared filesystem.
* Task container images pullable from wherever `runtime.docker` points — Fovus pulls and runs them on its own compute nodes, so local Docker is not required on the submitting host.
* `hello.wdl` / your workflow and `inputs.json` prepared — see [Prepare inputs and configure WDL](/docs/pipeline/miniwdl/miniwdl-submission/prepare-inputs.md).

## Submit a pipeline

{% tabs %}
{% tab title="miniwdl-fovus run (recommended)" %}
The wrapper authenticates, mounts shared storage, creates one Fovus pipeline for the run, and execs `miniwdl run` with the right config and run directory:

```bash
miniwdl-fovus run my-workflow.wdl -i inputs.json --pipeline-name my-run
```

All unrecognized arguments pass straight through to `miniwdl run`.

| flag                     | default                                   | effect                                                              |
| ------------------------ | ----------------------------------------- | ------------------------------------------------------------------- |
| `--pipeline-name`        | derived, e.g. `miniwdl-<dir>-<timestamp>` | Name for the Fovus pipeline.                                        |
| `--project-name`         | *(none)*                                  | Fovus project to tag the pipeline/jobs with.                        |
| `--benchmarking-profile` | `Default CPU`                             | Default profile for tasks that don't set `benchmarkingProfileName`. |
| `--storage-mount-point`  | `/fovus-storage/pipelines`                | Shared storage mount; mounted automatically if not already.         |
| `--debug`                | off                                       | Write a Fovus debug log to `.fovus/<timestamp>-<pid>.log`.          |

In order, the wrapper: verifies `fovus auth`, mounts storage if needed, creates one pipeline for the run (or reuses `FOVUS_PIPELINE_ID` if already set), then execs `python -m WDL run` with `--cfg` / `--dir` filled in if you didn't pass them, and marks the pipeline `COMPLETED` / `FAILED` on exit.
{% endtab %}

{% tab title="Drive miniwdl directly" %}
Once storage is mounted and auth is set up, skip the wrapper:

```bash
fovus storage mount /fovus-storage
miniwdl run my-workflow.wdl -i inputs.json \
    --cfg $(python -c "import miniwdl_fovus,os;print(os.path.join(os.path.dirname(miniwdl_fovus.__file__),'fovus.cfg'))") \
    --dir /fovus-storage/miniwdl_run
```

The run directory (`--dir`) **must** live under the storage mount point — that's what makes `container_dir == host_dir` work.
{% endtab %}
{% endtabs %}

## Pre-configuring benchmarking

Separate from `runtime{}` attributes, `miniwdl-fovus run` also scans `inputs.json` for a second, task-scoped key shape and uses matches to pre-configure benchmarking before the run starts, so Fovus can prepare resources ahead of job submission:

```json
{
  "smoke.produce.minvCpu": 4,
  "smoke.produce.walltimeHours": 2,
  "smoke.consume.benchmarkingProfileName": "Default CPU"
}
```

The key shape is `<workflow_path>.<task_name>.<attribute>` — three segments, using the same Fovus Token names as the `runtime{}` table in the [configuration reference](/docs/pipeline/miniwdl/miniwdl-config-reference.md). Keys that don't match a registered attribute name in that position (e.g. ordinary workflow inputs like `smoke.name`) are ignored, so this can live in the same `inputs.json` as your workflow inputs without any special handling.

{% hint style="warning" %}
**Naming gotcha:** because the scan matches on the trailing key segment alone, any `inputs.json` key that sits at a `<task>.<name>` position (two segments after the workflow name) and happens to match a Fovus Token name — `minvCpu`, `walltimeHours`, etc. — will be swept into this pre-config pass. Route resource values through a workflow-level input and pass them into the task call by name instead (as shown in [Prepare inputs and configure WDL](/docs/pipeline/miniwdl/miniwdl-submission/prepare-inputs.md)) — that keeps the corresponding `inputs.json` key at `<workflow_path>.<attribute>` (two segments), which doesn't match this pattern.
{% endhint %}

## Stop or resume

* **Stop:** press `Ctrl+C` in the `miniwdl run` / `miniwdl-fovus run` terminal. With `auto_stop_pipeline_on_exit` (the default), the Fovus pipeline is marked `FAILED` and stopped, cancelling the in-flight job.
* There is no **Stop** or **Resume** control in the Fovus UI for local manager pipelines — those UI controls exist only for [Fovus-hosted](/docs/pipeline/miniwdl/miniwdl-submission/fovus-hosted-manager.md) pipelines. For local manager mode, control is entirely from the local process.

## Monitor results

To review jobs, files, and cost in Fovus after submission, see [Monitor your pipeline](/docs/pipeline/monitor-manage/pipeline-monitoring.md). Run with `--debug` for a full log of every `fovus` CLI invocation.

For error messages and troubleshooting, see the [miniWDL configuration reference](/docs/pipeline/miniwdl/miniwdl-config-reference.md#troubleshooting).


---

# 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/local-manager.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.
