lyrebird

Jellify Desktop

Native desktop apps for Jellyfin — macOS first, Windows and Linux to follow. Not Electron, not a web wrapper. Each platform is rendered by its own native UI toolkit, sharing a Rust core for API, audio coordination, and storage.

Status: macOS MVP playing music. Windows and Linux in planning.

Repo layout

core/       Rust library — Jellyfin API, queue, storage, stream URLs
macos/      SwiftUI + AVFoundation app (current focus)
windows/    WinUI 3 / C# app (planned)
linux/      GTK4 + libadwaita app (planned)
design/     Shared design tokens, fonts, icons, and prototype
examples/   Small Rust binaries exercising the core

Architecture

Business logic lives in core/ as a Rust library. Each platform links it:

macOS — quick start

Requirements: macOS 14+, Rust (brew install rust), Xcode 15+.

cd macos
./Scripts/build-core.sh        # Builds the Rust core → Jellify.xcframework
swift build                     # Builds the SwiftUI app
./Scripts/make-bundle.sh        # Wraps the binary into Jellify.app
open build/Jellify.app

Headless smoke test

Exercises login + playback without the UI. Useful in CI.

JELLYFIN_URL=https://your.server \
JELLYFIN_USER=you \
JELLYFIN_PASS=pw \
  ./.build/arm64-apple-macosx/debug/SmokeTest

Core — tests

cargo test --workspace

Design

The visual reference lives in design/ — an HTML/CSS prototype produced in Claude Design. Every native implementation targets parity with it.

Tokens we track across platforms:

Contributing

See CONTRIBUTING.md. Open issues for bugs and features; track milestones in ROADMAP.md.

License

GPL-3.0-only. See LICENSE.