斜杠中年斜杠中年AI × 沟通 × 商业 × 人生
AI Tools

Running MiniMax H3 Video Generation Locally: ComfyUI No-API Guide

No API key, no cloud, no quota limits. Run MiniMax Hailuo-03 video generation on your own GPU via ComfyUI Desktop. Full workflow, T2V/I2V/R2V modes tested, and the real pitfalls that took hours to debug.

2026-08-05Updated: 2026-08-058 min readWesley Chong
#MiniMax#H3#Hailuo#ComfyUI#local AI#video generation#AI
Running MiniMax H3 Video Generation Locally: ComfyUI No-API Guide|AI Tools 封面图

Summary

MiniMax H3 (Hailuo-03) is one of the best open-source video generation models available, but the official API has rate limits and content moderation. It turns out the full local version has been available for a while — ComfyUI Desktop ships with all the models pre-downloaded, and once you have the right skill set up, a single command generates T2V/I2V/R2V videos without any API key.

One-Sentence Answer

MiniMax H3 runs locally now. ComfyUI Desktop ships with all models included, and the Hermes skill I built handles the workflow — one command for T2V, I2V, or R2V generation, zero API keys.

Why Run It Locally

The MiniMax API is decent, but I had two complaints: video length capped by credits, and generation subject to platform moderation. Running locally removes both. Plus the RTX 5080 was sitting there underutilized.

The first time a generated video actually played back smoothly, my reaction was: okay, we're actually here.

Environment Setup

Paths (Windows)

C:\Users\<user>\AppData\Local\Comfy-Desktop\
├── ComfyUI-Installs\ComfyUI\ComfyUI\   ← core application
├── ComfyUI-Shared\
│   ├── models\                          ← all model files
│   │   ├── diffusion_models\
│   │   │   ├── minimax_h3_fl2va_pruned_int8_convrot.safetensors
│   │   │   └── minimax_h3_ref2va_pruned_int8_convrot.safetensors
│   │   ├── text_encoders\
│   │   │   └── qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors
│   │   └── vae\
│   │       ├── minimax_h3_video_vae_fp16.safetensors
│   │       └── minimax_h3_audio_vae_fp32.safetensors
│   └── output\                          ← generation output

Desktop installation ships with all models ready. No Hugging Face token, no extra downloads.

Starting the Server

ComfyUI needs to run headless, not the desktop GUI:

cd "C:\Users\<user>\AppData\Local\Comfy-Desktop\ComfyUI-Installs\ComfyUI\ComfyUI"

# Critical: clear PYTHONPATH, or the venv imports the wrong Pillow
env -u PYTHONPATH ".venv\Scripts\python.exe" main.py \
  --listen 127.0.0.1 --port 8188 \
  --extra-model-paths-config "C:\Users\<user>\AppData\Local\hermes\scripts\minimax_h3_extra_paths.yaml" \
  --output-directory "C:\Users\<user>\AppData\Local\Comfy-Desktop\ComfyUI-Shared\output"

Health check:

curl http://127.0.0.1:8188/system_stats

The Node Chain (Where It Went Wrong)

This is the part that cost me the most time. The official ComfyUI templates use subgraph format — posting them directly to the /prompt API returns missing_node_type errors. Local generation requires building the workflow from standard nodes.

Correct Node Connections

MiniMaxH3ImageToVideo / MiniMaxH3ReferenceToVideo
  output[0] = CONDITIONING  ← do not connect here
  output[1] = LATENT        ← connect here

LATENT ──► VAEDecode (samples=[H3, 1], vae=video_vae) ──► IMAGE
         ──► VAEDecodeAudio (samples=[H3, 1], vae=audio_vae) ──► AUDIO
                                                    AUDIO ──► CreateVideo (images, fps, audio, bit_depth=8)
IMAGE ────────────────────────────────────────────────► CreateVideo
CreateVideo output ──► SaveVideo ──► .mp4

Three mistakes that took hours to debug:

Mistake 1: Wrong output index. H3 nodes emit CONDITIONING at index 0 and LATENT at index 1. I connected to [node_id, 0] first, which gave received_type(CONDITIONING) mismatch input_type(LATENT).

