storytold/filmcraft

★ 15,110⑂ 6,318

FilmCraft: An open-source, nonlinear video editor written by scratch in pure Rust

About storytold/filmcraft

storytold/filmcraft is an open-source project on GitHub, mainly written in Rust. FilmCraft: An open-source, nonlinear video editor written by scratch in pure Rust It currently holds 15,110 stars and 6,318 forks with 1,261 open issues, and was last pushed on 2026-10-19 (repository created 2026-09-30).

Project Overview

AI Homed tracks it on the AI Video Projects board and on the AI AI Video Projects list.

GitHub Repository Details

Repository storytold/filmcraft · default branch main · size 31640 KB · watchers 83 · source: GitHub REST API and repository README

README

https://github.com/storytold/filmcraft/blob/HEAD/ArtCraft

FilmCraft

Video editing, color and sound; an open-source, professional non-linear video editor, built in pure Rust.

An open-source, modern non-linear video editing workflow: native on macOS, Windows and Linux, and in the browser via WebAssembly.
By the ArtCraft team.

https://github.com/storytold/filmcraft/blob/HEAD/License: MIT OR Apache-2.0 https://github.com/storytold/filmcraft/blob/HEAD/Written in pure Rust https://github.com/storytold/filmcraft/blob/HEAD/Runs on macOS, Windows and Linux https://github.com/storytold/filmcraft/blob/HEAD/Status: young and moving fast

https://github.com/storytold/filmcraft/blob/HEAD/Join the ArtCraft community on Discord

FilmCraft on getartcraft.com · ArtCraft · All Crafting Apps


https://github.com/storytold/filmcraft/blob/HEAD/FilmCraft in the Color workspace, mid-way through an Apollo 11 documentary cut from NASA footage: the Program monitor on the Saturn V clearing the launch tower with a Launch Complex 39A lower third and an air-to-ground subtitle, Effect Controls with color grading and Scale keyframes on the shot, the color grading panel, bins of NASA selects, and a timeline with 49 picture cuts, B-roll, titles, a caption track, mission audio, a ducked music bed, named markers, a rendered section and live loudness meters

Apollo 11 - Tranquility: a three-minute documentary edit of NASA's 1969 launch, landing and moonwalk film, with subtitles from the mission transcript. Every frame in these screenshots comes from public-domain footage, decoded, composited and graded by FilmCraft's own code.

[!NOTE]
ArtCraft is a community of artists from all walks of life. Digital, generative, music,
games — if you make things, you're one of us. Come say hi on Discord.

Edit · Color · Effects · Audio · Titles · Formats · Export · Interchange · Agents · Get started · Downloads · Docs · Status


FilmCraft is a professional non-linear editor: familiar 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.


Edit

https://github.com/storytold/filmcraft/blob/HEAD/Assembly workspace: bins of film thumbnails, Carnival of Souls in the Source monitor, a Night of the Living Dead cemetery shot in the Program monitor, and the trailer on a three-track timeline with a Chopin score on A2 and loudness meters

The Assembly workspace, cutting a trailer for Night of the Living Dead (1968) with an insert from Carnival of Souls (1962).

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.

https://github.com/storytold/filmcraft/blob/HEAD/Timeline close-up: Night of the Living Dead shots with dissolves on V1, a Carnival of Souls insert on V2, the Chopin nocturne as a green waveform on A2, coloured markers along the ruler, and the loudness meter reading momentary, short-term, integrated and true-peak values

Up close: dissolves, an insert on V2, the score on A2, coloured markers, and the loudness meters on the right.


Color

https://github.com/storytold/filmcraft/blob/HEAD/Color workspace on Charade (1963): Cary Grant and Audrey Hepburn in the Program monitor, the waveform and vectorscope on the left, and the trailer bins and timeline below

The Color workspace on Charade (1963), with live scopes beside the Program monitor.

A complete color grading panel, in the order a colourist works:

https://github.com/storytold/filmcraft/blob/HEAD/The color grading panel on Charade (1963): Basic Correction sliders with coloured temperature and tint tracks, collapsed Creative and Curves sections, shadow, midtone and highlight colour wheels, and HSL Secondary and Vignette toggles
The color grading panel. Basic Correction, Color Wheels and every other section, each with its own on/off switch.
https://github.com/storytold/filmcraft/blob/HEAD/The video scopes: a green luma waveform and a vectorscope of a Charade (1963) frame
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.


Effects and motion

https://github.com/storytold/filmcraft/blob/HEAD/Effects workspace: Effect Controls with Motion, Opacity, Time Remapping and a colour grade, NASA's Earth Views from the ISS in the Program monitor, and the Effects browser open on the Dissolve transitions

NASA's Earth Views from the ISS with a look applied, and the Effects browser open on the dissolves.

