Bladeworks
Bladeworks renders portable Final Cut Pro XML projects (.fcpxml files and
.fcpxmld bundles) to video.
Install
python -m pip install bladeworks
Bladeworks requires both ffmpeg and ffprobe on PATH to inspect source
media and stream Studio preview audio. Run the prerequisite check after
installation:
bladeworks doctor
Quick start
No project of your own yet? Render a packaged sample end to end:
bladeworks doctor # verify ffmpeg, ffprobe, and the torch device
bladeworks examples ls # list the packaged sample projects
bladeworks examples cp single_clip . # copy single_clip.fcpxmld into the current directory
bladeworks render single_clip.fcpxmld --output out.mp4
Render your own project the same way:
bladeworks render path/to/project.fcpxmld --output output.mp4
Preview & edit locally
Both open one .fcpxmld bundle on 127.0.0.1, using the same render engine:
bladeworks studio path/to/project.fcpxmld # interactive web editor (opens in a browser)
bladeworks server run path/to/project.fcpxmld # headless HTTP API, no UI
Use studio to tweak and preview a bundle by hand; use server to drive the
renderer programmatically (bladeworks server health --url <url> checks readiness).
More commands
bladeworks inspect path/to/project.fcpxml # classify what a document uses, without rendering
bladeworks projects path/to/project.fcpxml # list the projects a file/bundle contains
bladeworks proxy path/to/project.fcpxmld # generate downscaled proxy media
bladeworks --help # all commands and options
Capabilities
Bladeworks treats real Final Cut Pro as its correctness oracle. Our fidelity goal differs by area:
- Core mechanics: spine & lanes, transform, crop, distort, conform, retiming, and compound clips. We aim for near-100% parity with Final Cut Pro, up to numeric differences in rendering arithmetic.
- Effects & transitions: we aim to cover every default-included Final Cut effect and transition template, at semantic parity, so the mechanism, timing, and endpoints match, while fine texture may differ.
- Color: we aim for 100% of Final Cut's color-adjustment functionality at strong approximate visual similarity, so a viewer shouldn't be able to tell the difference.
Where each capability stands today (✅ supported · 🟡 partial · ⛔ out of scope near-term):
| Capability | Status | Notes |
|---|---|---|
| Spine, lanes & z-index | ✅ | Full connected-clip / lane compositing |
| Compositing (blend / opacity / alpha) | ✅ | 17 RGB blend modes, 4 matte modes; HSL modes on roadmap |
| Transform / Crop / Distort | ✅ | Keyframed; shear expressed via four-corner Distort |
| Color adjustments | ✅ | Basic grade exact; Color Board & Wheels approximated |
| Color curves / Hue-Sat curves / LUTs | ⛔ | Out of scope near-term |
| Effects & transitions | 🟡 | 32 effect ports, 46 transitions; parameter support varies by effect |
| Retime | 🟡 | Constant / reverse / hold / linear ramp; smooth ramps & frame-blend on roadmap |
| Compound & multicam clips | ✅ | Genuinely recursive |
| Text / titles | 🟡 | Composited from caller-supplied rasters; no native font engine |
| Masking & keying | ✅ | Numeric masks + green-screen keyer; ML / tracked masks out of scope |
| Media import | 🟡 | Broad codec support; HDR is tone-mapped to SDR today (native HDR & more formats on roadmap) |
| Export | 🟡 | H.264 delivery + ProRes 4444 alpha; HEVC / 10-bit / HDR / image-sequence exits on roadmap |
| Audio | 🟡 | Mono / stereo deliver; surround 5.1 on roadmap |
| Motion templates | ⛔ | Proprietary Motion rigs; out of scope near-term |
Under the hood
We love tensors. As it turns out, PyTorch is a highly capable tensor-operation package that is now portable across a range of GPU-accelerated platforms such as NVIDIA graphics, Apple Silicon, and AMD. So we implemented the entire rendering system in the Python ecosystem, on PyTorch: every pixel operation is a tensor op, and the same code runs on whatever accelerator (or CPU) you have.
Core dependencies: PyTorch (rendering), PyAV (media decode / audio / mux), NumPy, Pillow, and fonttools; the local server and Studio add FastAPI, Uvicorn, and aiortc.
Contributing
At this time, while in early development, we are not accepting external source-code contributions. We do gladly welcome detailed bug reports and feature requests in the Issues section. Using your coding agent to give detailed feedback against the source will greatly increase the speed and likelihood of your request being incorporated.
Test a checkout
python -m pip install -r requirements.txt
python -m pip install -e . --no-deps
python -m pytest -q
License
Bladeworks is licensed under the GNU Affero General Public License v3.0 only. See LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bladeworks-0.1.3.tar.gz.
File metadata
- Download URL: bladeworks-0.1.3.tar.gz
- Upload date:
- Size: 3.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a3c31bb4b0b48221f9d3978198cb8962ced3131b40f5cdf3f6cb6dcfb07d3d4
|
|
| MD5 |
d199c8115324d1e94eb025e85231d132
|
|
| BLAKE2b-256 |
d1bae2b2a31c33ef50760cb471cbaa4f6cac37afad3e46ebe3d2d33a17356586
|
Provenance
The following attestation bundles were made for bladeworks-0.1.3.tar.gz:
Publisher:
publish.yml on bladeworks-ai/bladeworks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bladeworks-0.1.3.tar.gz -
Subject digest:
6a3c31bb4b0b48221f9d3978198cb8962ced3131b40f5cdf3f6cb6dcfb07d3d4 - Sigstore transparency entry: 2582667970
- Sigstore integration time:
-
Permalink:
bladeworks-ai/bladeworks@acd03886fffbf7af78e58901b45739ac5328136b -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/bladeworks-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@acd03886fffbf7af78e58901b45739ac5328136b -
Trigger Event:
release
-
Statement type:
File details
Details for the file bladeworks-0.1.3-py3-none-any.whl.
File metadata
- Download URL: bladeworks-0.1.3-py3-none-any.whl
- Upload date:
- Size: 3.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcb42399ac3670c3b2c6a2070632581322f1ed8b1d8cd6f9a36372b4a1236900
|
|
| MD5 |
d24109a81b4ef9d4e175104f920e2cd1
|
|
| BLAKE2b-256 |
3e725fda4dafabc89ad7bcda87115be0af0ffbb8382fde38f424ebea88fa7c29
|
Provenance
The following attestation bundles were made for bladeworks-0.1.3-py3-none-any.whl:
Publisher:
publish.yml on bladeworks-ai/bladeworks
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
bladeworks-0.1.3-py3-none-any.whl -
Subject digest:
bcb42399ac3670c3b2c6a2070632581322f1ed8b1d8cd6f9a36372b4a1236900 - Sigstore transparency entry: 2582667979
- Sigstore integration time:
-
Permalink:
bladeworks-ai/bladeworks@acd03886fffbf7af78e58901b45739ac5328136b -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/bladeworks-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@acd03886fffbf7af78e58901b45739ac5328136b -
Trigger Event:
release
-
Statement type: