Point it at your media library. Walk away. Come back to a smaller, better-encoded collection.
Alchemist saves space automatically without asking you to babysit shell commands or risk your originals. It is free, open source, self-hosted, and gives you a web UI for setup, monitoring, and day-to-day control. If you want storage back without turning media management into a hobby project, this is the tool.
Running ffmpeg by hand works when you only have a few files and a lot of patience. Tools like Tdarr can scale, but they also ask you to learn a larger system. Alchemist is built for the middle: no plugin stacks, no flow editors, no separate services to install, smart enough to skip files that would not really benefit, shipped as a single binary, genuinely GPLv3 open source instead of source-available, and designed for people who just want it to work.
Alchemist scans your library, inspects each file, and decides whether transcoding would actually help. If a file is already efficient, it skips it and tells you why in plain English instead of leaving you to guess.
If supported hardware is available, Alchemist uses it automatically. NVIDIA, Intel, AMD, and Apple Silicon are all detected and used without manual setup, and if there is no GPU available it falls back to CPU encoding on its own.
Your originals stay safe. Alchemist never overwrites anything until the new file passes its quality checks. You can keep both files or let Alchemist replace the original, but nothing is lost until you decide that is what you want.
Everything is visible in the web dashboard. You can see what is running, what was skipped, how much space you have recovered, and pause or cancel work whenever you want.
- Give movies, TV, and home videos different behavior with per-library profiles.
- Convert or remux a single uploaded file from the Convert page using the same pipeline Alchemist uses for library jobs. Experimental.
- Catch corrupt or broken files before they surprise you with Library Doctor.
- See exactly how much storage you have recovered in the savings dashboard.
- Understand every skipped file immediately with plain-English explanations.
- Get a ping when work finishes through Discord, Gotify, Telegram, email, or a webhook.
- Create named API tokens for automation, with
read_onlyandfull_accessaccess classes. - Keep heavy jobs out of the way with a scheduler for off-peak hours.
- Push urgent files to the front with the priority queue.
- Switch the engine between background, balanced, and throughput modes without restarting the app.
- Let hardware acceleration happen automatically on NVIDIA, Intel, AMD, or Apple, with CPU fallback when needed.
- Preserve HDR metadata or tonemap to SDR depending on what you need.
- Add folders once and let watch folders keep monitoring them automatically.
- Shape audio output with stream rules for commentary stripping, language filtering, and default-track retention.
- Surface storage-focused recommendations through Library Intelligence, including remux opportunities and commentary cleanup candidates.
Alchemist uses hardware acceleration when it can and falls back to CPU encoding automatically when it cannot. You do not need different workflows for different machines.
| Vendor | Encoders |
|---|---|
| NVIDIA | AV1, HEVC, H.264 (NVENC) |
| Intel | AV1, HEVC, H.264 (QSV) |
| AMD | HEVC, H.264 (VAAPI/AMF) |
| Apple | HEVC, H.264 (VideoToolbox) |
| CPU | AV1 (SVT-AV1), HEVC (x265), H.264 (x264) |
CPU fallback is automatic when no GPU is available.
If you want the fastest path to a running instance, use the published container:
services:
alchemist:
image: ghcr.io/bybrooklyn/alchemist:latest
container_name: alchemist
ports:
- "3000:3000"
volumes:
- ~/.config/alchemist:/app/config
- ~/.config/alchemist:/app/data
- /path/to/media:/media
environment:
- ALCHEMIST_CONFIG_PATH=/app/config/config.toml
- ALCHEMIST_DB_PATH=/app/data/alchemist.db
restart: unless-stoppedThen open http://localhost:3000 in your browser. First-time setup is only reachable from the local network.
On Linux and macOS, the default host-side config location is
~/.config/alchemist/config.toml. When you use Docker, the
recommended bind mount is still ~/.config/alchemist, mapped
into /app/config and /app/data inside the container.
If you prefer docker run, this is the trimmed equivalent:
docker run -d --name alchemist -p 3000:3000 -v ~/.config/alchemist:/app/config -v ~/.config/alchemist:/app/data -v /path/to/media:/media -e ALCHEMIST_CONFIG_PATH=/app/config/config.toml -e ALCHEMIST_DB_PATH=/app/data/alchemist.db --restart unless-stopped ghcr.io/bybrooklyn/alchemist:latestDownload the latest release from GitHub Releases. Prebuilt binaries are published for Linux x86_64, Linux ARM64, Windows x86_64, macOS Intel, and macOS Apple Silicon.
FFmpeg must be installed separately for binary installs:
sudo apt install ffmpeg
sudo dnf install ffmpeg
sudo pacman -S ffmpeg
brew install ffmpeg
winget install Gyan.FFmpegStart Alchemist, then open http://localhost:3000:
./alchemistOn Windows, run alchemist.exe instead.
For macOS and Linux:
git clone https://github.com/bybrooklyn/alchemist.git
cd alchemist
just install
just build
./target/release/alchemistAlchemist requires Rust 1.85 or later (MSRV). Use rustup update stable to ensure you are on a recent toolchain, and make sure FFmpeg is installed separately.
For Windows local development:
just install-w
just dev
just checkThe core contributor path is supported on Windows. Broader release and utility recipes remain Unix-first.
Alchemist exposes explicit CLI subcommands:
alchemist scan /path/to/media
alchemist run /path/to/media
alchemist plan /path/to/media
alchemist plan /path/to/media --jsonscanenqueues matching work and exitsrunscans, enqueues, and waits for processing to finishplananalyzes files and reports what Alchemist would do without enqueuing jobs
- Open http://localhost:3000.
- Complete the setup wizard. It takes about 2 minutes. During first-time setup, the web UI is reachable only from the local network.
- Add your media folders in Watch Folders.
- Alchemist scans and starts working automatically.
- Check the Dashboard to see progress and savings.
- API automation can use bearer tokens created in Settings → API Tokens.
- Read-only tokens are limited to observability and monitoring routes.
| Platform | Status |
|---|---|
| Linux x86_64 | ✅ Supported |
| Linux ARM64 | ✅ Supported |
| Windows x86_64 | ✅ Supported |
| macOS Apple Silicon | ✅ Supported |
| macOS Intel | ✅ Supported |
| Docker linux/amd64 | ✅ Supported |
| Docker linux/arm64 | ✅ Supported |
Licensed under GPLv3. See LICENSE for details.
Start with CONTRIBUTING.md for contribution terms, docs/docs/contributing/development.md for local setup, and RELEASING.md for the release process.