Headless / CI Mode

The -run=MHABatch commandlet lets you run a full batch from the command line without opening the Unreal Editor UI. Feed it a manifest, collect the exit code, and integrate into any CI or automated pipeline.

Basic syntax

UnrealEditor-Cmd.exe YourProject.uproject ^
  -run=MHABatch ^
  -manifest="C:/path/to/batch.mhajson" ^
  -log

On Linux / macOS replace UnrealEditor-Cmd.exe with UnrealEditor-Cmd and use forward slashes for the manifest path.

Arguments

Argument Required Description
-manifest="<path>" Yes Absolute filesystem path to the .mhajson manifest to run.
-log Recommended Writes engine and plugin log output to stdout. Required for CI to capture progress and errors.
-logfile="<path>" No Redirect log output to a file instead of (or in addition to) stdout.
-nosplash No Suppresses the engine splash screen. Useful for cleaner CI output.
-nullrhi No Disables the GPU render backend. Do not use — the MetaHuman solver requires a real GPU. Included here only to document that it is not compatible.

Exit codes

Code Meaning
0 All jobs completed successfully. Artifacts are written and the manifest is updated.
1 One or more jobs failed or produced partial artifacts. The manifest records which jobs failed — re-run with Do Not Re-Process Solved Takes enabled to retry only the failed jobs.
2 Startup error — the commandlet could not initialize. Check that the manifest path is correct, required plugins are enabled in the host project, and the engine version matches the plugin build.

Log output

With -log active, the commandlet emits structured progress lines every 10 seconds:

[MHABatch] Starting batch — 12 jobs queued
[MHABatch] Job 1/12 "Scene01_Take03" — ProcessPerformance (tracking)... 34%
[MHABatch] Job 1/12 "Scene01_Take03" — ProcessPerformance (fitting)... 78%
[MHABatch] Job 1/12 "Scene01_Take03" — Complete (142s)
[MHABatch] Job 2/12 "Scene01_Take04" — ValidateInput...
...
[MHABatch] Batch complete — 11 succeeded, 1 failed
[MHABatch] Manifest saved: C:/path/to/batch.mhajson

Failed jobs log the stage at which they failed and the error message from the solver. All output is also written to the engine's default log at YourProject/Saved/Logs/UnrealEditor-Cmd.log.

Example: GitHub Actions step

- name: Run MHA batch
  run: |
    "C:/Epic Games/UE_5.7/Engine/Binaries/Win64/UnrealEditor-Cmd.exe" \
      "${{ github.workspace }}/MyProject.uproject" \
      -run=MHABatch \
      -manifest="${{ github.workspace }}/Saved/MHABatchProcessor/batch.mhajson" \
      -log -nosplash
  shell: cmd

Retry failed jobs

When a batch finishes with exit code 1, the manifest on disk contains the artifact state for every job. To retry only the failures:

  1. Open the manifest in the editor (File → Load Manifest in the batch panel).
  2. Enable Do Not Re-Process Solved Takes in Global Settings.
  3. Click Start Batch (or re-run the commandlet with the same manifest).

Jobs with "State": "Complete" artifacts are skipped. Only failed or partial jobs run.