Personal project  ·  Jon Tojek  ·  September 2026

A pipeline that makes short films.

Four of them so far, all pastiches. The scene gets picked in a chat window. Everything after that runs on one PC. This page is the process, in order.

Films
4
Runtime
1:47
Machines
1
Cloud cost
$0

All four, back to back

The reel

Ripley, The Omen, The Polar Express, Scarface. One minute forty-seven.

1664×960 master, 24 fps. Music bed: “Dub Eastern” by Kevin MacLeod (incompetech.com), CC BY 4.0.

Step one

Picking the scene

This part is a conversation, and it is the only part done by hand. Some days I bring a scene. Some days I ask for ten and pick one.

Jon

Give me ten movie ideas where I can be the actor, replacing someone.

Agent

Ten scenes with one lead to replace, each one cuttable into three shots:

Ripley · Freddie arrives The Omen · the churchyard Polar Express Scarface · penthouse + 6 more
Jon

Do the Ripley one. The bit where Freddie jumps out of the red car and takes over the table.

Agent

Three shots, one line of dialogue each. Stills coming — three seeds per shot.

Jon

Take 2, take 3, take 1. Reroll the last one, the sunglasses are wrong.

Step two

What runs after that

Five stages, each one a script. Nothing moves forward until the last stage is approved. A stage that fails reruns on its own, never the whole film.

  1. Stills Krea 2 draws each shot at 1280×720. A likeness LoRA trained in Fizgig carries the lead character — trigger word j0nt11awm, loaded at 1.15 strength. One still per shot gets picked and locked.
  2. Stills become clips MiniMax H3 animates the locked still into about five seconds, and speaks the line in the same pass. Animating a frame that already passed review is the largest quality decision in the chain.
  3. Draft to ship A face refiner sharpens the features, then FlashVSR doubles the resolution to 1664×960. Raw model output is a draft. This stage is what ships.
  4. Titles and the cut Inkscape draws the title cards frame by frame. MLT builds the timeline — 12-frame dissolves, a music bed — and FFmpeg levels the mix against EBU R128 numbers, so dialogue always sits above the music.
  5. Publish Python uploads the render and writes a sidecar next to the file: video ID, seeds, settings, music credit. Every asset on disk has one.
Pipeline diagram: idea, stills, clips, quality pass, titles and edit, publish
The same thing as a picture. Drawn in tldraw, kept in the project so it changes when the pipeline does.

What drives it

An agent and a local model

Hermes is the agent. It reads the project files, runs every script above, checks its own output, and writes the notes. Behind it is Qwen 3.8 27B, quantised and running in LM Studio on the same machine as the renders. No API key, no per-token bill, nothing leaves the building.

Its rules sit in plain text beside the films — one file for the project, one per movie. A new film inherits what the last four established.

Four so far

The films

The four stills movie 04 was built from — one approved frame per shot:

Still 1, penthouse window at night Still 2, the argument at the desk Still 3, the snow globe Still 4, close-up, deadpan

Why stage three exists

Draft versus ship

Same frame, same second of film. Left is what the video model returns. Right is after the face refiner and the 2× upscale.

Raw · 832×480
Frame before the quality pass, soft and low resolution
Refined · 1664×960
Frame after face refiner and upscale, sharper skin and hair detail

Everything involved

The kit

JobToolDetail
AgentHermesruns every script, writes every note
ModelQwen 3.8 27Blocal, LM Studio, Q4_K_M
StillsKrea 2 Turbo1280×720, 8 steps
Clips and voiceMiniMax H3832×480, 24 fps, 20 steps
LikenessFizgigLoRA j0nt11awm @ 1.15
QualityFace Refiner + FlashVSR2× to 1664×960
TitlesInkscapeSVG frames → PNG sequence
EditMLT + Shotcutheadless render, 12f dissolves
AudioFFmpegEBU R128, −15 LUFS
HardwareRTX 509032 GB VRAM, one box