https://github.com/storytold/filmcraft/blob/HEAD/Effect Controls with the value and velocity graphs of an eased Scale push-in on the Night of the Living Dead title card, the Program monitor showing the title over a country road, and the Properties panel with Transform and Crop

An eased push-in on the title card: the value graph, the velocity graph and the Bezier influence handle.


Audio


Titles and captions


Formats and codecs

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 | ✓ | ✓ | | | VP8 | ✓ | | Every coding tool, bitstream versions 0–3, hidden altref frames, alpha layer of transparent WebM; bit-exact with libvpx on its published VP8 test vectors; in WebM/Matroska and MP4 | | 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 | | AV1 | ✓ | | Main profile, 8/10-bit 4:2:0 and monochrome, every coding tool incl. film grain, superres and spatial layers; bit-exact with libdav1d on the libaom vectors tested; in MP4 and WebM/Matroska | | DNxHD / DNxHR | ✓ | ✓ | All SMPTE ST 2019-1 CIDs (LB to 444, 8/10/12-bit); export writes DNxHR in MOV | | 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 | | AVI | ✓ | | AVI 1.0 and OpenDML (files past 1 GB); Motion JPEG, H.264, HEVC and uncompressed RGB / YUV with PCM, MP3, MP2 or AC-3. DivX / Xvid and DV not yet | | Stills | ✓ | ✓ | Import PNG, JPEG, GIF, WebP, TIFF and BMP (animated GIF and APNG as clips, with transparency); export PNG sequences and animated GIF |

Also imported: MPEG-2 / MPEG-1 video, AC-3, MP2, MXF (OP1a / OP-Atom), MPEG transport and program streams (AVCHD, broadcast, DVD), Ogg and image sequences. Not yet: AV1 export, camera RAW, E-AC-3. Hardware decoding works on macOS (VideoToolbox), Windows (Media Foundation) and, for H.264 and HEVC, Linux (VA-API); H.264 export can use NVIDIA's encoder on Windows and Linux (opt-in), and H.265 (HEVC Main, 8-bit) export works through it (NVENC on Windows, VideoToolbox on macOS) (#30).


Export

https://github.com/storytold/filmcraft/blob/HEAD/Export mode: destinations for Media File, YouTube, Vimeo, TikTok, Instagram and FTP on the left, a Night of the Living Dead frame in the preview, and H.264 settings on the right (1440x1080 at 23.976 fps, 48000 Hz stereo, entire sequence)

Export mode, set to write the trailer as H.264 MP4.


Interchange

Move timelines between FilmCraft and every other editor:

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.


Built for agents

Every menu item, button, slider and drag in FilmCraft is a command with an id, typed parameters and an enabled state. There are more than 650 engine commands (filmcraft-cli commands lists them), with more commands continuously added. 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.


Everywhere


Get started

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)

Japanese text in the interface and in titles comes from craft-fonts, an optional build input (release builds always include it; without it FilmCraft uses its own and the system's fonts):

git clone https://github.com/storytold/craft-fonts ../craft-fonts
CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo run --release -p filmcraft

The control protocol is documented in docs/control-protocol.md. Stuck, or want to show what you made? Ask in Discord.

Documentation

| | | |---|---| | 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 | Stage, parity numbers, languages, what's next and the progress log | | docs/target-app-parity.md · docs/gaps.md · docs/roadmap.md | Parity assessment, the ranked list of shortfalls, milestones and current focus | | docs/codec-parity.md · docs/file-format-parity.md · docs/hardware-parity.md · docs/ui-parity.md · docs/localization-parity.md | Parity checklists by dimension |

Status

FilmCraft is young and moving fast. Editing, trimming, multicam, colour, keyframes, effects, titles, captions, mixing, codecs and export work today.

FilmCraft is in alpha. We track two numbers (docs/target-app-parity.md, re-measured 2026-10-10):

The biggest gaps today:

GitHub Stars & Activity

15,110Stars
6,318Forks
1,261Open issues
RustLanguage

GitHub Popularity

GitHub stars15,110
Forks6,318
Open issues1,261
Primary languageRust
LicenseApache-2.0
Stars gained today0
Created2026-09-30
Last pushed2026-10-19

Trending History

Trending statusnot on today's boards

Related AI Projects

1

jub0t / Concat

Rust★ 8,936⑂ 0
→
2

calesthio / OpenMontage

Python★ 69,490⑂ 0
→
3

Anil-matcha / Open-Generative-AI

JavaScript★ 30,766⑂ 0
→
4

ATH-MaaS / Pixelle-Video

Python★ 29,138⑂ 0
→
5

hypit-ai / hypit

TypeScript★ 23,479⑂ 0
→
6

KlingAIResearch / LivePortrait

Python★ 19,258⑂ 0
→
7

HBAI-Ltd / Toonflow-app

TypeScript★ 18,104⑂ 0
→
8

Wan-Video / Wan2.2

Python★ 18,004⑂ 0
→

More AI Rankings