Mage Cherry Video
Clips with sound, and none of it runs on your GPU
- images
- video
- video
- url
The selling point is in one line of the README: the video includes sound. Cherry generates a clip with its audio track baked in - dialogue, ambience, whatever the prompt asks for - from a single request. Locally that's the hardest thing in the whole video stack to get right.
What it's for
Generating video locally is a two-model problem: the video model gives you a silent clip, then you bolt on a separate TTS or foley model and hope the mouth matches. The closed frontier does it natively, and that's a real capability gap, not a marketing one - the KB's read on Veo 3 is exactly this: native audio-with-video is the one thing open models hadn't matched. Cherry sits in that same bucket, and the Mage node is how it enters a ComfyUI graph.
So: use it when the sound is the point. A talking character, a short ad, a scene where the door slam needs to land on the beat. and the refusal travels with the model. Use a local model when you need a specific look, a specific duration, a hundred takes, or anything a hosted filter would refuse - you can't abliterate a model with no weights.
And it runs off-device: no checkpoint, no VRAM math, no 20-minute render. You pay per clip in Gems, and the price moves with resolution and duration, which makes the next bit matter.
How it works
Same shape as the rest of the pack: your widgets become a request to the Mage API, the node polls it and prints status plus elapsed seconds and Gems cost on the node itself, then downloads the finished file and hands it back as a ComfyUI VIDEO value. Everything downstream - a save node, a player, whatever you've got - treats it like any other video.
Your media inputs do get uploaded first. Conform a source video and it's re-encoded to H.264 MP4 before the upload, which means a fat source file can sit there chewing through bandwidth with no visible progress until submission. Not a bug, just how it feels.
The inputs, and which ones bite
prompt takes @handle mentions for saved characters and references, same as mage.space.
model_id-cherry-mini,cherry,cherry-pro,cherry-2-pro, defaulting tocherry-2-pro.cherry-miniexists for a reason.resolution-480p,720p,1080p,4k, defaulting to 480p. Combined with duration, this is your bill.duration- a token in seconds,4by default, with longer options up to30. A 30-second 4K clip is a different financial event than a 4-second 480p draft.aspect_ratio-16:9,9:16, or1:1.seed- fixed by default, so re-queuing the same inputs reuses ComfyUI's cache instead of paying for the same clip twice.
Two optional inputs, and the difference between them is worth stating plainly: images are reference images (look, character, style), while video is a source clip to edit or riff on. The node checks that the chosen Cherry variant accepts the media you've connected before uploading or spending, so a wrong combination gets you an error and nothing else.
Outputs are video (a real VIDEO value) and url.
Install and key
Manager first: search Mage. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/mage-space/ComfyUI-Mage
cd ComfyUI-Mage
pip install -r requirements.txt
That pulls the mage-space SDK and nothing heavy - PyAV, httpx and torch are already in ComfyUI. Worth knowing: this pack uses ComfyUI's newer comfy_api video plumbing to hand back a VIDEO, so a current ComfyUI build is genuinely required. Ancient installs will trip at import.
Then the key, from mage.space under API → API Keys:
export MAGE_API_KEY="your-key-here" # set before launching ComfyUI
or cp config.ini.example config.ini and fill in api_key =. Env var wins. It's not stored in your workflow, so you can hand the graph to someone else without handing over your account.
Where people get tripped up
Silence at first click. "No Mage API key" means the environment variable wasn't visible to the ComfyUI process - typically you exported it in a different terminal, or after the server was already up. Restart ComfyUI.
A model is missing from the dropdown. Those combos are generated from the SDK's copy of the API reference when the pack loads. If Cherry 2 shipped after your SDK, you won't see it:
pip install -U "mage-space>=0.0.0,<0.1"
Stop doesn't save you money. Interrupting the queue does cancel the Mage request, and the Gems are not refunded. Long clips are the expensive ones, so decide before you hit Queue. Where the money is protected: an option combination the model refuses, or an account without enough Gems, fails the node with the API's message before any Gems leave.
Your clip lives on a timer. Mage stores outputs for 30 days, so save the file with ComfyUI's save nodes instead of bookmarking the url.
It's beta. 0.x, inputs may change, and this is a brand-new pack. Fine for experimenting, less fine as the load-bearing piece of a client deliverable.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | What to generate. Mention saved characters and references by @handle. | |
| model_id | COMBO | cherry-2-pro | The model variant to generate with. |
| aspect_ratio | COMBO | 16:9 | Aspect ratio as `W:H`. |
| resolution | COMBO | 480p | Output resolution token. |
| duration | COMBO | 4 | Clip length in seconds, as a token. |
| seed | INT | 00–2147483647 | The same seed and inputs reproduce an output. Change it for a new variation. |
| imagesopt | IMAGE | Reference images. | |
| videoopt | VIDEO | A source video to edit or reference. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | The generated video. |
| url | STRING | Where Mage stores the output for 30 days. |