MCPcopy
hub / github.com/stemdeckapp/stemdeck

github.com/stemdeckapp/stemdeck @v0.8.0-alpha.4 sqlite

repository ↗ · DeepWiki ↗ · release v0.8.0-alpha.4 ↗
696 symbols 2,052 edges 52 files 82 documented · 12%
README

StemDeck

Free, local stem separation. No account. No upload. No subscription.

CI GitHub Stars Total Downloads Latest Release License

JOIN THE COMMUNITY

GitHub Discord Reddit Instagram X Website

Drop in an MP3, WAV, or FLAC file, or paste a YouTube URL, and StemDeck splits the audio into up to six stems (vocals, drums, bass, guitar, piano, other). Play them back in a DAW-style multitrack mixer: mute, solo, balance levels, zoom the waveform, loop a region, and export individual stems or a custom mix. Everything runs locally on your own machine.

What is this? StemDeck is a stem separation tool, not a downloader. Its main job is processing audio you already own: drag an MP3, WAV, or FLAC onto the import bar and go. YouTube support is a convenience for content you have the right to process. StemDeck does not store, cache, or redistribute any downloaded content. Everything happens locally and nothing leaves your machine.

StemDeck is a free, open alternative to cloud stem-splitters like Moises and LALAL.AI: no account, no quota, no uploads, no subscription. If you want stems for personal study and prefer to keep things local and free, StemDeck has you covered. If you need the polish, a mobile app, or deeper musician tooling, the commercial products are a better fit.

StemDeck screenshot

We Recommend

StemDeck is free and does not accept any money, sponsorship, or funding - not from users, not from anyone listed below. We share these makers and artists purely for the joy of pointing you toward wonderful people doing beautiful work. Go meet them ❤️

Name What they do Link
Dlima Guitars Custom guitars and basses @dlimaguitars
Lisbon Guitar Works Guitar building dlimaguitars.com
Joao Gaspar Producer/Film Scorer, Touring/Session Musician @jay_glaspar
Kris Luthier Luthier and Musical Instrument Repair, Lisboa @krisluthier
Thomann Online Music Store @thomann.music
Analog4Lyfe Analog music gear @analog4lyfe
Empress Effects Effects pedals empresseffects.com

Features

6-stem separation via Demucs htdemucs_6s, with auto-detection of the best Torch device (CUDA on NVIDIA, MPS on Apple Silicon, CPU fallback).

YouTube and local file import. Paste a YouTube URL or drop an MP3 or WAV directly onto the import bar.

DAW-style waveform editor with min/max sample rendering across all stems, shared normalization, zoom in/out/Fit, loop drag on the ruler, gold playhead overlay, and stem-aligned lanes.

Stem subset extraction. Click stem chips to choose which stems to keep. Clicking from "all selected" snaps to "only this one"; subsequent clicks add or remove.

"Original" backing track. When you pick a subset, a 7th lane contains the complement (full song minus selected stems), perfect for A/B reference without doubling.

Downloadable selected mix. A single mix.wav of just your selected stems, summed via ffmpeg amix.

Per-stem mixer with volume fader, mute, solo, and "monitor" (solo-only) per stem. State syncs between the preview mixer and the stems sidebar.

Live VU meters per stem. Post-gain RMS via Web Audio analysers with peak hold and slow falloff.

Song analysis including BPM (librosa beat tracker), key, scale, and confidence (Albrecht-Shanahan profiles), integrated LUFS (BS.1770), and sample peak in dBFS.

Cancellable jobs. Cancel mid-pipeline and the runner terminates the active subprocess immediately, deletes the partial job dir, and returns to ready.

Library panel with folder-based track organisation, drag-and-drop, search, and trash.


Honest Comparison

StemDeck is not trying to compete with commercial stem-separation products. It covers the core use case well and stops there. This table exists so you can make an informed choice rather than discover the gaps after the fact.

StemDeck Moises / LALAL.AI / similar
Price Free, forever Freemium; credits or subscription required for regular use
Hosting Runs entirely on your machine Cloud; audio must be uploaded to their servers
Account / login None Required
Internet required Only for YouTube download and first model fetch (~170 MB, cached after) Always; no offline use
Privacy Audio never leaves your machine Audio is uploaded and processed on third-party servers
Data retention You control it; delete anytime Governed by their privacy policy and retention period
Stem model Demucs htdemucs_6s (open source, Meta AI) Proprietary models, regularly updated, generally higher quality
Stem count 6 (vocals, drums, bass, guitar, piano, other) Up to 10 depending on service and plan
Input formats YouTube URL, MP3, WAV MP3, WAV, FLAC, M4A, and more depending on service
Processing speed Depends on your hardware; fast with a GPU, slow on CPU only Fast regardless of your hardware (runs on their servers)
Batch processing One job at a time Yes, on paid plans
Mobile app No iOS and Android
Extra features No (no pitch shift, chord detection, lyrics, click track, BPM tap) Yes, varies by product
Polish Functional, hobby-grade UI Polished, production-grade apps
Source code Open source, forkable, self-hostable Closed source

If you need speed, quality, mobile access, or the extra musician tooling, the commercial products are worth the money. If you want stems for personal study, prefer to keep audio private, or just want something that runs locally with no strings attached, StemDeck is enough.


Download

Pre-built installers and zips are attached to each GitHub Release.

macOS

DMG GPU Chip
StemDeck-macOS-arm64.dmg Apple Silicon (MPS) M1 and later
StemDeck-macOS-x64.dmg CPU only Intel

Open the DMG, drag StemDeck to Applications, and launch it. On first launch the setup screen downloads the Python runtime (~500 MB), FFmpeg, and the Demucs model (~170 MB). Subsequent launches skip setup and start in seconds. No Python or system dependencies required.

