← All drops

Drop 009Replaces Descript $24/moBuilt — first draft, verified on a real clip

kve

Drop in raw footage, get a cut, captioned, scored short back.

The kve editor: the transcript on the left with a struck-out word marking a cut, and the cleanup and judgment panels on the right
You edit the video by editing its transcript — a struck-out word is a cut. Dead air comes from ffmpeg reading the waveform, not from the transcript, because whisper stretches word ends across silence.

An agent-driven editor for short-form video. It transcribes every word, cuts the dead air, draws motion graphics, animates captions and mixes music, then exports a portrait master. The CLI is deterministic and never calls a model — the judgment lives in markdown skills, so the same folder runs on whichever coding agent you already use.

Why it works

The CLI never calls a model

Every command is a pure function of disk state and flags. The intelligence is markdown in .claude/skills/, which is why it is model-agnostic by construction: running it on a different agent means pointing that agent at the same folder, with no code change, no SDK and no API key in the repo.

All state is JSON on disk

The edit decision list is the source of truth and the agent writes only that plus the graphics. Derived files are never hand-edited, so a fresh session resumes from one status command.

Content-addressed render cache

Re-exporting an unchanged segment is a cache hit, which took one test clip from 54s to 4.4s.

Dead air comes from the audio, not the transcript

Whisper stretches word end times across silence, so word ends are useless as cut boundaries. Silence is detected from the waveform instead — the bug that finding cost is now the design.

Run it

shell
git clone https://github.com/openwarehq/kve
cd kve
docker compose up

Then open the app and connect a model — pick a provider, paste a free key, done. It also reads a repo-root .env if you prefer a file.

Measured

Tests green
41
Test clip, cut
18.5s → 15.5s
Re-export with cache
54s → 4.4s
LLM calls made by the CLI
0

What it doesn’t do

Stated up front, because scope discovered at 2am is a betrayal.

  • It is a folder you drive with a coding agent, not an app. There is no GUI and no timeline to scrub.
  • Portrait output. The pipeline targets 1080×1920 short-form, not 16:9 long-form.
  • You install ffmpeg and whisper-cpp yourself. Both are one brew command, but they are not bundled.
  • First draft. It has been run end to end on a real clip, not across a wide range of footage — treat the edge cases as unexplored.
  • It cannot judge what is interesting. The agent decides what to cut from a transcript; a bad take stays a bad take.