One photo. One tap. A whole VFX shot.
An open-source rebuild of one-tap viral video effects (gold statue, inflate, disintegrate, earth zoom-out…), running only open-weight models (FLUX 3 Image Klein + LTX-2.5) on the Comfy Developer Platform. Every effect is a small JSON recipe that anyone can remix, share as a link, or contribute with a pull request.
#OpenSourceHiggsfield · MIT licensed · Comfy SDK · works on Comfy Cloud, a Comfy API deployment, or your own GPU
- Two-model "transform" pipeline in one Comfy job. For effects that end somewhere new (gold statue, ice, werewolf…), FLUX 3 Image Klein first paints the final frame from your photo, then LTX-2.5 generates the move from your photo → that frame (first/last-frame video) with a matching soundtrack. Motion effects (disintegrate, crash zoom, bullet time…) go straight to LTX-2.5 image-to-video with a two-stage upscale.
- Effects are data, not graphs. A recipe holds the end state, the motion, the camera, and the sound. It never names a node or a model file. The server compiles it into a ComfyUI API graph, so one workflow upgrade improves every effect at once.
- Describe any effect in one line. Type "turn me into a chocolate statue" and the Effect Wizard has Gemma 4 (an open-weights LLM running inside ComfyUI, through the same SDK) write the full recipe. It can also look at your photo to name the subject ("the woman in the yellow raincoat"), which sharpens every prompt.
- Anyone can make an effect. The built-in Effect Builder lets you write or tweak a recipe, test it on your own photo, then share it as a link (the recipe travels inside the URL) or open a GitHub pull request that adds it to
effects/for everyone. - Live showcase. Every push publishes a static version of the app to GitHub Pages. It has every effect with its example render, the before/after slider and the Effect Builder, so anyone can try it without installing anything.
- Use the effects in plain ComfyUI too. You get 22 ready-to-run workflows, plus a small custom node pack (ComfyUI-Conjure) that turns any recipe into prompts and frame counts inside your own graphs.
- Open weights only. No partner nodes or closed APIs. The same code runs on Comfy Cloud, a Comfy API deployment, or a self-hosted ComfyUI through
comfy-api-proxy. - Made to be shared. Before/after drag slider, one-click vertical before→after reel, ready-made caption, 9:16 by default.
- Designed, not generated-looking. One accent, two typefaces, and no gradients, emoji icons or pill tags. The rules are in
REFERENCE.mdand the build system is inDESIGN.md.
flowchart LR
P[Your photo] --> C[Crop to 9:16 / 4:5 / 1:1 / 16:9<br/>around the face]
R[Effect recipe<br/>effects/*.json] --> B[Workflow builder<br/>server/workflow.ts]
C --> B
B -->|Comfy SDK<br/>one job| CU[(ComfyUI<br/>Cloud · Deployment · Local)]
subgraph CU2 [Inside the job]
F[FLUX 3 Image Klein<br/>paints the final frame] --> L[LTX-2.5 22B<br/>first→last frame video + audio]
I[LTX-2.5 22B<br/>image→video + audio · x2 refine]
end
CU -.-> CU2
CU2 --> O[MP4 with sound<br/>+ end frame]
O --> S[Before/after slider · reel · caption · remix]
| Pipeline | Used by | Graph |
|---|---|---|
| Transform | effects that end in a new state | LoadImage → FLUX 3 Klein edit (ReferenceMultiLatent, 16 steps) → SaveImage and LTXVAddGuide(first, strength 1.0) + LTXVAddGuide(last, 0.8) → 8-step distilled sampling → LTXVCropGuides → video + audio |
| Motion | particles, superpowers, camera moves | LTXVImgToVideoInplace → 8 steps at half res → LTXVLatentUpsampler x2 → 3-step refine → video + audio |
Both graphs were derived from the official ComfyUI templates (video_ltx2_5_i2v, video_ltx2_5_flf2v, image_flux3_klein_distilled_image_edit), converted to API format with the real ComfyUI frontend, and simplified to plain nodes with readable ids (prompt, edit_prompt, save_video…).
Requires Node 22.9+. ffmpeg is optional (it powers mock renders and the share reel).
git clone https://github.com/orazen/conjure && cd conjure
npm installnpm run mock # opens the UI on http://localhost:5173Mock renders are an ffmpeg pan + dissolve of your photo, so you can try the whole flow (upload, effects, builder, sharing) for free.
- Create an API key at https://platform.comfy.org/profile/api-keys (needs a Comfy Cloud plan with credits).
cp .env.example .envand setCOMFY_API_KEY=...- Check the connection, then start:
npm run doctor # uploads a tiny image, runs a 3-node workflow, downloads the result
npm run dev # http://localhost:5173- Install/update ComfyUI (LTX-2.5 + FLUX 3 nodes are in core) and download the models below into
ComfyUI/models/… - Run ComfyUI, then the official API proxy beside it:
pip install comfy-api-proxy && comfy-api-proxy run # serves the Comfy API v2 on :8189- In
.env:COMFY_BASE_URL=http://127.0.0.1:8189, thennpm run doctor && npm run dev.
Production build:
npm run build && npm startserves the UI and API from one port (http://127.0.0.1:8787).
| File | Folder | Role |
|---|---|---|
ltx-2.5-22b-distilled-transformer-comfy-int8-convrot |
diffusion_models |
LTX-2.5 video + audio model |
gemma4-12b-with-proj-ltx-2.5-comfy-int8-convrot |
text_encoders |
LTX-2.5 text encoder |
ltx-2.5-video-vae-bf16 · ltx-2.5-audio-vae-bf16 |
vae |
LTX-2.5 VAEs |
ltx-2.5-latent-spatial-upscaler-x2-bf16-1.0 |
latent_upscale_models |
x2 refine (motion effects) |
flux3_image_klein_sd_int8_convrot |
diffusion_models |
FLUX 3 Image Klein (end frame) |
qwen3vl_4b_int8_convrot |
text_encoders |
FLUX 3 text encoder |
flux2-vae |
vae |
FLUX VAE |
gemma4_e4b_it_fp8_scaled |
text_encoders |
Gemma 4 E4B, the Effect Wizard (optional) |
Exact download URLs are in workflows/models.json. The workflows/ui/*.json files carry them too, so ComfyUI's "missing models" dialog can fetch them. Both Hugging Face repos are gated, so accept the terms there first. Licenses: LTX-2.x Community License (Lightricks), the FLUX 3 Image Klein license (Black Forest Labs) and the Gemma license (Google).
| Effect | What happens | Models | id |
|---|---|---|---|
| Midas Touch | Liquid gold creeps over you until you're a solid gold statue. | FLUX 3 → LTX-2.5 | midas-touch |
| Inflate | Puff up like a balloon and float off the ground. | FLUX 3 → LTX-2.5 | inflate |
| Dust to Dust | Disintegrate into ash that drifts away on the wind. | LTX-2.5 | dust-to-dust |
| Boxed Figure | Shrink into a collectible action figure sealed in its box. | FLUX 3 → LTX-2.5 | boxed-figure |
| Earth Zoom Out | Rocket back from your face to orbit in one shot. | LTX-2.5 | earth-zoom-out |
| Chrome Reveal | Your skin peels away to reveal the android underneath. | FLUX 3 → LTX-2.5 | chrome-reveal |
| Turn to Stone | Cracks race across your skin and you petrify into a marble statue. | FLUX 3 → LTX-2.5 | turn-to-stone |
| Ignite | Your hands burst into controlled superhero flames. | LTX-2.5 | ignite |
| Deep Freeze | Frost spreads until you're a glittering ice sculpture. | FLUX 3 → LTX-2.5 | deep-freeze |
| Bullet Time | Time freezes while the camera orbits around you. | LTX-2.5 | bullet-time |
| Full Moon | A werewolf transformation, howl included. | FLUX 3 → LTX-2.5 | full-moon |
| Angel Wings | Huge feathered wings unfold from your back. | LTX-2.5 | angel-wings |
| Clay Day | Become a handmade stop-motion clay character. | FLUX 3 → LTX-2.5 | clay-day |
| Portal Out | A glowing portal tears open and you step through. | LTX-2.5 | portal-out |
| Toon Shift | The world redraws itself as a hand-drawn anime frame. | FLUX 3 → LTX-2.5 | toon-shift |
| Thunder Call | Summon lightning that crackles around you. | LTX-2.5 | thunder-call |
| Origami | Fold into a crisp paper origami sculpture. | FLUX 3 → LTX-2.5 | origami |
| Zero Gravity | Gravity switches off and everything floats. | LTX-2.5 | zero-gravity |
| 8-Bit | Glitch into a retro pixel-art sprite. | FLUX 3 → LTX-2.5 | eight-bit |
| Crash Zoom | A dramatic crash zoom straight into your eyes. | LTX-2.5 | crash-zoom |
| Confetti Pop | Burst into a cloud of party confetti. | LTX-2.5 | confetti-pop |
| Meltdown | Melt into a glossy puddle like wax in the sun. | LTX-2.5 | meltdown |
The fastest way is to type the idea into "Imagine any effect…". Gemma 4 drafts the recipe and opens it in the builder for you. Or open Effect Builder and write it yourself, or write a file in effects/:
{
"id": "midas-touch",
"name": "Midas Touch",
"tagline": "Liquid gold creeps over you until you're a solid gold statue.",
"colors": ["#f7d774", "#8a5a00"],
"pipeline": "transform",
"subject": "the person",
"endFrame": "Convert {subject} into a solid statue cast in polished 24-karat gold … Keep the exact same pose, framing …",
"motion": "{subject} stands still as a bead of molten gold appears at their fingertips. Liquid gold spreads up the arms …",
"sound": "a rising shimmering metallic hum, soft liquid pouring, and a final bright resonant chime",
"duration": 5
}| Field | Meaning |
|---|---|
pipeline |
transform (FLUX 3 end frame → LTX-2.5 morph) or motion (LTX-2.5 image-to-video) |
endFrame |
transform only. Image-edit instruction for the final frame. Describe the end state concretely, then say what stays the same. |
motion |
What happens, in order, plus the camera and the light. Conjure adds the first/last-frame preamble for you. |
sound |
LTX-2.5 generates the soundtrack together with the video. |
subject |
Default meaning of {subject}. Users can override it at render time ("my dog"). |
strength.start / strength.end |
How strongly the photo pins the first frame / the end frame pins the last (optional) |
loras |
Optional `[{ "name": "file.safetensors", "strength": 0.8, "target": "video" |
The full schema with validation lives in server/effects.ts. Share an effect three ways:
- Link: "Copy effect link" puts the whole recipe in the URL. Anyone running Conjure can open it in the builder.
- Pull request: set
CONJURE_GITHUB_REPO=you/conjureand "Submit to community" opens GitHub's new-file page with the recipe pre-filled. - File: download the
.jsonand drop it intoeffects/(or into the ComfyUI node pack).
workflows/effects/<effect>.json: one ready-to-run API-format workflow per effect (9:16, 5 s). Drag it into ComfyUI, pick your photo in Conjure: input photo, and queue.workflows/ui/*.json: the two base pipelines, laid out in groups with model download links.comfy-nodes/ComfyUI-Conjure: copy it intoComfyUI/custom_nodes/to get the Conjure Effect Recipe node. It outputsmotion_prompt,end_frame_prompt,negative_prompt,framesandfpsfor any bundled or pasted recipe, so effects drop into your own graphs. Its output matches the app's prompt builder byte for byte (this is tested). Example graphs are inexample_workflows/.
| Command | What it does |
|---|---|
npm run dev / npm run mock |
UI on :5173 + API on :8787 (live reload) / same, with simulated renders |
npm run build && npm start |
Production: one server on :8787 |
npm run build:showcase |
Static live showcase for GitHub Pages (.github/workflows/pages.yml deploys it on every push) |
npm run doctor |
Checks your Comfy backend with a tiny 3-node job |
npm run samples |
Generates synthetic sample photos with FLUX 3 (no real people's likeness) |
npm run examples |
Renders every effect into examples/<id>/ for the gallery previews (--only=…, --quality=draft, --force) |
npm run validate |
Builds all 22 effects × 4 aspects × 2 qualities and checks them against ComfyUI node schemas, offline |
npm test |
Unit + API tests (mock backend) |
npm run export-workflows / npm run sync-nodes |
Regenerate workflows/effects/ / copy recipes into the node pack |
effects/ 22 recipes (+ _order.json for gallery order)
shared/ the recipe schema (used by server and browser)
workflows/ base API graphs, node-schemas.json snapshot, models.json, effects/, ui/
server/ Hono API: workflow builder, Comfy SDK runner, Effect Wizard (Gemma 4), mock runner, ffmpeg reel
web/ React UI: gallery, effect sheet, before/after compare, Effect Builder, renders
comfy-nodes/ ComfyUI-Conjure custom node pack
scripts/ doctor, samples, examples, validate, export
test/ vitest
docs/ demo script, social posts, submission checklist
REFERENCE.md visual rules (colours, type, never-do list); DESIGN.md = tokens, components, decision log
- All 176 workflow builds (22 effects × 4 aspects × 2 qualities, plus a LoRA-spliced variant) were submitted to a real, current ComfyUI (
/promptvalidation), and all passed. CI-friendly offline checks run againstworkflows/node-schemas.json. - The SDK path (upload → submit → events → outputs → download) was exercised end to end against ComfyUI through
comfy-api-proxy. - The ComfyUI-Conjure node was loaded and executed in ComfyUI. Its prompts match the app's for every effect.
- The Effect Wizard graph (Gemma 4 →
SaveText) passes ComfyUI validation, and text outputs come back through the SDK. Messy LLM replies are repaired into valid recipes (tested).
Built with ComfyUI and the Comfy SDK, using LTX-2.5 by Lightricks and FLUX 3 Image Klein by Black Forest Labs. Effect names are original. No third-party characters, brands or likenesses are used, and the sample photos are synthetic. Built for the Comfy Open Source Higgsfield challenge. Inspired by one-tap effect apps; not affiliated with Higgsfield.
MIT © Conjure contributors
