Official addons for Drift, the free and open-source video editor.
Addons are optional content packs — fonts, effects, transitions, stickers, AI models — that Drift downloads on demand instead of bundling. Keeping them out of the app means a small download to get started, and new effects can ship without a new release. You install them from Extra packs in Drift's settings; there is nothing to download by hand.
This repository holds the source content for those packs and the tooling that builds, signs and publishes them.
| Addon | What it adds |
|---|---|
| Essential Video Effects | Colour fixes, blurs, glow, glitch, green screen, warps, beauty and makeup |
| Trending Effects | Ready-made looks and effect templates |
| Essential Transitions | Fades, wipes, slides and other shot-to-shot transitions, including ports of the GL Transitions collection |
| Essential Audio Effects | Reverb, EQ, pitch and voice shaping |
| Essential Fonts | 21 font families for titles and captions |
| Emoji Stickers | Emoji sticker set and the emoji font used for text |
| Auto Captions | Whisper speech-to-text model for automatic subtitles |
| Subject Cutout | SAM 2 model for isolating a subject from the background |
| People Cutout | Robust Video Matting, so people can be cut out with no clicking and a soft edge |
| People Cutout — Best Quality | The larger RVM model, for cleaner edges on difficult shots |
| Funny Face Effects | Face landmark model for face warps and makeup |
| Scene Labels | YOLOX object detection, so shots can be labelled and searched by what is in them |
| Noise Removal | DeepFilterNet 3 model for cleaning up background noise |
| Depth (3D Lighting & Focus) | Video Depth Anything model for depth-based lighting, background blur, fog and occlusion |
| Text to Speech | Chatterbox Multilingual voiceovers in 21 languages, with voice cloning from a short sample |
| AI Engine | ONNX Runtime, in CPU, NVIDIA and general-GPU builds |
An addon is a .driftpkg: a manifest, a table of contents, and every file's bytes in one
compressed frame. Each package is signed with an Ed25519 key whose public half is compiled into
Drift, and Drift verifies that signature before it installs anything. A package the key did not
sign cannot be installed, no matter where it came from.
Drift asks a small Cloudflare Worker for the catalogue, gets a short-lived download link per addon, fetches the package, verifies it, and only then moves it into place. Published packages are immutable — a new release is a new version, never a rewrite — so a download that succeeded once keeps working.
recipes/ one recipe per addon, plus the scripts that assemble their content
packer/ builds, signs and publishes .driftpkg archives
worker/ the Cloudflare Worker that serves the catalogue
staging/ assembled addon trees, ready to pack
assets/ shared inputs, such as the CC0 photos effect thumbnails are rendered from
Large model weights and native libraries are not in git — a checksum sits beside each one and the bytes are synced separately. Everything else, including fonts, shaders and package metadata, is here in full.
Content is assembled into staging/, packed into a signed archive, then published:
python3 recipes/stage.py fonts effects transitions
python3 packer/pack.py recipes/fonts-essentials.json
python3 packer/publish.py dist/fonts.essentials-1.0.0.driftpkg
python3 packer/release.pystage.py takes any of fonts, stickers, whisper, sam2, face, effects,
effects-trending, transitions, audio-effects, denoise, and defaults to all of them.
Packing needs the zstd and openssl command-line tools; publishing needs an authenticated
wrangler. To cut a new release, bump version in the recipe and run the same commands.
publish.py is what Drift actually downloads from. release.py then refreshes the
packages release so the public mirror matches — it attaches the
newest build of each addon, drops the version it replaced, and regenerates the notes and
checksums. --dry-run shows what would change without touching anything.
Some effects and transitions exist only as addons rather than in the app. Those are generated with
recipes/generate-content-packages.py, and their thumbnails with recipes/generate-thumbs.py.
Drift does not link ONNX Runtime. It loads whichever build you installed at runtime, so the choice between a CPU build and a GPU-accelerated one stays yours, and the app stays small for everyone who never touches the AI features.
Two kinds ship from here:
- A runtime — a complete ONNX Runtime, one per platform, in a CPU or NVIDIA/CUDA build.
- An execution provider — a plugin that layers onto whichever runtime you already have. WebGPU is the one available, and it is how AMD and Intel graphics get accelerated without downloading a second 200 MB runtime.
These are the only packages tied to a specific platform, and Drift will not offer or install one built for a different one. They are fetched from upstream rather than assembled locally:
python3 recipes/fetch-onnxruntime.py # everything upstream publishes
python3 recipes/fetch-onnxruntime.py cpu:linux-x64 # or one at a timeThe script writes the recipes too. Upgrading ONNX Runtime means editing one version table at the top of it and re-running, rather than hand-editing a dozen near-identical files.
There is no ROCm build — upstream removed it in 1.23 — and no OpenVINO, which ships only as a Python wheel.
The catalogue is served by a Cloudflare Worker sitting in front of an R2 bucket. It exposes the index and hands out expiring download links; the app retries against a fresh index if a link has aged out. Responses are cached at the edge, so common downloads cost nothing to serve.
cd worker && bun run deployGL Transitions — most of the transitions in Essential Transitions are ports of the GL Transitions collection, an open catalogue of GPU transition shaders started by Gaëtan Renaudeau. Over fifty named authors appear across the transitions ported here. It is MIT-licensed, and the shader bodies in this repository are theirs, not ours.
- Website and gallery: https://gl-transitions.com/ — the gallery previews every transition, and the editor runs them live in the browser
- Source: https://github.com/gl-transitions/gl-transitions
Ports are generated by recipes/import-gl-transitions.py from
a pinned upstream commit rather than hand-copied, so a re-run reproduces them and an upstream fix
can be pulled in. Each generated main.frag keeps its original Author: / License: header, and
content/transitions/ATTRIBUTION.md indexes every port with
the upstream file and its author. If you are looking for who wrote a particular transition, that
table is the place.
Please credit the original authors if you reuse these shaders, and consider contributing improvements back upstream rather than only here.
The tooling in this repository, and the shaders and effect content written for it, are GPL-3.0 — see LICENSE.
Bundled third-party content is not covered by that and keeps its own terms. Each pack declares
its own in the license field of its recipe: the models are MIT or Apache-2.0, the fonts are
OFL-1.1 / UFL-1.0, and the HarmonyOS Sans emoji font is proprietary, redistributed under the terms
its publisher grants. Check the matching recipe before reusing anything from a pack.
Essential Transitions is GPL-3.0 AND MIT for this reason: the transitions written for Drift are
GPL-3.0, while the GL Transitions ports stay MIT under their original authors — see
Credits. MIT is compatible with GPL-3.0, so the pack redistributes cleanly, but the
MIT notice travels with the shaders: it is in every ported main.frag and in
content/transitions/ATTRIBUTION.md, both of which ship inside the package.