{"id":49098335,"url":"https://github.com/superuser404notfound/jellyseetv","last_synced_at":"2026-04-26T14:00:59.438Z","repository":{"id":352590656,"uuid":"1204710471","full_name":"superuser404notfound/JellySeeTV","owner":"superuser404notfound","description":"Native Jellyfin client for Apple TV with built-in Seerr requests. Direct Play, real HDR10 / Dolby Vision, real Dolby Atmos. Powered by AetherEngine.","archived":false,"fork":false,"pushed_at":"2026-04-20T20:06:48.000Z","size":93100,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-20T22:39:59.854Z","etag":null,"topics":["aetherengine","apple-tv","direct-play","dolby-atmos","dolby-vision","hdr","hdr10","jellyfin","jellyfin-client","media-player","seerr","swift","swiftui","tvos","video-player"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/superuser404notfound.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SupportingFiles/Info.plist","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-08T08:58:36.000Z","updated_at":"2026-04-20T14:58:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/superuser404notfound/JellySeeTV","commit_stats":null,"previous_names":["superuser404notfound/jellyseetv"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/superuser404notfound/JellySeeTV","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superuser404notfound%2FJellySeeTV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superuser404notfound%2FJellySeeTV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superuser404notfound%2FJellySeeTV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superuser404notfound%2FJellySeeTV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/superuser404notfound","download_url":"https://codeload.github.com/superuser404notfound/JellySeeTV/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/superuser404notfound%2FJellySeeTV/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32299644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aetherengine","apple-tv","direct-play","dolby-atmos","dolby-vision","hdr","hdr10","jellyfin","jellyfin-client","media-player","seerr","swift","swiftui","tvos","video-player"],"created_at":"2026-04-20T22:01:48.781Z","updated_at":"2026-04-26T14:00:59.416Z","avatar_url":"https://github.com/superuser404notfound.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eJellySeeTV\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003eYour Jellyfin library \u003ci\u003eand\u003c/i\u003e Seerr — together on Apple TV.\u003c/b\u003e\u003cbr\u003e\n  Native tvOS, instant playback, real HDR, real Dolby Atmos.\u003cbr\u003e\n  Browse what you own. Request what's missing. Without ever leaving the couch.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/tvOS-26%2B-black?logo=apple\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Swift-6.0%2B-F05138?logo=swift\u0026logoColor=white\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-lightgrey\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/languages-26-blue\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/status-public%20beta-orange\"\u003e\n\u003c/p\u003e\n\n\u003e 🧪 **Public Beta is open.** Install via TestFlight: **https://testflight.apple.com/join/REPLACE_ME**\n\u003e See [BETA.md](BETA.md) for what to focus on and how to report bugs.\n\n---\n\n## Two services, one remote\n\nJellySeeTV is the only **open-source** Apple TV client that brings **Jellyfin and Seerr together in the same UI**. Watch what's already on your server. Spot something on a trending row that isn't there yet? Request it from inside the app — Seerr handles the rest.\n\nNo more switching to a phone, opening a web UI, or pinging your homelab admin. Single sign-on, one focus-driven interface, the full library + request loop on the TV where you actually watch.\n\n## Open source, end to end\n\nMost Apple TV media players are closed-source binaries you have to trust. JellySeeTV isn't. Every byte that touches your server is in this repo, your auth tokens stay in your Keychain, and there's no telemetry, no analytics, no third-party SDK phoning home.\n\nJellySeeTV itself is **MIT** — fork it, rebrand it, ship it. The video stack underneath ([AetherEngine](https://github.com/superuser404notfound/AetherEngine)) is **LGPL-3.0**, which keeps engine-level improvements flowing back to the community. Both are auditable, buildable from source, and free of any vendor lock-in. Self-host the server, self-build the client — the whole loop is yours.\n\n## Why JellySeeTV\n\nJellyfin is great. The existing Apple TV clients are either web wrappers or built around third-party players that fight tvOS instead of using it. JellySeeTV is built natively from the ground up: SwiftUI on top, a custom video engine underneath, and the same HIG patterns Apple uses for TV+ — focus engine, Siri Remote gestures, transport bar, info panel. Plays the file directly from your server in almost every case, no transcoding required.\n\nAnd the Seerr integration isn't a tacked-on link to a web view — it's a first-class part of the app, with its own browse rows, request flow, and status tracking right next to your library.\n\n## Screenshots\n\n*Coming soon — we'll add these once the public TestFlight opens.*\n\n## Features\n\n### 📚 Browse \u0026 discover\n- **Server discovery** — finds Jellyfin on your network automatically, or add manually\n- **Home** — Continue Watching, Next Up, Latest by library, fully customizable\n- **Library** — Movies, Series, Collections with poster grids and instant filtering\n- **Series view** — season picker, episode list, \"Up Next\" highlighting\n- **Search** — across your whole server, results as you type\n- **Image caching \u0026 prefetching** — posters and backdrops load before you focus them\n\n### 🎬 Watch\n- **Direct Play** for almost every codec your Apple TV understands: H.264, HEVC, HEVC Main10, AV1\n- **HDR10, Dolby Vision, HLG** — auto-detected, sent through with full color metadata, display switches to HDR mode automatically (Match Content)\n- **Dolby Atmos** via EAC3+JOC, wrapped as Dolby MAT 2.0 — your AVR's Atmos light actually comes on\n- **Multichannel surround** — 5.1, 7.1 with correct channel layout\n- **Resume** from where you left off, on any device\n- **Intro skip** — auto-detected from your Jellyfin server, optional one-tap skip\n- **Next episode** — auto-play with countdown, or just an overlay; configurable\n- **Subtitle support** — SRT, with track selection during playback\n- **Audio track switcher** — pick the language or surround mix you want, mid-playback\n- **Native player UI** — same transport bar, scrub preview and info panel as Apple TV+\n\n### 📨 Request what's missing\n- **Seerr integration** — browse trending and popular media right inside the app\n- **One-tap requests** — for movies and full series\n- **Track status** — see what's been approved, declined, or is already downloading\n- **Single sign-on** — log in once, JellySeeTV handles your Seerr session\n\n### 🌍 Personal\n- **26 languages** — German, English, Spanish, French, Italian, Japanese, Korean, Norwegian, Dutch, Polish, Portuguese (BR + PT), Russian, Swedish, Simplified + Traditional Chinese, Turkish, Ukrainian, Czech, Slovak, Croatian, Finnish, Greek, Hungarian, Romanian, Danish\n- **Dark, minimal design** — built for living rooms, not for desks\n- **Liquid Glass** UI accents on tvOS 26+\n- **Siri Remote optimized** — touch surface scrubbing, click for play/pause, swipe gestures throughout\n\n## Built on\n\nJellySeeTV is a thin native shell over a custom video stack. The interesting part is what *isn't* there: no VLCKit, no third-party players, no web views. Just Apple's frameworks plus a Swift package that handles the formats Apple's own player can't.\n\n| Component | Technology |\n|---|---|\n| UI | SwiftUI + UIKit interop where needed |\n| Video engine | [AetherEngine](https://github.com/superuser404notfound/AetherEngine) — FFmpeg demux, VideoToolbox decode, AVPlayer for Atmos passthrough |\n| Display | `AVSampleBufferDisplayLayer` driven by a `CMTimebase` synced to the audio clock |\n| Audio | `AVSampleBufferAudioRenderer` for PCM, `AVPlayer` over local HLS for Dolby MAT 2.0 (Atmos) |\n| Networking | `URLSession` against the Jellyfin REST API |\n| Persistence | Keychain for credentials, no telemetry storage |\n| Media server | [Jellyfin](https://jellyfin.org) |\n\nIf you want the full pipeline detail — HDR routing, Atmos passthrough, A/V sync, channel-layout tagging — see the [AetherEngine README](https://github.com/superuser404notfound/AetherEngine#readme).\n\n## Requirements\n\n| | Min |\n| --- | --- |\n| Apple TV | 4K (any generation) |\n| tvOS | 26.0 |\n| Jellyfin server | 10.9+ recommended |\n| Seerr (optional) | 2.0+ |\n\nA 1080p Apple TV HD will technically run the app, but Direct Play of 4K HDR content needs the 4K hardware.\n\n## Building from source\n\n```bash\ngit clone https://github.com/superuser404notfound/JellySeeTV.git\ncd JellySeeTV\nopen JellySeeTV.xcodeproj\n```\n\nPick the `JellySeeTV` scheme, an Apple TV destination, and run. AetherEngine is wired in as a local Swift Package — you'll need it cloned next to this repo (or adjust the path in Package dependencies).\n\n```\n~/Dev/\n├── JellySeeTV/\n└── AetherEngine/\n```\n\nXcode 26+ and Swift 6.0+ are required.\n\n## Roadmap\n\n- [ ] Public TestFlight beta\n- [ ] App Store release\n- [ ] iOS / iPadOS companion app\n- [ ] Live TV + DVR support\n- [ ] Music library support\n\n## Related\n\n- [AetherEngine](https://github.com/superuser404notfound/AetherEngine) — the video engine powering JellySeeTV\n- [Jellyfin](https://github.com/jellyfin/jellyfin) — the free software media system\n- [Seerr](https://github.com/Fallenbagel/jellyseerr) — request management for Jellyfin\n- [Swiftfin](https://github.com/jellyfin/Swiftfin) — official Jellyfin client for iOS / tvOS (VLCKit-based)\n\n## Built with\n\nJellySeeTV is vibe-coded — designed and shipped by [Vincent Herbst](https://github.com/superuser404notfound) in close pair-programming with **Claude** (Anthropic). The commit log is the receipt: nearly every commit carries a `Co-Authored-By: Claude` trailer.\n\n## License\n\n[MIT](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuperuser404notfound%2Fjellyseetv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuperuser404notfound%2Fjellyseetv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuperuser404notfound%2Fjellyseetv/lists"}