Getting started
Install
From source (any platform with Rust). Install a Rust toolchain from https://rustup.rs, then:
cargo install ferraus
The Cargo package that builds the ferraus binary is named ferraus (its directory in the
repository is crates/ferraus-cli; see docs/decisions/0005-binary-package-name.md). From a
clone of the repository, cargo install --path crates/ferraus-cli does the same. Either way
the binary goes to ~/.cargo/bin, which rustup puts on your PATH.
Release installers. Releases are built and attested by the repository's GitHub Actions workflows and published on the releases page. Release builds exist for:
- macOS 13.4 or newer, on Apple silicon and on Intel.
- Linux on x86-64 and ARM64, in two flavors. The glibc build needs glibc 2.38 or newer (Ubuntu 24.04+, Debian 13+, Fedora 39+). The musl build is fully static: it runs on Alpine and other musl systems and on Linux distributions too old for the glibc build, with nothing to install. The shell installer chooses it by itself on those systems. The static build cannot load audio plugins (CLAP, VST3); use the glibc build for plugin hosting.
- Windows 10 and 11 on x86-64 and ARM64, with the Microsoft Visual C++ Redistributable, which most Windows machines already have (https://aka.ms/vs/17/release/vc_redist.x64.exe, or https://aka.ms/vs/17/release/vc_redist.arm64.exe on ARM).
macOS and Linux:
curl -fsSL https://github.com/djynnius/ferraus/releases/latest/download/ferraus-installer.sh | sh
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://github.com/djynnius/ferraus/releases/latest/download/ferraus-installer.ps1 | iex"
The installers put ferraus in ~/.ferraus/bin (set FERRAUS_INSTALL_DIR to change it) and
never ask for administrator rights. Open a new terminal afterwards.
Package managers, which also keep ferraus up to date:
-
Homebrew (macOS, Linux):
brew install djynnius/tap/ferraus -
Debian 13+ and Ubuntu 24.04+ (signed apt repository):
sudo mkdir -p /etc/apt/keyrings sudo curl -fsSLo /etc/apt/keyrings/ferraus-archive-keyring.asc https://djynnius.github.io/packages/ferraus-archive-keyring.asc sudo curl -fsSLo /etc/apt/sources.list.d/ferraus.sources https://djynnius.github.io/packages/apt/ferraus.sources sudo apt update && sudo apt install ferraus -
Fedora 39+ and RHEL (signed dnf repository):
sudo curl -fsSLo /etc/yum.repos.d/ferraus.repo https://djynnius.github.io/packages/rpm/ferraus.repo sudo dnf install ferraus -
Windows (scoop):
scoop bucket add djynnius https://github.com/djynnius/scoop-bucket, thenscoop install djynnius/ferraus. winget follows once Microsoft has reviewed the package. -
The
.deb,.rpm, and Windows MSI files are also on the releases page.
Docker (Linux x86-64 and ARM64; the current folder is /work, models persist in the
ferraus-data volume):
docker run --rm -v "$PWD:/work" -v ferraus-data:/data ghcr.io/djynnius/ferraus separate song.wav -y
The ghcr.io/djynnius/ferraus:latest-cuda image (x86-64) runs models on an NVIDIA GPU with
docker run --gpus all ....
Check the installation
ferraus doctor
{
"ferraus_version": "0.1.0",
"platform": {"os": "macos", "arch": "aarch64"},
"paths": {
"config": "/Users/me/Library/Application Support/ferraus/config.toml",
"cache": "/Users/me/Library/Caches/ferraus",
"data": "/Users/me/Library/Application Support/ferraus/data",
"models": "/Users/me/Library/Caches/ferraus/models",
"sounds": "/Users/me/Library/Application Support/ferraus/data/sounds"
},
"ffmpeg": {"found": true, "path": "/opt/homebrew/bin/ffmpeg", "source": "path", ...},
"models": {"cache_bytes": 0},
"compute": {"providers": ["coreml", "cpu"], "active": "coreml", ...},
"plughost": {"clap_host": ".../ferraus-plughost"},
"engraver": {"helper": null, "lilypond": null},
"suggestions": []
}
doctor reports the version, where config, models, and sounds live, whether FFmpeg was found
(needed only for a few formats, see Troubleshooting), the compute
devices for neural models, the plugin host, and the score engraver. suggestions lists
runnable fixes for anything missing.
Your first five commands
ferraus info song.mp3 # what is in this file?
ferraus convert song.mp3 -o song.flac # lossless copy
ferraus normalize song.flac --lufs -14 -o song.loud.flac
ferraus trim song.flac --range 0:30..1:00 -o chorus.flac
ferraus fx chorus.flac -o chorus.fx.wav --fx "fade:in=1s,out=2s" --fx "reverb:mix=20%"
What the first two print:
{"path": "song.mp3", "container": "mp3", "codec": "mp3", "duration_s": 84.8, "duration": "1:24.800",
"sample_rate": 48000, "channels": 2, "channel_layout": "stereo", "bit_depth": null,
"bitrate_kbps": 129.0, "lossless": false, "tags": {}, "art": {"present": false, "pictures": []}}
song.flac
{"input": "song.mp3", "output": "song.flac", "format": "flac", "bit_depth": 16, "sample_rate": 48000,
"channels": 2, "duration_s": 84.8, "frames": 4070400, ...}
Each command prints the output path, then its result. Each output also gets a
<output>.ferraus.json file beside it, recording exactly what was done
(provenance sidecars). Without -o the output goes beside the
input as <input>.<command>.<ext> (song.normalize.flac). Existing files are never
overwritten unless you pass --overwrite.
Useful on every command:
--json: one machine-readable result object on stdout, nothing else.--dry-run: resolve everything and show the plan without processing.ferraus docs <command>: the full reference page, offline.ferraus <command> --helpis the short version.
Where to go next: a tutorial for your task, or the agent guide if you are building with an AI model.
Commands that use models
Stem separation, speech denoising, the neural pitch trackers, chord transcription, and sheet
music recognition use neural-network models that are not in the package. ferraus never
downloads one unless you allow it, once, with -y:
ferraus separate song.mp3 --tier fast -y
or pull models ahead of time (ferraus models pull separate/htdemucs) and work offline with
--offline. ferraus models list
shows every model with its size, license, and which tiers use it. Some models are not yet
downloadable in this release; see Stems and separation tiers.
Where files live
| What | macOS | Linux | Windows |
|---|---|---|---|
| Config | ~/Library/Application Support/ferraus/config.toml | ~/.config/ferraus/config.toml | %APPDATA%\ferraus\config.toml |
| Models (cache) | ~/Library/Caches/ferraus/models | ~/.cache/ferraus/models | %LOCALAPPDATA%\ferraus\cache\models |
| Sounds, jobs (data) | ~/Library/Application Support/ferraus/data | ~/.local/share/ferraus | %LOCALAPPDATA%\ferraus\data |
On Linux the XDG_CONFIG_HOME, XDG_CACHE_HOME, and XDG_DATA_HOME variables are honoured.
FERRAUS_HOME=<dir> moves all three (to <dir>/config, <dir>/cache, and <dir>/data),
which is handy for a sandbox or a test; FERRAUS_CONFIG points at another config file.
Uninstall
- Release installer:
ferraus self-uninstall -y(--purgealso removes models, sounds, and config). cargo install:cargo uninstall ferraus.- Package managers:
brew uninstall ferraus,sudo apt remove ferraus,sudo dnf remove ferraus,scoop uninstall ferraus,winget uninstall djynnius.ferraus.
Models, sounds, and config stay in the folders above until you delete them (or use --purge).