Edit A real timeline
Video and audio tracks, trim, split, move, duplicate, keyframes, transitions, per-track mix, undo and redo — then an H.264/AAC MP4 through the FFmpeg already on your machine.
Open source · MIT · Local-first
OpenVideo is a desktop editor with an agent at the controls. It reads your timeline, cuts clips, generates voice and video, and exports through your own FFmpeg. Your media stays on your machine, and you decide which model providers it may talk to — including none.
RUN FROM SOURCE
git clone https://github.com/Theorvane/openvideo.gitcd openvideo && npm installnpm run devAgent approval request
A write action asks for consent; read-only timeline inspection remains immediate.
Video and audio tracks, trim, split, move, duplicate, keyframes, transitions, per-track mix, undo and redo — then an H.264/AAC MP4 through the FFmpeg already on your machine.
The chat panel beside the timeline calls the same operations the interface does. Describe the cut; it reads the project, places the clip, and reports what it changed.
Ask about a clip and frames are sampled and handed to the model as images with timestamps, so the answer comes from what is on screen rather than from the file name.
Generation studios sit in the same workspace. A finished job imports into the open project as an asset, ready to drop on the timeline.
Around 150 providers and several thousand models, or nothing but a local engine. Connect what you want; the rest stays out of the picker.
You pick the folder. Media, chat history, and generated results are written inside it, and removing a project from the list never deletes the folder you chose.
Not a copilot that writes suggestions
The agent reaches your project through a typed tool surface in the main process — the same operations the interface uses, with no shell access and no path handling in the browser layer.
getProjectTimelinewatchProjectVideoaddClipToTimeline · trimTimelineClip · updateClipEffectscreateSpeechJob · createVideoJob · getJobStatusimportGeneratedResultexportProjectVideoAnything that writes to your project or starts a job asks for approval before it runs. Read-only calls go through immediately. Conversations are kept per project as sessions you can switch between or delete.
Bring your own everything
The registry is generated from a snapshot of the models.dev catalog, so the picker lists what exists rather than a hand-kept shortlist. Only providers you have connected show their models.
A boundary you can read in the source
No account, no telemetry, no analytics, and no crash reporting. The app reaches a provider only when you ask it to, using a provider you connected yourself.
The interface talks to the system through one narrow typed bridge. Filesystem paths, FFmpeg arguments, API keys, and OAuth tokens stay behind it — a reference image you pick for video generation crosses as bytes, never as a path.
Inspect the source ↗OpenVideo is free and MIT licensed. Model providers bill you directly if you connect one; the project never sits between you and them.
No. The agent runs against a local Ollama model with no account, no key, and no network call. Cloud providers are there if you prefer them.
Anything in the generated models.dev catalog that speaks the OpenAI or Anthropic wire format, plus Google Gemini natively. For OpenAI you can use an API key or a ChatGPT sign-in.
Into the project folder you chose, and nowhere else. A provider only ever receives what you ask the agent to send it.
Yes, for export. OpenVideo drives the FFmpeg on your machine rather than bundling its own, and refuses to start an export it cannot complete.
Not yet. OpenVideo runs from source today; there is no packaged build or auto-update, and this site will say so until there is.