macOS may show a Gatekeeper prompt on first open — right-click the app and choose Open to bypass it.

Windows

Zip GPU Approx. size
StemDeck-Windows-x64.zip CPU only ~700 MB
StemDeck-Windows-x64.NVIDIA.zip NVIDIA CUDA ~1.6 GB

Extract the zip anywhere, run StemDeck.exe. On first launch the app verifies the bundled Python runtime and downloads FFmpeg and the Demucs model (~170 MB). Subsequent launches skip this and start in seconds. Everything is self-contained; no Python or system dependencies required.


Technologies

Platform Powered by Demucs CI: GitHub Actions

StemDeck is built on Python 3.12 managed via uv, with a FastAPI backend serving REST and Server-Sent Events. Stem separation uses Demucs (htdemucs_6s), Meta AI's open-source 6-stem neural network. YouTube audio is fetched via yt-dlp; transcoding and mixing use FFmpeg. BPM detection and key analysis run on librosa; loudness measurement uses pyloudnorm (ITU-R BS.1770). The macOS and Windows desktop shells are Tauri v2 (Rust/WKWebView on macOS, Rust/WebView2 on Windows). The frontend is vanilla JS with the Web Audio API, no framework and no build step; waveforms are rendered on <canvas> using min/max sample rendering.

Thanks to the creators and maintainers of all the open-source libraries that make StemDeck possible.


Build from Source

macOS Native App

Requires Rust, Node.js, and Python 3.12. Builds a self-contained .app that downloads its own runtime on first launch.

# First time only — add the cross-compilation targets
rustup target add aarch64-apple-darwin   # Apple Silicon
rustup target add x86_64-apple-darwin    # Intel

# Build Apple Silicon
ARCH=arm64 scripts/macos/make-runtime-pack.sh
ARCH=arm64 scripts/macos/make-app.sh
ARCH=arm64 scripts/macos/make-dmg.sh

# Build Intel (requires Rosetta 2 and an x86_64 Python)
ARCH=x64 scripts/macos/make-runtime-pack.sh
ARCH=x64 scripts/macos/make-app.sh
ARCH=x64 scripts/macos/make-dmg.sh

The .app lands at desktop/src-tauri/target/<target>/release/bundle/macos/StemDeck.app. The DMG lands at .build/macos-dist/StemDeck-macOS-<arch>.dmg.

To run a fresh build directly without the DMG:

open desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/StemDeck.app

If macOS blocks the app with a Gatekeeper prompt, run:

xattr -dr com.apple.quarantine desktop/src-tauri/target/aarch64-apple-darwin/release/bundle/macos/StemDeck.app

Note: To test a clean first-launch during development, you can wipe previous app data first: rm -rf ~/Library/Application\ Support/StemDeck. Don't do this on a real install.


Web Server (macOS / Linux / Windows with Python 3.12+)

Prerequisites

Python 3.12 or newer, ffmpeg on your PATH, and uv. Around 170 MB of free disk for the Demucs model, which downloads automatically on first run.

macOS / Linux (one-shot)

git clone https://github.com/stemdeckapp/stemdeck stemdeck && cd stemdeck
./run.sh setup     # installs ffmpeg + uv, runs uv sync
./run.sh start

Open http://localhost:8000.

setup uses Homebrew on macOS and apt-get on Debian/Ubuntu. For other Linux distros, install ffmpeg and uv manually, then run uv sync followed by ./run.sh start.

Windows (PowerShell)

Install prerequisites: - uvwinget install astral-sh.uv - ffmpegwinget install Gyan.FFmpeg (or Chocolatey: choco install ffmpeg)

git clone https://github.com/stemdeckapp/stemdeck stemdeck; cd stemdeck
uv sync
uv run uvicorn app.main:app --host 127.0.0.1 --port 8000

Open http://localhost:8000.

run.sh is macOS/Linux only. On Windows use the PowerShell commands above, or run inside WSL.

NVIDIA GPU (CUDA): install the CUDA-enabled torch build before starting:

uv pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
$env:STEMDECK_DEMUCS_DEVICE = "cuda"
uv run uvicorn app.main:app --host 127.0.0.1 --port 8000

Manual (any platform)

git clone https://github.com/stemdeckapp/stemdeck stemdeck && cd stemdeck
uv sync
uv run uvicorn app.main:app --reload

Docker

docker compose -f build/docker-compose.yml up --build

Stems land in ./jobs/ on the host. Demucs weights are cached in a named volume so they don't re-download on rebuild. Note: no GPU passthrough on macOS Docker.

run.sh control script

```sh ./run.sh setup # one-shot: install ffmpeg + uv, then

Core symbols most depended-on inside this repo

$
called by 40
static/js/utils.js
esc
called by 21
static/mobile/app.js
render
called by 20
static/mobile/app.js
_set
called by 19
app/core/models.py
saveState
called by 18
static/js/catalog.js
setStatus
called by 17
desktop/ui/setup.js
render
called by 16
static/js/catalog.js
applyMix
called by 12
static/js/mixer.js

Shape

Function 662
Route 21
Method 7
Class 6

Languages

TypeScript58%
Python42%

Modules by API surface

static/js/catalog.js100 symbols
static/mobile/app.js56 symbols
static/js/player.js50 symbols
tests/test_stems_api.py45 symbols
static/js/transport.js30 symbols
tests/test_jobs_api.py29 symbols
app/api/jobs.py27 symbols
static/js/mixer.js26 symbols
app/main.py24 symbols
static/js/sections.js22 symbols
static/js/main.js22 symbols
static/js/chunkedAudioEngine.js21 symbols

Dependencies from manifests, versioned

@tauri-apps/cli2.0.0 · 1×

For agents

$ claude mcp add stemdeck \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact