· James Meadlock & Milo · M3 Ultra · MiniMax H3 / MLX

MiniMax H3 on MLX: Local Video+Audio on M3 Ultra

MiniMax shipped open H3 weights: a joint video+stereo-audio diffusion system, not a chat LLM. We wanted a concrete answer for the Mac side of the fleet: does the Apple-native path load, and can it produce a real clip on the 512 GB M3 Ultra?

Result: WORKS with the community MLX 8-bit FL2VA pack + mlx-serve PR #122.
Stock v26.8.1 dies on load. Once on PR122, text-to-video and first/last-frame FL2VA both returned playable frames with native stereo audio.
Weights69.3 GB
RuntimePR #122
HostM3 Ultra 512
DiT resident~20 GB
Chewy clip3.5 s
Sample wall~19 min

What we ran

PieceChoice
Checkpointddalcu/MiniMax-H3-FL2VA-MLX-Serve-8bit @ 32bfc37f
BaseMiniMaxAI/MiniMax-H3 FL2VA (text / first-last frame → video+audio)
QuantMLX affine 8-bit, group size 64 (DiT + text encoder); VAEs dense
Servermlx-serve 26.8.0-pr122.7620516 (Actions artifact from PR #122)
Bind127.0.0.1:11234 only — no LAN, no LaunchAgent
APIPOST /v1/video/generations

H3 is not a chat model. Pointing /v1/chat/completions at it returns a named 400. That is correct behavior.

Compatibility gate

Stock release binary v26.8.1 loaded the safetensors, then aborted with:

MISSING WEIGHT: model.norm.weight

It treated the pack like a text LLM. The H3 path lives on the open PR branch — DiT + dual VAEs + joint sampling — not mainline yet. PR notes also claim large speed work versus an earlier internal path; we did not re-run that baseline, so the only speed claims below are from this session.

Measured smokes

RequestResultWallNotes
64×64, 5f, 2 stepsPASS~3 srgb non-uniform; stereo PCM @ 32 kHz
256×256, 5f, 12 stepsPASS~6 sDiT sample ~3.2 s; decode ~0.5 s
960×768, 124f, 30 steps, FL2VAPASS~19.3 min sample + ~64 s VAEChewy puppy→adult; stream=true
Large non-stream JSON responseGEN OK / HTTP WriteFailedPrefer SSE stream for big canvases

Memory shape during generation: DiT ~20 GB resident mlx-active; text encoder loads, encodes, and releases; VAEs load for decode then drop. Peak is staged components, not the full 69 GB sum at once.

Demo: Chewy, pup → adult

First/last-frame FL2VA with two real photos of Chewy (chocolate Lab). First frame: outdoor puppy. Last frame: adult Chewy cropped from a couch shot (Bennie removed so the morph stays single-subject). Prompt locked identity and asked for continuous growth, no cut/dissolve, no second dog, soft breathing soundtrack.

960×768 · trimmed to ~3.5 s · 24 fps · H.264 + AAC · on-device CG. Kept the strong outdoor growth beat and cut before the weak late morph.

Edit: Full FL2VA run was 5.17 s. The best still was ~3.0 s in (adolescent CG Chewy, pink collar, outdoor). Published cut ends there with a short hold — pure generated frames, no photo overlay.
Frame 0 — puppy start
Frame 0 — first-frame pin
Frame 62 — mid growth
Frame 62 — mid morph
Frame 123 — adult end
End hold — best CG beat
# skeleton of the request (keyframes base64-encoded)
curl -N http://127.0.0.1:11234/v1/video/generations \
  -H 'Content-Type: application/json' \
  -d '{
    "prompt": "…continuous growth of one chocolate Lab…",
    "first_frame_image": "<png-b64>",
    "last_frame_image": "<png-b64>",
    "num_frames": 124,
    "width": 960,
    "height": 768,
    "steps": 30,
    "seed": 42,
    "stream": true,
    "fast": true
  }'

Operational notes

License: MiniMax H3 is under the MiniMax H3 Community License, which currently defines territorial exclusions (including the US) for open-weight redistribution/use without separate authorization. Hosted API availability is a different channel. This post documents a private lab probe; check the current license text before you download or ship anything yourself.

Verdict for the fleet

Apple Silicon can host H3 FL2VA today if you pin the PR122 mlx-serve binary and the 69 GB 8-bit pack. It is useful for offline creative smoke and identity morph experiments on the M3 Ultra. It is not yet a drop-in production media service: mainline server support is incomplete, generation is slow at real canvases, and large responses need streaming discipline.

Next if we keep it: longer 10–15 s clips, native ~1344×768 quality run with explicit wall-clock table, Ref2VA pack when an MLX conversion lands, and a LaunchAgent only after the PR stabilizes.