Clipwright 4B (V3)

A 4B model that does media jobs end to end. It runs ffmpeg, ffprobe, ImageMagick, SoX and ExifTool through one run(cmd, foreach) tool in a sandbox, reads the results, fixes its own mistakes, and replies with the output files. It also answers questions about files, asks when a request is ambiguous, and says when something can't be done.

LoRA (r32, alpha 64, all linear layers) on Qwen3.5-4B. Trained on 12,095 examples covering 46 kinds of real-world jobs: editing (cuts, overlays, crossfades, picture-in-picture, voiceovers), delivery (platform presets, size limits, subtitles, thumbnails), audio (cleanup, ducking, pauses, sync), repair (VFR, interlacing, aspect ratio, broken files), images, PDFs, metadata and privacy. Every example was executed on real files and its output was checked before it was kept. One epoch on a Colab L4 (6h50m).

Files

File Use
clipwright-4b-Q8_0.gguf LoRA merged into the base, Q8_0 (4.6 GB). Run with llama.cpp.
adapter_model.safetensors + configs The PEFT adapter, to load on Qwen/Qwen3.5-4B.
system_prompt.txt The system prompt it was trained with. Use it as is.
tool.json The run tool schema (OpenAI function format).

Quick start (llama.cpp)

llama-server -hf Ray1239/clipwright-4b:Q8_0 --jinja -c 32768

Send the system prompt and the run tool. The user message should list the input files under Files:, the way it looked in training:

make a 10 second preview gif of talk.mp4

Files:
- in/talk.mp4 โ€” video h264 1920x1080 30fps, audio aac stereo 48kHz, 132.1s, 11.8 MB

Then execute each run call yourself with inputs in in/ (read-only) and outputs written to out/. Return the result as a tool message, as JSON with exit_code, plus stdout or error, and a short summary of the files in out/. Loop until the model stops calling the tool. Run it in a sandbox: these are real shell commands.

Evaluation

154 hand-written tasks, 2 to 4 per job type, on held-out files the model never saw in training (different voices, sizes, timings and content). Each task is scored by running the model's commands and checking the output: duration, dimensions, codecs, loudness, frames at given times, pitch, silence, sync, metadata, page counts, or the facts in a written answer. 21 deliberately wrong solutions are all rejected by these checks. Greedy decoding, one run per task, up to 15 commands. 95% Wilson intervals are in brackets.

Job group This model V2 0.8B
Editing 27/42 1/42
Social and delivery 18/24 7/24
Audio 17/23 3/23
Repair 15/18 8/18
Images and PDFs 16/18 6/18
Metadata and privacy 7/9 2/9
Questions about files 7/10 1/10
Mistakes, ambiguity, limits 8/10 4/10
Total 115/154, 75% [67-81] 32/154, 21% [15-28]

The 4B solves 85 tasks V2 fails and fails 2 that V2 solves (paired exact test, p < 1e-21). The Q8_0 GGUF gives the same result as the unmerged adapter on all 16 tasks of a random spot check.

Limitations

  • Timing-heavy edits are the weakest: a voiceover placed at a given time (0/4), inserting a clip at a timestamp (1/4), cutting a highlight around a moment (1/3), removing pauses (1/3), finding timestamps (1/3).
  • On 15 of 154 tasks it repeated the same failing command three times and was stopped.
  • The test files are synthetic, so real footage with odd codecs or damage may do worse.
  • Trained on ffmpeg 8 to 9 syntax and ImageMagick 7 (magick).
  • It reports what it did, but check important outputs yourself.
Downloads last month
46
GGUF
Model size
4B params
Architecture
qwen35
Hardware compatibility
Log In to add your hardware

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for Ray1239/clipwright-4b

Finetuned
Qwen/Qwen3.5-4B
Adapter
(1,037)
this model