Mistake 2: CLIPLoader missing the type parameter. Standard SDXL CLIPLoader nodes do not require a type field. But the H3 model uses qwen3vl_32b_minimax_h3_nvfp4_awq, which requires type: "minimax". Without it: required_input_missing: type.

Mistake 3: CreateVideo bit_depth is an INT. Passed the string "auto" initially. Error: invalid literal for int() with base 10: 'auto'. Correct values are 8 or 10.

Three Modes Tested

T2V — Text to Video

python run_h3.py \
  --mode t2v \
  --prompt "A sleek red sports car races through a neon-lit night city. Rain on the asphalt. Cinematic slow motion. Camera follows from behind." \
  --seconds 5 \
  --aspect 16:9 \
  --mp 0.4 \
  --seed 12345

Output: MiniMax_H3_00010_.mp4, 1.2MB, 864×480, 124 frames (~5 seconds).

I2V — Image to Video

python run_h3.py \
  --mode i2v \
  --first-frame "C:\path\to\character.png" \
  --prompt "The character walks confidently toward the camera. Cinematic. Audio: footsteps, city ambience." \
  --seconds 5 \
  --aspect 16:9 \
  --seed 42

Adding --last-frame enables first-last frame interpolation (FL2VA) — the model generates transitions between two keyframes.

R2V — Reference to Video

python run_h3.py \
  --mode r2v \
  --ref-image "C:\path\to\char_ref.png" \
  --ref-image "C:\path\to\style_ref.png" \
  --prompt "The character walks confidently toward the camera. Cinematic." \
  --seconds 5

Supports up to 9 reference images, 3 reference videos, and 3 reference audio clips. The ref_image_size parameter controls reference scaling: "match" scales to the output resolution (preserves aspect ratio); "max" uses 2048px short edge for maximum identity fidelity (significantly slower).

Resolution and Duration

H3 uses fixed 24fps and a frame grid aligned to 17k+5 (k = 0, 1, 2...).

| Duration | Frames | Note | |----------|--------|------| | 5s | 124 | closest grid point | | 10s | 175 | | | 15s | 192 | | | 20s | 209 | |

Pass --seconds and the script converts to frame count. Use --length 124 to override directly.

Resolution parameters:

| megapixels | 16:9 output | 9:16 output | |------------|-------------|-------------| | 0.2 (preview) | 864×480 | 480×864 | | 0.98 (native) | 1344×768 | 768×1344 | | 2.0 (Full HD) | 1920×1088 | 1088×1920 |

H3 caps the short edge at 768px — anything larger gets auto-scaled.

Results

RTX 5080, single T2V 5-second generation: approximately 2-3 minutes depending on scene complexity.

On quality: H3's strengths are camera motion and scene consistency. You can tell it's AI-generated if you look closely, but with accurate text prompts the output is directly usable for concept presentations, material references, and early creative validation stages.

Further Reading

FAQs

What GPU do I need to run MiniMax H3 locally?

RTX 5080 16GB tested at 1344x768 for 5 seconds (124 frames). H3's trained frame range is 124 to 362 frames (~5s to ~15s at 24fps). RTX 4070 or 3080 should work but will be slower.

Does ComfyUI Desktop come with the models?

Yes. After installing ComfyUI Desktop, all MiniMax H3 models (FL2VA, Ref2VA), VAEs (video and audio), and the Qwen3VL 32B text encoder are already present in the ComfyUI-Shared/models/ directory. No Hugging Face token needed.

What's the difference between T2V, I2V, and R2V?

T2V (Text-to-Video) generates from a text prompt only. I2V (Image-to-Video) takes a starting image and generates motion from that frame. R2V (Reference-to-Video) accepts multiple reference images, videos, and audio clips — best for character or scene consistency across generations.

Why do official ComfyUI template JSONs fail when posted to the API?

The official templates use subgraph format — inner nodes are partial stubs the frontend expands. The REST API does not expand them, so you get 'missing_node_type' errors. The fix is to build the workflow from standard node types directly. See the node chain diagram in the article.

分享这篇文章 / Share Article
Wesley Chong

Author

Wesley Chong

Software developer, digital consultant, and Toastmasters speaker from Kluang, Malaysia.

Focusing on helping ordinary people upgrade communication, expression, business, and life with AI.

Related Reading