Native macOS music player for audiophiles. SwiftUI glass-morphism interface, 10-band parametric EQ with 100+ headphone presets, FLAC/DSD/ALAC/APE/ogg lossless support, optional MusicBrainz metadata enrichment, WidgetKit widgets, and an Apple Watch companion.
Distribution status. The released DMG is ad-hoc signed — there is no paid Apple Developer account behind this project. Gatekeeper will block the first launch unless you install via Homebrew (recommended) or bypass it manually.
- FLAC, WAV, AIFF, ALAC, DSF, DFF, APE, MP3, M4A, OGG, WMA
- 10-band parametric EQ (AVAudioEngine)
- 100+ headphone presets (oratory1990 / Harman target) — AKG, Beyerdynamic, Focal, HiFiMan, Sennheiser, Sony, and more
- Exclusive-mode output on macOS (hog + sample-rate matching for bit-perfect playback)
- Gapless playback
- ReplayGain (track/album mode)
- Async file scanning with metadata extraction (title, artist, album, genre, year, cover art)
- Folder watching via FSEvents — auto-refresh when files change
- Full-text search through FTS5 (Unicode, accent-insensitive)
- Playlists — create, reorder, delete, favorites
- Temporal grouping (Today / This week / This month / by year)
- Optional MusicBrainz + Cover Art Archive enrichment (off by default)
- Optional LRCLib synced lyrics
- Dark glass-morphism UI with translucent pills and semi-opaque borders
- Repositionable icon navigation (top / bottom)
- Three grid densities (compact 8-col, normal 6-col, large 4-col)
- Bilingual FR / EN
- Touch Bar controls
- WidgetKit widgets (small, medium, large, full-page) with deep links via
flayer://
- Hardened-runtime build flag enabled (prereq for future notarisation)
- FLAC metadata parser with 16 MiB block / 32 MiB picture caps and overflow-safe offset arithmetic
- Wi-Fi transfer server gated by a 6-digit PIN, bound to the Wi-Fi interface only, with a hard 200 MB body cap even when
Content-Lengthis missing - Privacy-aware
os.Loggeracross database and MusicBrainz logging (user track/album/artist data markedprivate) - Orphaned cover art auto-reclaimed on scan cleanup
Replace
GH_OWNERwith the actual tap owner once the tap is published.
brew tap GH_OWNER/flayer
brew install --cask flayerThe cask's postflight strips com.apple.quarantine so Gatekeeper never blocks it.
-
Download the latest
FlaYer-<version>.dmgfrom the Releases page. -
Open the DMG and drag
FlaYer.appinto/Applications. -
First launch only: right-click (or control-click) the app in
/Applications, then choose Open. Confirm the dialog that says "Apple cannot verify the developer." This builds a trust exception; subsequent launches go through normally.Or, from Terminal:
xattr -dr com.apple.quarantine /Applications/FlaYer.app
Why the prompt: no paid Apple Developer account means no Developer ID certificate, no notarisation, and therefore no automatic Gatekeeper approval. The binary is still signed (ad-hoc), the hardened runtime is still applied, and the code is open for inspection — macOS just does not have a cryptographic attestation from Apple that it was built by an identified developer.
Prerequisites: macOS 14 (Sonoma) or later, Xcode 16, Homebrew, xcodegen.
brew install xcodegen
git clone https://github.com/GH_OWNER/flayer.git
cd flayer/macos/MusicApp
xcodegen generate
open FlaYer.xcodeprojThen pick the FlaYer scheme and ⌘R.
./scripts/build-release.sh 1.2
# → build/release/FlaYer-1.2.dmgThe script regenerates the Xcode project, archives the macOS target, ad-hoc signs it with the hardened runtime, and produces a DMG via create-dmg. Run once per tagged release. Environment overrides: SCHEME, CONFIGURATION, OUTPUT_DIR, DEV_ID (the - default means ad-hoc; set to a Developer ID when/if you get one).
.
├── macos/
│ └── MusicApp/
│ ├── project.yml # xcodegen config (source of truth)
│ ├── Sources/
│ │ ├── Shared/ # GRDB, audio engine, services (MusicBrainz, CoverArtArchive, LRCLib)
│ │ ├── macOS/ # NSApp, settings UI, scanner, media keys, Touch Bar
│ │ ├── iOS/ # iOS variant (currently de-prioritised)
│ │ ├── watchOS/ # Apple Watch companion
│ │ ├── Widgets/ # WidgetKit extension (small/medium/large)
│ │ └── WidgetFullPage/ # Full-page widget extension
│ └── README.md # Detailed macOS-specific doc
├── scripts/
│ └── build-release.sh # Archive + ad-hoc sign + DMG
├── Casks/
│ └── flayer.rb # Homebrew cask template — copy to your tap
└── .planning/codebase/ # Codebase audit documents (STACK, ARCHITECTURE, CONCERNS, …)
| Layer | Tech |
|---|---|
| Language | Swift 6.0 |
| UI | SwiftUI, @Observable, @MainActor |
| Audio | AVAudioEngine, CoreAudio, AudioToolbox |
| DB | SQLite via GRDB 7 + FTS5 |
| iOS SMB | AMSMB2 |
| Project gen | XcodeGen |
| Deployment | macOS 14 • iOS 17 • watchOS 10 |
All anonymous, rate-limited, opt-in:
- MusicBrainz (metadata)
- Cover Art Archive (album art)
- LRCLib (synced lyrics)
- Wikidata / Wikimedia Commons (artist photos)
On iOS: optional Jellyfin, Subsonic, or SMB server for remote libraries (credentials in Keychain).
- Fork, branch from
main. cd macos/MusicApp && xcodegen generatebefore running from Xcode.- Before opening a PR,
./scripts/build-release.shmust succeed — that is the closest this repo has to CI today.
The codebase audit lives in .planning/codebase/CONCERNS.md. Open a PR to knock items off it; most of the remaining medium/low items are mechanical.
PolyForm Noncommercial 1.0.0 — source-available, non-commercial.
- ✅ Use it, study it, modify it, share it, fork it for any non-commercial purpose (personal, research, hobby, non-profit, education…).
- ❌ You may not sell copies, offer it as a paid service, or bundle it into a commercial product. Commercial distribution is reserved to Snitch Team.
- Attribution (keep the copyright notice) is required.
If you want a commercial license, open an issue.
FlaYer est un lecteur de musique natif macOS pour audiophiles. Interface SwiftUI en glass morphism, égaliseur paramétrique 10 bandes avec 100+ profils casques, support complet des formats lossless (FLAC / DSD / ALAC / APE), enrichissement MusicBrainz optionnel, widgets WidgetKit et compagnon Apple Watch.
Distribution. Le DMG publié est signé en ad-hoc — il n'y a pas de compte Apple Developer payant derrière ce projet. Gatekeeper bloquera le premier lancement si tu n'installes pas via Homebrew.
Homebrew (recommandé) : cf. la commande plus haut. Le cask retire automatiquement le flag de quarantaine.
Manuel : télécharge le DMG, déplace FlaYer.app dans /Applications, puis clic droit → Ouvrir la première fois pour créer l'exception Gatekeeper. Alternative Terminal :
xattr -dr com.apple.quarantine /Applications/FlaYer.appbrew install xcodegen
cd macos/MusicApp
xcodegen generate
open FlaYer.xcodeproj./scripts/build-release.sh 1.2PolyForm Noncommercial 1.0.0 — source-available, non-commerciale.
- ✅ Utilisation, étude, modification, partage et fork libres pour tout usage non commercial (perso, recherche, hobby, asso, éducation…).
- ❌ Revente, service payant, intégration dans un produit commercial : interdits. La distribution commerciale reste l'exclusivité de Snitch Team.
- Mention du copyright à conserver.
Pour une licence commerciale, ouvre une issue.