Make media flow.
A native macOS media workbench for converting, downloading, editing, and composing media — FFmpeg, yt-dlp, Apple Vision, Core Image, and AVFoundation brought together in one focused app.
Overview · Screenshots · Features · Install · Tech Stack · Build · Privacy
Flux is a native macOS media workbench. Inspection, conversion, editing, background removal, and downloading live behind one consistent interface — built in SwiftUI and AppKit, powered by FFmpeg, FFprobe, yt-dlp, Apple Vision, Core Image, and AVFoundation.
Local media stays on your Mac. There are no accounts, no cloud uploads, and no telemetry. Network access is reserved for remote downloads, metadata, artwork, and updates.
🚧 In active development. Core workflows work today; compatibility, dependency bundling, and failure recovery are still being hardened. Expect rough edges.
Flux at a glance.
The Flux workspace |
Inside a workflow |
| 🎬 Multi-format inspection | Video, audio, image, and GIF files from one window |
| 🔎 Rich metadata preview | Codecs, duration, dimensions, FPS, channels, and file size |
| 🔄 Transcode | Convert and compress video, audio, and images through FFmpeg |
| 🎵 Audio extraction | MP3, M4A, Opus, FLAC, or WAV from any source |
| 🖼️ Image export | PNG, JPEG, WebP, HEIC, AVIF, JPEG XL, and more, with resize |
| 🎞️ GIF creation | Palette-based FFmpeg encoding for optimized, small GIFs |
| ✂️ Video trimming | Resolution, FPS, audio, and quality controls on every export |
| 🪄 Background removal | Local subject isolation via Apple Vision — no cloud, no API |
| 🖌️ Mask refinement | Erase and Restore brushes for precise cutouts |
| 🎨 Canvas editor | Text, layers, shapes, resize, crop, rotate, and opacity |
| ⬇️ yt-dlp integration | Download permitted media through a native UI |
| 🔗 Link recognition | YouTube, Shorts, TikTok, SoundCloud, Spotify, Apple Music |
| 📦 Batch processing | Run many files through shared settings at once |
| ⚙️ Export presets | Save reusable configurations per output target |
| 📋 Jobs queue | Persistent tracking for every piece of work in flight |
Spotify and Apple Music links are used only as metadata references. Flux does not decrypt or rip protected streams.
Every job is validated before it starts. If a step would fail, Flux tells you why in plain English before it ever launches a process — not after.
Pre-flight checks
| 🧰 Required tools | FFmpeg, FFprobe, yt-dlp, libvips present and reachable |
| 📂 Source & destination | Readable input, writable output path |
| 💾 Disk space | Enough room for the rendered output |
| 🎞️ Output compatibility | Codec and format combinations that actually work together |
| ✂️ Trim ranges | Valid start/end within the source |
| 📝 Filename safety | Sanitized, collision-free output names |
| 🚫 Unsupported combos | Caught and reported instead of producing a broken file |
At runtime, jobs use atomic output (write to temp, rename on success), structured progress parsing, safe filename handling, and recovery suggestions attached to every failure.
Security posture: Flux never builds shell command strings. Every external tool is launched
through Foundation.Process with an explicit argument array — no shell, no interpolation, no
injection surface.
| Layer | Tool |
|---|---|
| UI | SwiftUI, AppKit |
| Media engine | FFmpeg, FFprobe |
| Downloads | yt-dlp |
| Image formats | libvips, Core Image, AVFoundation |
| Vision | Apple Vision (subject isolation, mask refinement) |
| Updates | Sparkle |
| Version | |
|---|---|
| macOS | Tahoe 26 or later |
| Architecture | Apple silicon |
| Xcode | 26 or later (source builds only) |
Install the required processing tools with Homebrew:
brew install ffmpeg yt-dlp vips| Tool | Role |
|---|---|
| FFmpeg / FFprobe | Media processing and inspection (required) |
| yt-dlp | Supported download workflows (required for downloads) |
| libvips | Optional extended image format support |
Custom paths can be configured in Settings → Processing Tools.
Grab the latest release from the Releases page, open the DMG, and drag Flux to Applications.
⚠️ First launch (unsigned build). Builds are currently unsigned until a Developer ID is configured. The first time you open Flux, macOS will block it. Right-click Flux in Applications → Open → confirm the prompt. Subsequent launches won't ask. See SECURITY.md and docs/RELEASE.md for the signing roadmap.
Updates after that are automatic: Flux checks the appcast via Sparkle and prompts you when a new version is available. Trigger a manual check with Flux → Check for Updates… (⌘⌥U).
git clone https://github.com/Fi3w0/Flux.git
cd Flux
open Flux.xcodeprojBuild the Flux target with Xcode 26 or later. For a packaged DMG, run
scripts/build-dmg.sh from the repo root.
Flux does not require an account and does not include telemetry.
Conversion, editing, inspection, background removal, and export all run locally. Network access is used only for remote downloads, metadata, artwork, and updates — never for uploading your media.
Flux stands on the shoulders of these projects:
- FFmpeg — media processing and inspection
- yt-dlp — download workflows
- libvips — extended image format support
- Sparkle — software updates
Each dependency remains subject to its own license.
Flux is proprietary software, created and maintained by @Fi3w0.
Issues, feature requests, and pull requests are welcome — see CONTRIBUTING.md for the flow.
Made for the Mac. Built with care.
Local-first media tooling — no accounts, no cloud, no telemetry.

