Workflows/Generate MiniMax H3 videos with FreeVideo
Video / WORKFLOW
Generate MiniMax H3 videos with FreeVideo
Install FreeVideo’s managed ComfyUI workspace on Windows, Linux, an experimental Apple Silicon Mac, or a rented RunPod GPU. Generate and save a MiniMax H3 video with audio, then try image-to-video, previews, and optional automation.
Freshness 75 out of 100. Release age: 73 days old, Aug 3, 2026. Measures age, not quality.75/ 100Freshness73 days oldRelease age · Aug 3, 2026
Popularity 90 out of 100. 3,827,783 downloads in 30 days; 6,149 lifetime likes. Checked Oct 15, 2026. Measures adoption, not quality.90/ 100Popularity3.8M downloads / 30d6.1K lifetime likes · Checked Oct 15, 2026
What do these scores mean?+
Two ways to compare models. Neither score measures answer quality, benchmark performance, or whether a model fits your machine.
Freshness · release age
A new release starts at 100. The score halves every 180 days: 100 × 2^(−age in days / 180). When the release date is unavailable, a repository date is a fallback—not proof of when the model was released. Missing dates stay unscored.
Downloads over the past 30 days carry 80% of the score; lifetime likes carry 20%. Both use a logarithmic scale, capped at 10 million downloads and 100,000 likes. If likes are unavailable, downloads carry all the weight. Missing download statistics stay unscored.
Scores as of Oct 15, 2026. Statistics checked Oct 15, 2026. Statistics are marked for refresh after 72 hours.Full scoring method →
FROM INSTALL TO YOUR FIRST CLIP
One short video. Motion and sound.
FreeVideo handles the runtime and model setup, then opens its workspace inside ComfyUI. Start with the visual controls; the optional automation examples come later.
01 · INSTALLUse the official launcher
Choose your platform and review the model download plan.
02 · CREATEOpen the ready-made template
Add a prompt. Keep the first clip short and use Light quality.
03 · KEEPPlay and save your MP4
Check the motion and audio, then save the settings with your clip.
Choose your setup Published render times See what different machines actually rendered
NVIDIA · Windows examples
One 10-second clip at 1344 × 768, using two passes. These are published results, not YouRunAI or RunPod benchmarks.
The project reports these approximate timings on an M5 with 24 GB unified memory. Earlier chips can be substantially slower; unified memory is not equivalent to discrete GPU VRAM.
Different quality, duration, drivers, available RAM and cache state can change the wait. Use these examples to set expectations, then measure your own first clip.
Before you begin
Hardware
VRAM and host RAM are separate requirements. These are planning tiers; only the clearly attributed publisher benchmark panel above contains measured timing examples. Low-memory runs may stream heavily from RAM or SSD.
Machine
System RAM / unified memory
MiniMax H3 · VDN-H3 for FreeVideo
NVIDIA GPU · 8 GB VRAM
16 GB minimum; 32 GB+ preferred
Documented minimum; short, low-resolution previews and long waits.
NVIDIA GPU · 12–16 GB VRAM
32–64 GB RAM
Testing tier; slower than high-end NVIDIA hardware.
NVIDIA GPU · 24 GB VRAM
48–64 GB RAM
Good local/rented starting point when the price is competitive.
NVIDIA GPU · 32 GB VRAM
64 GB RAM
Higher-performance tier; publisher RTX 5090 result is configuration-specific.
NVIDIA GPU · 48 GB+ VRAM
64–128 GB RAM
More residency/headroom on 48, 80 GB, or larger GPUs; compare actual cost rather than assuming best value.
Apple Silicon · M5 · 24 GB unified memory
Shared unified memory
Publisher-measured experimental preview; much slower than RTX 5090.
Apple Silicon · 16 GB / earlier chips
Shared unified memory
No equivalent result established here; use smaller tests or supported NVIDIA hardware.
AMD GPU
No documented FreeVideo backend.
Not supported by this route; generic ComfyUI support does not establish FreeVideo support.
Intel GPU
No documented FreeVideo backend.
Not supported by this route; use a supported NVIDIA GPU or the experimental Mac route.
CPU only
No documented FreeVideo backend.
Not supported by this route; choose a supported GPU before installing.
Reserve 150–200 GB fast SSD as a conservative allocation, not a publisher-guaranteed minimum. The prepared transformer cache is about 21.3–21.4 GiB; encoders, decoders, dependencies, optional references, outputs, and temporary files need more. Run setup --plan for your actual host.
Use the graphical launcher on a PC or Mac, or the managed Linux installer on your own server or RunPod. Start with a small text-to-video clip, verify the MP4 and audio, then add a first frame. Advanced setup and automation are optional.
Choose a package Load the visual workflow Check the result
01
BEFORE YOU BEGIN
The documented package
This setup uses the package documented for this task. Review its source and supported platforms before starting.
Save your machine in My Hardware to get an automatic starting choice. You can always choose any package yourself.
CURRENT SETUP
MiniMax H3 · VDN-H3 for FreeVideo · community-modified weights
8 GB NVIDIA VRAM +16 GB RAM is the documented minimum, with heavy streaming. 24–32 GB VRAM +48–64 GB RAM is a practical planning tier. Mac support is experimental; the published preview uses M5 / 24 GB. No AMD, Intel, or CPU-only route. Allow 150–200 GB fast SSD and check the installer plan.
Freshness 75 out of 100. Release age: 73 days old, Aug 3, 2026. Measures age, not quality.75/ 100Freshness73 days oldRelease age · Aug 3, 2026
Popularity 90 out of 100. 3,827,783 downloads in 30 days; 6,149 lifetime likes. Checked Oct 15, 2026. Measures adoption, not quality.90/ 100Popularity3.8M downloads / 30d6.1K lifetime likes · Checked Oct 15, 2026
What do these scores mean?+
Two ways to compare models. Neither score measures answer quality, benchmark performance, or whether a model fits your machine.
Freshness · release age
A new release starts at 100. The score halves every 180 days: 100 × 2^(−age in days / 180). When the release date is unavailable, a repository date is a fallback—not proof of when the model was released. Missing dates stay unscored.
Downloads over the past 30 days carry 80% of the score; lifetime likes carry 20%. Both use a logarithmic scale, capped at 10 million downloads and 100,000 likes. If likes are unavailable, downloads carry all the weight. Missing download statistics stay unscored.
Set up MiniMax H3 · VDN-H3 for FreeVideo on your machine
Choose your computer first, then its GPU path. Follow the visual setup and import the linked workflow.
CHOOSE YOUR SETUPWindows
Windows 10/11 with a supported NVIDIA GPU. Use the graphical managed installer; manual Python, CUDA, or PyTorch setup is unnecessary for this route.
01
Check the model license and your machine
FreeVideo code is Apache-2.0. The separate MiniMax H3 weight license excludes the United States, European Union, United Kingdom, and Republic of Korea from its licensed territory without separate authorization. Review the actual agreement and planned use before downloading; renting elsewhere does not itself resolve those terms. Confirm GPU, system RAM, and fast SSD space against the table, then close other GPU-heavy apps.
Download FreeVideo.exe from the official release, then open it. Use the launcher’s hardware preflight and update the NVIDIA driver if it flags a problem. You can optionally inspect GPU/driver information with nvidia-smi in PowerShell; this is not an installation requirement.
Choose your installation and reuse existing downloads
In the launcher, choose a new ComfyUI install for the simplest isolated setup, or deliberately select an existing ComfyUI folder. Add any existing compatible model folders for reuse. Review the installation plan, download size, and model terms. Click Install & launch only after confirming the plan and authorization.
Let the launcher download models and install its managed dependencies. It opens ComfyUI with the FreeVideo workspace when ready. Additional optional assets may download when first requested. If setup reports a failure, resolve its first error instead of manually mixing unrelated PyTorch or CUDA packages into the environment.
05
Open FreeVideo or load its ready-made template
Confirm the managed model assets are installed and setup is ready in FreeVideo’s desktop app and browser workspace. The official installer downloads and places its model assets. Use its workspace directly, or choose Workflow → Browse Templates → FreeVideo → FreeVideo-All-in-One in ComfyUI. If the template is not visible, download the official JSON below and drag it onto the canvas. These are two ways to load the same graph. A missing-model warning means setup or FreeVideo Settings is unfinished.
Paste the scene prompt below. Start at 960×544 and about 3 seconds, or the nearest supported landscape preset. Use a smaller frame on tight hardware. Select Light quality and a fixed seed; keep other controls at their defaults. Preview-first is for Light’s two-pass path: inspect its half-resolution pass before the final render. Medium, High, and Max are single-pass in this release. These are starting settings, not a promised render time.
Setting
Value
Input
Text prompt only
Duration
3 seconds or nearest supported preset
Resolution
960 × 544
Quality
Light · two-pass
Seed
12345
Preview-first
On for Light, if offered
Plain text
Cinematic close-up of a ceramic coffee cup on a wooden table by a rainy window at dawn. Steam curls upward as a hand gently rotates the cup. Slow, steady camera push-in, shallow depth of field, natural reflections, subtle warm interior light. Audio: quiet rainfall against glass, a soft cup-on-wood sound, and distant birds. No subtitles or on-screen text.
07
Generate, play, and save an MP4
Click Generate / Queue. If you chose preview-first, inspect it and run the second pass to finish. Play the resulting MP4, confirm nonzero duration and visible motion, then listen for the requested sound. Check that the job completed without an out-of-memory or missing-model error. Download the output and record your GPU, resolution, duration, seed, quality, and actual elapsed time. An installer-ready screen or silent preview alone is not this completion check.
08
Try a first-frame image-to-video shot
Choose an image you have permission to use and add it as First frame. Crop or pad it to the output aspect ratio first. Keep the test short and use Light quality. Prompt a small camera move and natural motion; generate, inspect, and save a second MP4. Later you can add a Last frame for a start-to-end transition. The advanced section below explains reference video/audio and optional LoRAs.
The camera drifts slowly to the right as the subject turns toward a soft light source. Natural secondary motion in the background. Preserve the input image’s identity, composition and colors. Audio: gentle outdoor ambience, no music.
03
MORE WAYS TO USE THIS SETUP
Optional: keep an existing ComfyUI installation
The official standalone launcher is the easiest isolated route. Use this only when you deliberately want to retain your current ComfyUI environment.
01
Back up before adding the custom node
Stop ComfyUI gracefully and back up its environment/custom_nodes directory plus saved workflows. Open a shell in its actual custom_nodes folder. The commands below are Linux Terminal examples; adjust the path for your installation.
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/FlashML-org/FreeVideo.git
cd FreeVideo
git checkout 0af617eb54dec1d8c06f9e7de2147c5b6a3f4772
02
Restart the original ComfyUI and finish setup
Use the existing installation’s usual launcher. Open Workflow → Browse Templates → FreeVideo → FreeVideo-All-in-One, or import the JSON below. Complete FreeVideo Settings for runtime/model assets. Cloning a custom node alone does not install all specialized dependencies. Generate a small clip before trusting the shared environment.
If nodes remain missing or import errors persist after completing Settings and restarting, use the isolated official launcher instead of repeatedly changing unrelated package versions in your working ComfyUI environment.
04
MORE WAYS TO USE THIS SETUP
Preview first, then increase quality
Light, Medium, High, and Max are quality settings. Keep prompt, seed, size, and duration fixed when comparing them.
01
Use a preview to reject weak ideas early
In Light’s two-pass mode, generate the half-resolution first pass and inspect motion/composition. When it is useful, run the second pass/refinement from that preview. Medium, High, and Max do not use this two-pass preview route in the reviewed release. A preview is not the final result; preserve its compatible settings rather than substituting a new unrelated seed.
02
Choose the quality level deliberately
Light uses an 8+3-step two-pass path for quick idea tests. Medium, High, and Max use single-pass paths at 12, 16, and 20 steps. Increase quality only after a working baseline; higher quality does not guarantee perfect motion and cost also depends on duration, resolution, and memory.
Setting
Value
Light
8+3 steps · two-pass · preview option
Medium
12 steps · single-pass
High
16 steps · single-pass
Max
20 steps · single-pass
03
Queue variants instead of competing GPU jobs
Use FreeVideo history/batches or ComfyUI’s normal queue. Change one variable per output, such as seed or prompt, and record it. The engine can serialize generation with its runtime lock; launching several independent GPU-heavy processes does not create free parallel throughput.
04
Keep the video and its workflow together
Newer FreeVideo media can embed settings: a compatible output can be dropped on the ComfyUI canvas to restore its prompt/seed/workflow. Also retain exported JSON and your software version because future formats can change.
Start with the first-frame test from the main steps. Add more conditioning only after that simple result works.
01
Control a start-to-end shot
Add a First frame and Last frame to guide a transition. The node schema also represents a last-frame-only input. Pre-crop or pad references to the output aspect ratio, then inspect the actual transition rather than assuming identity is locked.
The source describes reference video/audio conditioning as experimental and says VDN is not reference-trained. Do not expect arbitrary references to preserve a subject, voice, composition, or sound exactly. Use material you have the rights and consent to use.
03
Add a compatible community LoRA only when needed
Use the official examples to find H3-compatible adapters. In node view connect the matching FreeVideo LoRA/reference node to FreeVideo · Video + Audio. Compare with/without using identical prompt, seed, size, and duration. Check the adapter’s separate provenance and license; it does not replace the base-model terms.
The managed ./freevideo wrapper is the simplest automation path. It uses the installed environment and machine.json state; a failed or incomplete installation cannot generate yet.
01
Check readiness in the installed folder
Use your actual Linux installation path instead of /workspace/FreeVideo if necessary. The probe tests the installed kernel path; do not run unrelated system Python for inference.
cd /workspace/FreeVideo
./freevideo --help
./freevideo status
./freevideo doctor
./freevideo doctor --probe
02
Save a repeatable prompt
Run this in the installed FreeVideo folder. It creates a small prompt file and an output directory.
Bash
mkdir -p prompts outputs
cat > prompts/coffee.txt <<'PROMPT'
Cinematic coffee cup on a wooden table beside a rainy window at dawn.
Steam rises slowly while the camera pushes in. Realistic reflections,
soft interior light. Audio: gentle rain, distant birds, cup on wood.
No text or subtitles.
PROMPT
03
Generate a short MP4
Expect outputs/coffee.mp4 plus request/diagnostic data. Wait for completion, play the file, and listen to its audio. Do not call a successfully submitted but still-running job complete.
This stops after the preview stage. Finish it with the UI’s Run second pass, or inspect ./freevideo generate --help for the exact --refine-from interface on your version. Preserve the preview’s compatible metadata and settings.
If ffprobe is installed, confirm the MP4 has nonzero duration and the expected video/audio streams. This command is optional; normal playback and listening remain the primary check.
Run these examples in /workspace/FreeVideo on the Pod with the token-protected server from the RunPod steps still running. They authenticate every request, submit once, and poll short status requests while rendering continues. A normal visual workflow JSON must first be exported in API format.
01
Export an actual working graph
Configure and successfully run a short FreeVideo-All-in-One job. Use ComfyUI Export/Save (API format), enabling Developer Mode if needed, and save workflow_api.json next to the Python script below. Confirm the graph contains real installed FreeVideo nodes and valid inputs; never invent numeric node IDs.
Run this in the Pod Terminal, not your own computer. Port 8188 remains the authenticated proxy even when addressed through localhost. Read its existing launcher/access-token file without printing it and send an Authorization: Bearer header; do not put a token query parameter on POST requests. This short request should return system information. If the token file is missing, start the protected server first. If access fails, check the selected port and token after any rotation; do not disable authentication.
Save this script and workflow_api.json in /workspace/FreeVideo. It reads the same token file, submits the actual graph once, saves prompt_id to freevideo-job.json, and polls /history with separate 30-second requests. It stops on a failed job or missing history rather than generating duplicates. FreeVideo video descriptors appear under each output node’s images list; the script uses their real filename, subfolder, and type with authenticated /view requests. Saved copies go to api-downloads on the Pod. No token is printed or saved by this script.
#!/usr/bin/env python3
import json
import sys
import time
import urllib.error
import urllib.parse
import urllib.request
from pathlib import Path
# Save and run this script in /workspace/FreeVideo on the Pod.
API = "http://127.0.0.1:8188"
TOKEN = Path("launcher/access-token").read_text(encoding="utf-8").strip()
if not TOKEN:
raise SystemExit("Missing access token. Start the protected FreeVideo server first.")
HEADERS = {"Authorization": f"Bearer {TOKEN}"}
STATE = Path("freevideo-job.json")
def request_json(route, payload=None):
headers = dict(HEADERS)
data = None
if payload is not None:
headers["Content-Type"] = "application/json"
data = json.dumps(payload).encode("utf-8")
req = urllib.request.Request(API + route, data=data, headers=headers)
with urllib.request.urlopen(req, timeout=30) as response:
return json.load(response)
def run():
if sys.argv[1:] == ["--resume"]:
prompt_id = json.loads(STATE.read_text(encoding="utf-8"))["prompt_id"]
elif sys.argv[1:]:
raise SystemExit("Usage: python3 queue_freevideo.py [--resume]")
else:
if STATE.exists():
raise SystemExit("Saved job found: use --resume, or rename freevideo-job.json before a new job.")
graph = json.loads(Path("workflow_api.json").read_text(encoding="utf-8"))
payload = graph if "prompt" in graph else {"prompt": graph}
result = request_json("/prompt", payload)
prompt_id = result.get("prompt_id")
if not prompt_id:
raise SystemExit("Job was not accepted. Check graph validation in the UI; do not blindly retry.")
STATE.write_text(json.dumps({"prompt_id": prompt_id}), encoding="utf-8")
print("Queued job:", prompt_id, flush=True)
route = "/history/" + urllib.parse.quote(prompt_id, safe="")
deadline = time.monotonic() + 6 * 60 * 60
while time.monotonic() < deadline:
entry = request_json(route).get(prompt_id)
if not entry:
queue = request_json("/queue")
jobs = queue.get("queue_running", []) + queue.get("queue_pending", [])
if not any(len(job) > 1 and job[1] == prompt_id for job in jobs):
entry = request_json(route).get(prompt_id) # completion can race the queue check
if not entry:
raise SystemExit("Job is absent from Queue/History. After a server restart, locate saved MP4s; do not resubmit automatically.")
if entry:
status = entry.get("status", {})
if status.get("status_str") == "error":
raise SystemExit("Generation failed. Inspect this job in ComfyUI History and its logs.")
if status.get("completed"):
Path("freevideo-history.json").write_text(json.dumps(entry, indent=2), encoding="utf-8")
if status.get("status_str") != "success":
raise SystemExit("Job did not finish successfully; inspect its saved history.")
break
print("Waiting for this job; each status request is separate...", flush=True)
time.sleep(10)
else:
raise SystemExit("Still waiting after 6 hours. Check the UI; --resume monitors the same job.")
media = [item for node in entry.get("outputs", {}).values()
for item in node.get("images", [])
if item.get("type") == "output" and str(item.get("filename", "")).lower().endswith(".mp4")]
if not media:
raise SystemExit("No MP4 descriptor in saved history. Check the workspace and search the persistent output folder.")
folder = Path("api-downloads") / prompt_id
folder.mkdir(parents=True, exist_ok=True)
for index, item in enumerate(media, 1):
query = urllib.parse.urlencode({key: item[key] for key in ("filename", "subfolder", "type")})
req = urllib.request.Request(API + "/view?" + query, headers=HEADERS)
target = folder / (str(index) + "-" + Path(item["filename"]).name)
partial = target.with_name(target.name + ".part")
with urllib.request.urlopen(req, timeout=30) as response, partial.open("wb") as output:
while chunk := response.read(1024 * 1024):
output.write(chunk)
partial.replace(target)
print("Saved on the Pod:", target, flush=True)
print("Copy the MP4s to your computer and check playback/audio before stopping the Pod.")
try:
run()
except (urllib.error.URLError, TimeoutError) as error:
print("Request failed:", type(error).__name__)
raise SystemExit("No automatic resubmission. Check Queue/History; if freevideo-job.json exists, use --resume. Check the token after rotation.")
04
Submit once and follow the job
Run with Python 3 in the Pod Terminal. The returned prompt_id confirms acceptance, not completion. The script waits in its own process while each HTTP request stays short; no single request is held open for the video render. Keep it in tmux if you might disconnect. A completed job saves freevideo-history.json and MP4 copies in api-downloads. The originals remain in ComfyUI/output/FreeVideo. Copy a finished MP4 to your own computer and check playback and audio. Keep the ID and history with your workflow.
Bash
cd /workspace/FreeVideo
python3 queue_freevideo.py
05
Resume monitoring or recover a failed download
If monitoring or downloading is interrupted after freevideo-job.json was saved, use --resume to track the same job and download its completed files without posting again. After a service/Pod restart, ComfyUI’s in-memory Queue/History may be gone even though the MP4 survives: use the output search in the RunPod steps instead of automatically resubmitting. If the original submission timed out before an ID was saved, inspect the UI Queue/History first. After a reviewed completion, archive or rename freevideo-job.json before intentionally starting another job. If a browser download fails, use Jupyter’s file browser to retrieve the saved MP4.
Bash
cd /workspace/FreeVideo
python3 queue_freevideo.py --resume
06
Serverless requires a separate deployment
This GPU Pod is not a RunPod Serverless endpoint. A serverless service needs a worker/container, model caching, persistent outputs, and an actual job API. No official ready-to-deploy FreeVideo Serverless worker is claimed here; stabilize and benchmark the Pod workflow first.
Resource planning is not a benchmark. Record the actual output and elapsed time; the publisher’s Windows and M5 results above are separate evidence.
01
Inspect the resource plan and reports
Replace 16 and 32 with your actual VRAM and host RAM. plan estimates resource policy; it does not promise a render time. Completed jobs also produce a .request.json timing/resource report. Run the project’s optional ./test.sh only after a normal smoke test works; it can take considerable time.
./freevideo plan --vram-gib 16 --ram-gib 32 --width 960 --height 544 --seconds 3
./freevideo resource-history list
./freevideo predict --help
02
Collect useful diagnostics
Linux/RunPod example: adjust /workspace for your install. Inspect the first actionable error and stop before blindly running later commands. Redact tokens and private paths before sharing logs.
cd /workspace/FreeVideo
./freevideo status
./freevideo doctor --probe
nvidia-smi
free -h
df -h /workspace
ls -lah launcher/
tail -n 100 launcher/service.log
03
Save a reproducible result
Record GPU/VRAM, host RAM, CPU, disk type, driver, FreeVideo revision, prompt, seed, quality, size, duration, first versus warmed run, and full elapsed generation time. Keep the final MP4, exported JSON, and .request.json. Report failed or retried runs separately rather than replacing them with publisher timings.
09
MORE WAYS TO USE THIS SETUP
Maintain the installation without interrupting a job
Finish and save the current generation first. The guide pins a reviewed revision; moving to newer source is a separate update with a fresh plan and smoke test.
01
Check status, stop, and review an update
Wait until the queue is idle and save completed MP4s, settings, and workflow/history files before stopping. ComfyUI Queue/History is held in memory and may disappear on restart while the output files remain. Use stop after jobs finish; the reviewed restart command internally forces stopping. This guide checked out a specific commit, so do not run git pull against a detached HEAD. Review a published release before selecting its tag and retain the known-good commit for rollback.
./freevideo status
./freevideo stop
git status --short
git fetch --tags origin
02
Re-plan before installing changed dependencies
After intentionally checking out the reviewed update, run the plan and inspect dependency/storage/license changes. Only then rerun setup. Keep your normal access route: use the local service for SSH or the protected server for RunPod HTTPS.
Bash
./setup.sh --plan
./setup.sh
03
Restart the same access route and smoke-test it
For RunPod HTTPS or the authenticated SSH-tunnel route, run these commands only after current jobs finish and outputs are saved. Stop must succeed before server starts; do not use a forced restart during generation. Keep --listen 0.0.0.0 to retain FreeVideo’s token proxy and make both API examples work. Check status, reopen the UI through the protected HTTPS link with the existing token, and generate one short clip. For graphical desktop installs, use their normal launcher/update path.
Bash
cd /workspace/FreeVideo
./freevideo stop && ./freevideo server --listen 0.0.0.0 --port 8188
./freevideo status
04
Recover after a Pod stop or settings edit
Start the Pod, reopen its Terminal, confirm the persistent /workspace mount and actual GPU, and reinstall container-level packages if the container was reset. The commands assume the root Ubuntu/PyTorch template used above; use sudo where required. The existing FreeVideo folder, managed environment, and model files should remain. If it is missing, stop and check the volume attachment—do not begin a fresh large download blindly. This is a recovery check, not a source update.
Resolve the plan errors first, then rerun setup in this same folder to validate/repair the installation and reuse downloaded assets. This is especially important if the physical GPU, driver, or container changed: machine.json can retain the old GPU UUID, and --plan alone does not refresh it. Do not delete models or clone again. Wait for setup to succeed before starting the protected server below. Verify Connect still exposes HTTP 8188, then generate the browser URL using RunPod Step 8. launcher/access-token normally survives on the volume; use the current token if rotated. Use the local ./freevideo wrapper rather than a lost home-directory shortcut. Old in-memory job history cannot be recovered by resubmitting; locate saved output files instead.
Bash
cd /workspace/FreeVideo && ./setup.sh && ./freevideo server --listen 0.0.0.0 --port 8188
./freevideo status
10
MORE WAYS TO USE THIS SETUP
Keep results private and control rental costs
FreeVideo describes the tooling, not free GPU rental or unrestricted model rights. Local and rented execution have different privacy and billing implications.
01
Know what survives a stop or container reset
A mounted volume disk at /workspace survives Pod stops/restarts, but is deleted when its Pod is terminated. A network volume has its own lifetime and survives Pod termination until you delete that volume. Container-disk changes outside persistent mounts may be lost on a stop or settings edit. This includes apt-installed system packages, home-directory launch shortcuts, and running processes; tmux sessions also end when the container stops. The recovery steps above reinstall missing system packages and restart the preserved installation.
Preserve the entire FreeVideo installation and its results
Keep /workspace/FreeVideo on the mounted volume, including models/, envs/, python/, vendor/, downloads/, kernel-cache/, launcher/, machine.json, and ComfyUI/. GUI results are normally under ComfyUI/output/FreeVideo/<date>/<job-folder>/video.mp4; CLI results follow your --out path. API helper copies live in api-downloads/. Reused external model folders or explicitly overridden caches also need persistent locations. Back up valuable MP4s, workflow JSON, prompt/settings, and saved job/history files outside the Pod before stopping. Protect launcher/access-token as a credential when making backups.
Play the copied MP4 and confirm its audio on your own computer, then stop the Pod. GPU compute is billed while running; retained storage may remain billed after stopping. Stopping releases GPU capacity, so the original device may be unavailable on restart. Recheck its actual GPU and driver before continuing. Confirm storage lifetime before terminating a Pod or deleting any volume.
A FreeVideo proxy token controls the creative workspace; it is separate from SSH credentials. Do not share its token-bearing URL, screenshots, or logs. Assets/prompts on a rented Pod are processed on remote infrastructure. Treat community LoRAs, photos, videos, voices, and music according to their own rights and consent rules.
05
Review the separate licenses before commercial use
The engine code is Apache-2.0. The MiniMax H3 weights have a separate community agreement covering territories and commercial/service use. A GPU rented elsewhere does not itself resolve authorization. Review the actual model agreement and any adapter/content terms before deployment or monetization.
You have downloaded a text-to-video MP4 with visible motion and audible sound, without missing-model or out-of-memory errors. Keep the prompt, seed, quality, size, duration, and actual timing. If you try the first-frame image-to-video exercise, save and check that second clip too. For RunPod, use the protected HTTPS browser URL, back up outputs, and stop compute when finished. The optional API exercise is complete only after its exported graph produces a finished video; it is not required for the browser workflow.
Source-reviewed against FreeVideo v0.3.23. This content does not claim YouRunAI completed the local or RunPod generation tests. The publisher’s NVIDIA/Mac timing examples are labeled separately. Experimental Mac support and restricted model-weight terms still apply. RunPod rental links are affiliate links.
The installer reports an old driver or unsupported CUDA kernel.
On Linux/RunPod, nvidia-smi must show NVIDIA Driver Version 580+. The CUDA label alone is not the installed runtime. Update the local host driver or choose a compatible Pod; installing a wheel does not update its host driver.
The install plan reports insufficient disk space.
Check free SSD space or df -h /workspace, then compare setup --plan for the exact host. Provision sufficient persistent storage or use the installer’s supported storage choices. Do not delete arbitrary caches during installation.
The setup terminal disconnected.
Use tmux ls, then tmux attach -t freevideo-install. If setup actually stopped, rerun ./setup.sh from the same installation to reuse verified downloads. A stopped Pod cannot be kept alive by tmux.
FreeVideo is installed but the browser is empty or unreachable.
Inspect ./freevideo status and launcher/service.log. Start ./freevideo open --port 8188 --no-browser for local/SSH access, or select the protected server route and confirm the actual HTTP service is exposed.
RunPod returns 404/502 on the 8188 link.
Confirm HTTP 8188 appears in Connect and the token-protected server is running on 0.0.0.0:8188. Add a missing port via Pods → three-dot menu → Edit Pod → Expose HTTP Ports → 8188 → Save only after backing up nonpersistent data; saving resets the container. Follow RunPod Step 11 to restart FreeVideo and generate a fresh browser URL.
The proxy returns 524 or a long generation appears to time out.
RunPod’s HTTP proxy allows approximately 100 seconds for a request. Use ComfyUI’s asynchronous queue and separate status/history requests; do not hold one HTTP response open throughout generation. Check the existing job before retrying. A disconnected browser does not itself cancel a queued render. If an output download fails, locate the MP4 using RunPod Step 10 and retrieve it through Jupyter’s file browser.
The video finished but the download failed.
Use the find command in RunPod Step 10 to locate *.mp4 under /workspace/FreeVideo. Check ComfyUI/output/FreeVideo for UI jobs, your --out path for CLI jobs, or api-downloads for helper copies. Download via Jupyter’s file browser and verify playback. If ComfyUI restarted, files can survive even though its Queue/History no longer lists the job.
The browser returns 403 or says the token is missing.
For RunPod, generate the current browser URL again using Step 8; do not use the localhost URL printed by the original installation. If compromised, rotate using ./freevideo server --listen 0.0.0.0 --port 8188 --new-token, then generate the HTTPS link with the new token. Keep it private and do not expose bare ComfyUI without authentication.
The URL opens Jupyter or a different ComfyUI.
Jupyter often uses 8888; FreeVideo defaults to 8188. Check ports and running services. Avoid competing installations on the same port; choose one managed FreeVideo service.
Generation runs out of memory or is very slow.
Close competing GPU jobs, lower resolution and duration, and start with Light/preview. Inspect nvidia-smi, RAM/SSD use, resource planning, and .request.json. Streaming on 8–16 GB GPUs can be slow; more host RAM and a fast SSD may matter alongside the GPU.
ComfyUI nodes are missing or imports fail.
Restart the selected ComfyUI and complete FreeVideo Settings for its runtime/models. If shared-environment packages conflict, prefer the official isolated launcher instead of repeatedly replacing random dependencies.
The first job downloads additional files.
Check installation status, storage, and logs. Optional assets can be downloaded when first needed. Wait for actual completion or a specific failure; an incomplete asset download is not a successful generation.
The input frame crops badly or the reference does not preserve identity.
Pre-crop/pad to the selected aspect ratio and start with one first frame and a simple motion prompt. Reference video/audio conditioning is experimental; no exact subject or voice lock is promised.
The Mac preview is much slower than an NVIDIA benchmark.
Compare only against the experimental Mac evidence for the same settings. Before M5, the int8 weights are decoded to BF16 as each layer loads, which slows generation. Start with a very short 512×512 clip; a 24 GB unified-memory Mac is not equivalent to 24 GB discrete NVIDIA performance.
A stopped Pod cannot restart on the same GPU.
Stopping releases GPU availability. Preserve data on the appropriate persistent/network storage and keep backups so you can move to another compatible host. Check driver, RAM, and the new install plan again.