Professional video editing, rebuilt from scratch in pure Rust.
An open-source, clean-room take on the Adobe Premiere Pro workflow: native on macOS, Windows and Linux, and in the browser via WebAssembly.
By the artcraft team.
Edit · Color · Effects · Audio · Formats · Export · Interchange · Agents · Get started
Cutting a trailer for Night of the Living Dead (1968). Every frame in these screenshots comes from public-domain footage, decoded, composited and graded by FilmCraft's own code.
FilmCraft is a non-linear editor for people who know Premiere: the same panels, workspaces, tools and shortcuts, so your hands already know where everything is. Underneath, it is new from the bitstream up. The H.264, HEVC, ProRes and AAC codecs are our own, written in Rust from the public specifications. A GPU compositor works in linear light. Frame math runs on exact integer time, so edits never drift. And every action in the app is a command that an AI agent can drive as precisely as you can.
A timeline you already know. Source and Program monitors, bins with thumbnails, a multi-track timeline with patch and target buttons, sync locks and linked selection. The Editing, Assembly, Color, Effects and Audio workspaces are all there, and every panel docks wherever you want it.
,) or overwrite (.) onto the patched tracks. Lift (;) and extract (') take ranges back out.⌥← ⌥→, ×5 with ⇧), toggles the trim type with ⌃T and extends them to the playhead with E. Q and W ripple-trim to the playhead. The Trim Monitor shows both sides of the edit, and dynamic trimming trims live while it plays: L forward, J back, K to stop and commit as one undo step.⌘K) on one or all tracks; nesting; copy, paste and paste insert; ripple delete and close gap; snapping; unlimited undo with a History panel.⌥⌘K) with a drawn keyboard, panel-specific shortcuts, conflict warnings and presets for FilmCraft, Premiere Pro, Final Cut Pro and Avid key layouts.
A complete Lumetri-style grading panel, in the order a colourist works:
![]() | ![]() Scopes that tell the truth. The waveform and vectorscope are computed from the graded frame. All grading happens in linear light, in 32-bit float. |
An eased push-in on the title card: the value graph, the velocity graph and the Bezier influence handle.
ebur128 filter to the tenth of a LU.No FFmpeg inside. The video codecs, AAC, Opus and the containers are our own Rust code, implemented from the public ITU-T, ISO and IETF specifications and tested frame by frame against ffmpeg as an external oracle.
| Decode | Encode | Notes | |
|---|---|---|---|
| H.264 / AVC | ✓ | ✓ | Decoder bit-exact on 37+ streams, 500–600 fps at 1080p. Encoder: High, Main and Baseline profiles, CABAC, B-frames, CRF/CBR/VBR/2-pass |
| HEVC / H.265 | ✓ | Main and Main 10, bit-exact on 41 streams (tiles, WPP, PCM, long-term references), about 225 fps at 1080p | |
| Apple ProRes | ✓ | ✓ | Decodes 422 Proxy to 4444 XQ; export writes 422 HQ |
| AAC-LC | ✓ | ✓ | |
| VP9 | ✓ | Profiles 0–3, 8/10/12-bit, 4:2:0 to 4:4:4, tiles and superframes; bit-exact on 50+ streams; in WebM/Matroska and MP4 | |
| Opus | ✓ | SILK, CELT, hybrid and multistream surround; range-exact on every RFC 8251 conformance vector; in WebM/Matroska and MP4 | |
| MJPEG, PCM | ✓ | ✓ | |
| MP3, FLAC, ALAC, Vorbis | ✓ | Via the symphonia crate (MPL-2.0) for now, to be replaced by our own | |
| MP4 / MOV | ✓ | ✓ | Fragmented MP4, edit lists, timecode tracks |
| Matroska / WebM | ✓ | Lacing, Cues, header stripping, HDR colour metadata | |
| Stills | ✓ | ✓ | Import PNG, JPEG, GIF, WebP, TIFF and BMP; export PNG sequences and animated GIF |
VP9, AV1, DNxHR and MXF are next (roadmap).
Move timelines between FilmCraft and every other editor:
metadata.filmcraft.M2) and one EDL per track.Import merges the document's bins, media and sequences into your project as one undoable step, and links each media file it finds on disk.
Every menu item, button, slider and drag in FilmCraft is a command with an id, typed parameters and an enabled state. There are about 135 engine commands so far, with the rest of Premiere's catalogue on the way. The UI, the CLI, a JSON control channel and an MCP server all dispatch the same commands, so Claude or any agent can cut, trim, grade, mix and export exactly the way a person does. The UI can also be driven at the level of mouse and keyboard: every widget has an automation id, and agents can click, drag, type and take screenshots.
// over the control channel (JSON lines on TCP) or as MCP tool calls
{"method": "engine.execute", "params": {"command": "timeline.place",
"params": {"item": 1, "track": "V1", "seconds": 0, "sourceIn": 284298240000000, "duration": 1270080000000}}}
{"method": "engine.execute", "params": {"command": "effects.setParam",
"params": {"clip": 87, "effect": "lumetri", "param": "curve_luma", "value": [[0,0],[0.25,0.21],[0.75,0.82],[1,1]]}}}
{"method": "ui.screenshot", "params": {"path": "frame.png"}}
The trailer and the grades in these screenshots were built exactly this way, by an agent driving the running app.
wasm32; the browser front end is next.ui-egui) over the engine, so a different front end can replace it without touching editing logic.cargo run --release -p filmcraft # the desktop app, with a demo project
cargo run --release -p filmcraft -- --control 9876 # plus the JSON-lines control server
cargo run --release -p filmcraft-cli -- commands # list every engine command
cargo run --release -p filmcraft-cli -- mcp # MCP server (headless)
The control protocol is documented in docs/control-protocol.md.
| CONTRIBUTING.md · docs/contributing.md | Setup, quality gates, commit conventions, how to add commands, effects, codecs, panels and assets |
| AGENTS.md | The rules every contributor must follow: assets, clean room, licences |
| docs/architecture.md | Layers, data model, time base, command system, render and export pipeline |
| docs/testing.md | Unit, property and ffmpeg-oracle tests, accuracy criteria, benchmarks |
| docs/agents.md | Driving FilmCraft over MCP and the control channel; how agents develop it |
| docs/control-protocol.md | Control-channel and MCP reference |
| docs/project-files.md | .fcproj format, schema migrations, auto-save and crash recovery |
| docs/graphics.md · docs/captions.md | Text engine, graphic clips and tools; caption tracks and formats |
| ROADMAP.md | Milestones and estimates |
FilmCraft is young and moving fast: roughly 45% of the way to Premiere Pro parity, with editing, trimming, colour, keyframes, titles, captions, mixing, codecs and export working today. ROADMAP.md tracks every milestone with estimates.
A layered Cargo workspace:
| Layer | Crates |
|---|---|
| Codecs and containers | h264, h264enc, hevc, vp9, prores, aac, opus, isobmff, matroska, bitstream |
| Foundations | time, geom, color, frame, media, text, project, audio-dsp |
| Editing and interchange | edit, codecs, captions, format (project files), interchange |
| Rendering and output | render, gpu, export |
| Engine | engine: command registry, session, undo, jobs |
| Front ends | ui-egui, automation (MCP), apps/filmcraft, apps/filmcraft-cli |
| Test support | testkit (ffmpeg oracles, fixtures), golden (golden-image tests) |
Nothing below the front ends depends on a UI toolkit or OS API. cargo xtask ci checks formatting, lints, tests, the layering rules, asset attribution and the wasm build.
Open-source, clean-room, pure-Rust creative tools. Each runs natively on macOS, Windows and Linux, and on the web.
| PhotoCraft | Image editing and compositing, Photoshop-class: layers, masks, adjustments and byte-exact PSD/PSB round trips. |
| DrawCraft | Vector illustration, Illustrator-class: paths, shapes, type and artboards. |
| FilmCraft | Non-linear video editing, Premiere Pro-class: timeline editing, own codecs, GPU compositing, colour and export. You are here. |
| LightCraft | Photo library and non-destructive raw developer, Lightroom-class: catalog, culling, develop and export. |
| PrintCraft | PDF viewing and editing, Acrobat-class: pages, annotations, forms and document tools. |
Footage and music in the screenshots: Night of the Living Dead (1968), Carnival of Souls (1962) and Charade (1963), all in the US public domain; Earth Views from the ISS by NASA (a US Government work; NASA does not endorse this project); Chopin's Nocturne Op. 48 No. 1 and Ballade No. 1, performed for Musopen and released under CC0. The media itself is not in this repository. Sources and details for every asset are in ATTRIBUTION.md.
FilmCraft is an independent implementation. It contains no Adobe code, icons, images, presets or LUTs, and no GPL or LGPL code; every icon is drawn in code and every asset is openly licensed and attributed (AGENTS.md). ffmpeg is used only as an external test oracle. Adobe and Premiere Pro are trademarks of Adobe Inc.; FilmCraft is not affiliated with Adobe.
FilmCraft is dual-licensed under MIT or Apache-2.0, at your option. Bundled assets keep their own open licences, listed in ATTRIBUTION.md.
Rust
99.3%
Professional video editing, rebuilt from scratch in pure Rust.
An open-source, clean-room take on the Adobe Premiere Pro workflow: native on macOS, Windows and Linux, and in the browser via WebAssembly.
By the artcraft team.
Edit · Color · Effects · Audio · Formats · Export · Interchange · Agents · Get started
Cutting a trailer for Night of the Living Dead (1968). Every frame in these screenshots comes from public-domain footage, decoded, composited and graded by FilmCraft's own code.
FilmCraft is a non-linear editor for people who know Premiere: the same panels, workspaces, tools and shortcuts, so your hands already know where everything is. Underneath, it is new from the bitstream up. The H.264, HEVC, ProRes and AAC codecs are our own, written in Rust from the public specifications. A GPU compositor works in linear light. Frame math runs on exact integer time, so edits never drift. And every action in the app is a command that an AI agent can drive as precisely as you can.
A timeline you already know. Source and Program monitors, bins with thumbnails, a multi-track timeline with patch and target buttons, sync locks and linked selection. The Editing, Assembly, Color, Effects and Audio workspaces are all there, and every panel docks wherever you want it.
,) or overwrite (.) onto the patched tracks. Lift (;) and extract (') take ranges back out.⌥← ⌥→, ×5 with ⇧), toggles the trim type with ⌃T and extends them to the playhead with E. Q and W ripple-trim to the playhead. The Trim Monitor shows both sides of the edit, and dynamic trimming trims live while it plays: L forward, J back, K to stop and commit as one undo step.⌘K) on one or all tracks; nesting; copy, paste and paste insert; ripple delete and close gap; snapping; unlimited undo with a History panel.⌥⌘K) with a drawn keyboard, panel-specific shortcuts, conflict warnings and presets for FilmCraft, Premiere Pro, Final Cut Pro and Avid key layouts.
A complete Lumetri-style grading panel, in the order a colourist works:
![]() | ![]() Scopes that tell the truth. The waveform and vectorscope are computed from the graded frame. All grading happens in linear light, in 32-bit float. |
An eased push-in on the title card: the value graph, the velocity graph and the Bezier influence handle.
ebur128 filter to the tenth of a LU.No FFmpeg inside. The video codecs, AAC, Opus and the containers are our own Rust code, implemented from the public ITU-T, ISO and IETF specifications and tested frame by frame against ffmpeg as an external oracle.
| Decode | Encode | Notes | |
|---|---|---|---|
| H.264 / AVC | ✓ | ✓ | Decoder bit-exact on 37+ streams, 500–600 fps at 1080p. Encoder: High, Main and Baseline profiles, CABAC, B-frames, CRF/CBR/VBR/2-pass |
| HEVC / H.265 | ✓ | Main and Main 10, bit-exact on 41 streams (tiles, WPP, PCM, long-term references), about 225 fps at 1080p | |
| Apple ProRes | ✓ | ✓ | Decodes 422 Proxy to 4444 XQ; export writes 422 HQ |
| AAC-LC | ✓ | ✓ | |
| VP9 | ✓ | Profiles 0–3, 8/10/12-bit, 4:2:0 to 4:4:4, tiles and superframes; bit-exact on 50+ streams; in WebM/Matroska and MP4 | |
| Opus | ✓ | SILK, CELT, hybrid and multistream surround; range-exact on every RFC 8251 conformance vector; in WebM/Matroska and MP4 | |
| MJPEG, PCM | ✓ | ✓ | |
| MP3, FLAC, ALAC, Vorbis | ✓ | Via the symphonia crate (MPL-2.0) for now, to be replaced by our own | |
| MP4 / MOV | ✓ | ✓ | Fragmented MP4, edit lists, timecode tracks |
| Matroska / WebM | ✓ | Lacing, Cues, header stripping, HDR colour metadata | |
| Stills | ✓ | ✓ | Import PNG, JPEG, GIF, WebP, TIFF and BMP; export PNG sequences and animated GIF |
VP9, AV1, DNxHR and MXF are next (roadmap).
Move timelines between FilmCraft and every other editor:
metadata.filmcraft.M2) and one EDL per track.Import merges the document's bins, media and sequences into your project as one undoable step, and links each media file it finds on disk.
Every menu item, button, slider and drag in FilmCraft is a command with an id, typed parameters and an enabled state. There are about 135 engine commands so far, with the rest of Premiere's catalogue on the way. The UI, the CLI, a JSON control channel and an MCP server all dispatch the same commands, so Claude or any agent can cut, trim, grade, mix and export exactly the way a person does. The UI can also be driven at the level of mouse and keyboard: every widget has an automation id, and agents can click, drag, type and take screenshots.
// over the control channel (JSON lines on TCP) or as MCP tool calls
{"method": "engine.execute", "params": {"command": "timeline.place",
"params": {"item": 1, "track": "V1", "seconds": 0, "sourceIn": 284298240000000, "duration": 1270080000000}}}
{"method": "engine.execute", "params": {"command": "effects.setParam",
"params": {"clip": 87, "effect": "lumetri", "param": "curve_luma", "value": [[0,0],[0.25,0.21],[0.75,0.82],[1,1]]}}}
{"method": "ui.screenshot", "params": {"path": "frame.png"}}
The trailer and the grades in these screenshots were built exactly this way, by an agent driving the running app.
wasm32; the browser front end is next.ui-egui) over the engine, so a different front end can replace it without touching editing logic.cargo run --release -p filmcraft # the desktop app, with a demo project
cargo run --release -p filmcraft -- --control 9876 # plus the JSON-lines control server
cargo run --release -p filmcraft-cli -- commands # list every engine command
cargo run --release -p filmcraft-cli -- mcp # MCP server (headless)
The control protocol is documented in docs/control-protocol.md.
| CONTRIBUTING.md · docs/contributing.md | Setup, quality gates, commit conventions, how to add commands, effects, codecs, panels and assets |
| AGENTS.md | The rules every contributor must follow: assets, clean room, licences |
| docs/architecture.md | Layers, data model, time base, command system, render and export pipeline |
| docs/testing.md | Unit, property and ffmpeg-oracle tests, accuracy criteria, benchmarks |
| docs/agents.md | Driving FilmCraft over MCP and the control channel; how agents develop it |
| docs/control-protocol.md | Control-channel and MCP reference |
| docs/project-files.md | .fcproj format, schema migrations, auto-save and crash recovery |
| docs/graphics.md · docs/captions.md | Text engine, graphic clips and tools; caption tracks and formats |
| ROADMAP.md | Milestones and estimates |
FilmCraft is young and moving fast: roughly 45% of the way to Premiere Pro parity, with editing, trimming, colour, keyframes, titles, captions, mixing, codecs and export working today. ROADMAP.md tracks every milestone with estimates.
A layered Cargo workspace:
| Layer | Crates |
|---|---|
| Codecs and containers | h264, h264enc, hevc, vp9, prores, aac, opus, isobmff, matroska, bitstream |
| Foundations | time, geom, color, frame, media, text, project, audio-dsp |
| Editing and interchange | edit, codecs, captions, format (project files), interchange |
| Rendering and output | render, gpu, export |
| Engine | engine: command registry, session, undo, jobs |
| Front ends | ui-egui, automation (MCP), apps/filmcraft, apps/filmcraft-cli |
| Test support | testkit (ffmpeg oracles, fixtures), golden (golden-image tests) |
Nothing below the front ends depends on a UI toolkit or OS API. cargo xtask ci checks formatting, lints, tests, the layering rules, asset attribution and the wasm build.
Open-source, clean-room, pure-Rust creative tools. Each runs natively on macOS, Windows and Linux, and on the web.
| PhotoCraft | Image editing and compositing, Photoshop-class: layers, masks, adjustments and byte-exact PSD/PSB round trips. |
| DrawCraft | Vector illustration, Illustrator-class: paths, shapes, type and artboards. |
| FilmCraft | Non-linear video editing, Premiere Pro-class: timeline editing, own codecs, GPU compositing, colour and export. You are here. |
| LightCraft | Photo library and non-destructive raw developer, Lightroom-class: catalog, culling, develop and export. |
| PrintCraft | PDF viewing and editing, Acrobat-class: pages, annotations, forms and document tools. |
Footage and music in the screenshots: Night of the Living Dead (1968), Carnival of Souls (1962) and Charade (1963), all in the US public domain; Earth Views from the ISS by NASA (a US Government work; NASA does not endorse this project); Chopin's Nocturne Op. 48 No. 1 and Ballade No. 1, performed for Musopen and released under CC0. The media itself is not in this repository. Sources and details for every asset are in ATTRIBUTION.md.
FilmCraft is an independent implementation. It contains no Adobe code, icons, images, presets or LUTs, and no GPL or LGPL code; every icon is drawn in code and every asset is openly licensed and attributed (AGENTS.md). ffmpeg is used only as an external test oracle. Adobe and Premiere Pro are trademarks of Adobe Inc.; FilmCraft is not affiliated with Adobe.
FilmCraft is dual-licensed under MIT or Apache-2.0, at your option. Bundled assets keep their own open licences, listed in ATTRIBUTION.md.
Rust
99.3%