Skip to content

Repository files navigation

Flux app icon

Flux

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.

macOS Apple Silicon SwiftUI Status License

Release Downloads Changelog

Overview · Screenshots · Features · Install · Tech Stack · Build · Privacy


Overview

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.


📸 Screenshots

Flux at a glance.

Flux overview
The Flux workspace
Flux workflow detail
Inside a workflow

✨ Features

Inspection & metadata

🎬 Multi-format inspection Video, audio, image, and GIF files from one window
🔎 Rich metadata preview Codecs, duration, dimensions, FPS, channels, and file size

Conversion & compression

🔄 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

Image editing

🪄 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

Downloading

⬇️ yt-dlp integration Download permitted media through a native UI
🔗 Link recognition YouTube, Shorts, TikTok, SoundCloud, Spotify, Apple Music

Workflow

📦 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.


🛡️ Reliability

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.


🧰 Tech Stack

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

🧰 Requirements

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.


💾 Install

Download the DMG

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 ApplicationsOpen → 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).

Build from source

git clone https://github.com/Fi3w0/Flux.git
cd Flux
open Flux.xcodeproj

Build the Flux target with Xcode 26 or later. For a packaged DMG, run scripts/build-dmg.sh from the repo root.


🔒 Privacy

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.


🧩 Open-Source Components

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.


📄 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.

fiwlabs.dev

Local-first media tooling — no accounts, no cloud, no telemetry.

About

Native macOS media workbench — convert, download, edit, and compose media locally. SwiftUI + AppKit on top of FFmpeg, yt-dlp, and Apple Vision.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages