macOS · Free & Open Source · Tauri + mpv

I built Needle because I wanted
to hear my records the way they
were mastered

Local-first. Bit-perfect. No subscriptions,
no accounts, no telemetry. Your music. Your files.

FLAC ALAC WAV AIFF MP3 AAC 24-bit / 192kHz mpv engine
Download for macOS — free, no strings attached

ON OWNING YOUR MUSIC

Streaming is convenient.
It's also not really yours.

I use streaming services too — I'm not here to be precious about it. But there's something different about a record you bought, ripped, and stored. It exists independently of any platform's decisions. It doesn't disappear when a label pulls its catalogue. It doesn't get remastered without your knowledge. It sounds exactly the way the engineer signed off on it.

Needle exists because I couldn't find a macOS player that treated local files the way they deserve to be treated. No resampling. No hidden EQ. No insistence on converting your FLAC to something more "compatible." Just direct playback via mpv , bit for bit, exactly as encoded.

The live dashboard — the spinning vinyl, the Wikipedia metadata, the artist portraits — came later, out of wanting the experience to match how seriously I take the music. A file list with a play button was never going to be enough.

FORMATS

FLAC · ALAC · WAV
AIFF · MP3 · AAC
Opus · OGG


PLAYBACK ENGINE

mpv
No resampling
No DSP applied


PLATFORM

macOS 13 Ventura+
Intel + Apple Silicon
Tauri · Rust


LICENSE

GPL v3.0

THE FULL PICTURE

More than a player

01

The macOS App

Built with Tauri and Rust, rendering in a WebView with mpv handling all audio output. The architecture means Windows and Linux support is a packaging problem, not a rewrite. macOS is where it started because it's what I use — the other platforms will follow demand.

Tauri · Rust · mpv

02

The Backend

Needle doesn't phone home — but I run my own infrastructure for metadata enrichment, library sync, and things I haven't shipped yet. Self-hosted, not a cloud product. The goal is to own the whole stack the same way I own my music. Still maturing; I'll document it as it does.

Self-hosted · In progress

03

Mobile Companion

A companion app that connects to your own library rather than a streaming service. Early work — not shipping yet. The idea is simple: the music you own, on your phone, without handing your listening habits to anyone.

Coming · iOS first

From the build log

All posts →
May 24, 2026

Part 15 — When Madonna Crashed the iPhone App

The detective work pile claimed another victim. After spending hours scanning records into Needle’s newly born physical media archive system, I eventually stumbled upon a Madonna record that refused to cooperate with reality itself.

Read more →

Needle is free.
Always will be.

No trial period, no premium tier, no account required.
Download it, keep it, use it indefinitely.

macOS 13 Ventura or later · Intel & Apple Silicon
Windows & Linux coming


I've put a lot of evenings and late nights into this.
If it's brought something to your listening, you can support the project here.

Holy Crap It Works

Milestones, breakthroughs, bugs, and other beautiful disasters

Day 26 (later that same day 😄)
Needle accidentally DDoSes itself through recursive album artwork fetching. Health monitoring containers are deployed to supervise other containers like tiny paranoid robots.
Day 26
Phase one of physical media tracking launches across Android and iOS. The “detective work pile” is born shortly afterwards.
Day 25
Collection management work begins. Barcode scanning enters the backend. Discogs metadata chaos soon follows.
Day 24
Offline mode, sync logic, caching and remote playback survive repeated combat with reality. Needle starts behaving like an actual platform instead of a sleep-deprived experiment.
Day 20
iOS development begins. Apple immediately demands emotional resilience and several ancient rituals involving certificates and signing.
Day 15
Infrastructure battles begin:

* Docker
* VPN routing
* split-horizon DNS
* CGNAT
* nginx refusing to cooperate
* existential crises caused by local networking

The Raspberry Pi quietly becomes a distributed systems laboratory.
Day 12
The Android app enters development. The project officially escapes containment.
Day 9
The terrifying realisation occurs that the desktop app probably needs a backend.
Day 8
A tap-tempo BPM helper is added because manually tapping “tap tap tap tap” at music suddenly feels like a perfectly reasonable use of time.
Day 3
Theme customisation and the mini player arrive. Needle suddenly starts looking dangerously real.
Day 1
Needle begins life as a simple desktop music player because apparently existing music apps were no longer annoying enough.