OpenEdit: an agent-driven video pipeline with no timeline and no GUI
Open-source, agent-driven editing pipeline: create subtitles, motion graphics, slides, edit and render videos.
At a glance
- What is it?
- OpenEdit turns video editing into a conversation with a coding agent, renders captions written in HTML and CSS, and ships with a closed-source renderer from VEED. It is a strong fit for repeatable, text-driven edits and a poor fit for anyone who wants a scrubbable timeline or Linux support today.
- Who is it for?
- Adopt OpenEdit if you already drive Claude Code, Codex or Gemini from a terminal, your edits are caption, motion-graphic or slide driven, and you are on an Apple Silicon Mac or a Windows x64 PC. Skip it if you need a timeline, an Intel Mac, or Linux today, or if you cannot accept a closed-source renderer inside an Apache-2.0 repository.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 5 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem OpenEdit targets: edits you would otherwise redo by hand
Most editing tools assume a person sitting in front of a timeline, dragging clips and nudging keyframes. OpenEdit assumes the opposite. The README states plainly that there is no GUI and no timeline, and that the pipeline is driven entirely through your coding agent. The unit of work is a sentence, not a drag.
That reframing matters for a specific kind of job. Captioning a talking-head clip, restyling subtitles across a series, building a lower third, turning slides into video, or generating a title sequence from pure motion graphics are all tasks where the intent is expressible in words and the output is reproducible. If you produce the same shape of video repeatedly, describing it to an agent and letting the pipeline render it removes the manual pass entirely.
The audience is therefore narrower than "anyone who edits video". It is engineers and technical creators who already live in a terminal, who are comfortable with ffmpeg in the dependency chain, and who treat a video as an artefact produced by a command rather than by a session. Source footage is optional: the README notes that stills, slides, generated media or pure motion graphics are enough when the brief calls for it.
What actually runs: a skill, an agent guide, and a closed renderer
The architecture visible in the material is three layers. At the top is your coding agent. In the middle is an agent-agnostic skill plus a repository guide: the README says the installed skill prepares the runtime and loads its AGENTS.md instructions explicitly, and that Claude Code, Codex and Gemini are supported. At the bottom is the renderer, which ships with OpenEdit, is described as VEED's HTML renderer, and is closed source but free to use.
Caption styles are authored in HTML and CSS. The README is explicit that rendering does not use a headless browser: there is no browser to install, launch, or keep alive for the duration of a render. That single design decision explains most of the platform constraint. The renderer is distributed as macOS-arm64 and windows-x64 builds only, which is why preflight stops on anything else.
The material also states that internal benchmarks measured the renderer up to 2.2x faster than Chromium. Treat that number as a vendor claim from the README, not an independent measurement, and note that the sentence is truncated in the supplied text. The mechanism behind the claim (no browser process, no page lifecycle to manage) is at least consistent with the description.
Data flow, as far as the documentation describes it: the agent transcribes the video, analyses the transcript, designs a treatment, and renders. Transcription is a separate decision point, covered below. Rendering is where ffmpeg appears, and it is listed both as a topic and as a Windows dependency installed via winget.
Installing it: one npx command, then a preflight that refuses unsupported machines
Installation is a single command, per the README:
npx skills add veedstudio/open-edit
You can also download the repository directly. After that, you open your coding agent. The README gives the Claude Code example:
claude
and then a natural-language request such as:
Add subtitles to my video [VIDEO]
The pipeline handles transcription, transcript analysis, design and render. The README says the agent returns the video with subtitles burned in after 1 to 3 minutes and launches a video previewer, and tells you where the final MP4 lives. Follow-up requests are also natural language, for example asking for a darker subtitle colour, moving text up, or emphasising a specific word in a line. You can also pass a reference image and ask for subtitles in that style.
Preflight is the gate worth understanding before you plan anything. The README states that preflight requires Apple Silicon or Windows x64 and stops elsewhere, that Intel Macs are not supported because the renderer ships macOS-arm64 and windows-x64 only, and that Windows 10 or newer is required. On Windows, Git, Node and ffmpeg come via winget, and preflight prints the exact commands rather than running them itself. That last detail is a deliberate choice: the installer does not silently mutate your machine.
There is no documented config file, environment variable or CLI flag for the renderer in the supplied material. Configuration happens through the agent conversation and through the HTML and CSS of the caption styles. If you need a declarative project file you can check into version control, the material does not show one.
Transcription is the cost decision, and it is asked once
OpenEdit asks about transcription once and remembers the answer. Three options are documented: VEED transcription, WhisperX running locally, or your own service. The README attaches a billing note to each. VEED transcription consumes VEED credits. WhisperX runs locally on your machine. Your own service is billed by whoever provides it.
This is the most consequential configuration choice in the project, and it is not really a technical one. It decides whether captioning a long video costs money per run or costs local compute. WhisperX keeps the whole pipeline on your hardware, which matters if you are captioning client footage or anything you would rather not upload. VEED transcription trades credits for not managing a local model.
The README also notes that OpenEdit can generate a talking-head clip via VEED Fabric when you have no source footage, that this spends credits, and that it never happens without your approval. The approval gate is the right default. Generation is optional and requires a veed.io account only if you ask for it.
Where OpenEdit is the wrong tool
The absence of a timeline is the whole product, and it is also the sharpest limitation. If your edit depends on frame-accurate trimming, on judging a cut by watching it back and adjusting, or on the kind of iterative feel that a scrubbable interface provides, an agent conversation is a worse instrument than a timeline. You will spend turns describing what you could have done in one drag, and the agent has no way to show you a candidate cut before committing to a render.
Platform is the second hard boundary. Intel Macs are out. Linux is listed as planned, with prioritisation depending on demand, which means it is not available now. If your build machines are Linux containers, OpenEdit does not fit them today, and the README offers no timeline for when it might.
The renderer is the third. OpenEdit is Apache-2.0, but the README describes the bundled renderer as closed source, free to use. That is a real split: the pipeline is open, the component that turns your HTML and CSS into pixels is not. If your organisation has a policy about closed binaries in the build path, or if you need to modify rendering behaviour, this is a blocker you should identify before you build a workflow around it. The README does not describe an alternative renderer or a way to swap one in, and I cannot confirm from the material whether the renderer is redistributable under the same terms as the rest of the repository.
Finally, the documentation is thin in places. There is no documented CLI surface, no config schema, and the only release listed is a media bundle of launch examples. You are relying on the agent's reading of AGENTS.md to drive the pipeline, which means behaviour can shift as the skill and the guide change.
Compared with scripting ffmpeg yourself
The obvious alternative is not another agent tool. It is writing the ffmpeg commands yourself, or wrapping them in a script.
The difference in approach is where the design lives. With a hand-written ffmpeg script, you decide the filter graph, the subtitle burn-in, the overlay positions and the encode settings, and you get exactly that every time. It is deterministic, it runs anywhere ffmpeg runs, including Linux and Intel Macs, and there is nothing closed source in the path. The cost is that every new treatment is new code. Changing a caption colour means editing a filter or an ASS style file. Building a motion-graphic title sequence means composing overlays by hand.
OpenEdit moves the design into HTML and CSS and the sequencing into natural language. The README's examples show what that buys: one source clip translated and re-lipsynced into Spanish, French and German with three caption styles; three generated hooks with three motion-graphic treatments; three campaign cards built from a brand book read through Figma MCP. Those are variations on a theme, produced by changing the prompt rather than rewriting a filter graph.
If your work is one fixed pipeline run thousands of times, a script is the better tool and OpenEdit adds a dependency you do not need. If your work is many variations on a visual theme, the agent layer is doing real work that a filter graph does not.
Maintenance, licence and what to check first
OpenEdit is licensed Apache-2.0, which covers the repository. The renderer is a separate matter: the README calls it closed source and free to use, so the Apache-2.0 grant does not extend to it. That distinction is worth confirming with whoever handles licensing at your organisation before you depend on it, since the material does not spell out redistribution terms for the renderer binary. Nothing here is legal advice.
Upgrade cost is hard to assess from the supplied material. There is one listed release, launch-examples, which is a media bundle rather than a versioned software release. The last push is recent, so the repository is active, but the material gives no changelog, no compatibility policy and no versioning scheme for the skill or the renderer. In practice that means an upgrade could change how your prompts are interpreted, and you would find out by rendering.
The dependency surface is small and mostly external: Node, Git and ffmpeg on Windows, plus whichever transcription path you choose. WhisperX is the heavier local option. The renderer is a binary tied to macOS-arm64 and windows-x64, so a platform change in your team is a migration, not a reinstall.
Before adopting, run the preflight on the exact machine you intend to use. Then render one real video end to end, including the transcription choice, and check the returned MP4 and the previewer. The first render is the only test that exercises the agent, the skill, the renderer and your transcription service together.
Editorial conclusion
Adopt OpenEdit if you already drive Claude Code, Codex or Gemini from a terminal, your edits are caption, motion-graphic or slide driven, and you are on an Apple Silicon Mac or a Windows x64 PC. Skip it if you need a timeline, an Intel Mac, or Linux today, or if you cannot accept a closed-source renderer inside an Apache-2.0 repository. Verify two things before committing a project to it: run the preflight on your actual machine, since it stops on unsupported platforms, and confirm which transcription path you want, because VEED transcription spends VEED credits while WhisperX runs locally.
Community notes