Beta · tvOS · Free while it lasts

Your library, projected properly.

Goody is a native tvOS client for Plex, Jellyfin, and Emby — with peek cards, hero trailers, live wallpapers, and a focus engine that actually behaves like the room you're sitting in.

Join the TestFlight
Apple TV 4KtvOS 17+Free beta

Most third-party media clients feel like a phone app zoomed to 1080p. Goody is built for the couch: native focus, card-stack peek, hero trailers that breathe, and settings that sync between your Apple TVs.

A movie detail page in Goody with the trailer playing full-bleed behind the title logo, ratings pills, and a focused Play button.

Detail pages that play the trailer, full-bleed.

Open a title and the trailer starts behind it. Logo, ratings, cast, tagline — laid over motion, not stuck on a wall of chrome. Trailers resolve inline through a multi-client YouTube resolver, so nothing hands off to another app.

Home Skins

Three homes, one library.

Every home skin renders the same underlying library through a different grammar. Reorder rows, change layout, swap skins per device — nothing is fixed. Pick the one that fits how you actually watch.

CleanSkin: a Supergirl hero fills the screen with the trailer breathing behind, poster row underneath.
CleanSkin Full-bleed hero, floating poster rail — the default.
Apex: a Spider-Man hero with a round red Play button, star rating, and Continue Watching landscape row.
Apex Landscape hero, big-poster rails, round Play CTA.
Streamline: a top-nav layout with big landscape cards for Continue Watching, focused Bob's Burgers thumbnail with episode metadata below.
Streamline Top-nav layout, wide landscape cards, metadata below.
A post-playback 'Up Next' screen: The Beauty S1E3 with a big Play button, a 'Just Played' countdown thumbnail on the right showing '10 sec left', and an Up Next row of related shows below.

Post-playback that doesn't drop the ball.

When an episode ends, the next one queues automatically with a real countdown — not a jump-cut to a menu. The Up Next rail underneath surfaces related shows from your library, not something you'd have to hunt down.

A movie card popped into peek state showing logo, genre chips, PG-13, runtime, HD/Dolby Atmos/CC badges, rating pills, tagline, synopsis, cast, and a focused Play button.
Peek · Card Stack

Look before you commit.

Highlight a poster and the card pops up — logo, synopsis, ratings, runtime, cast — without leaving the home screen. Press again for the full detail page. It's the interaction pattern the tvOS system apps use, done properly.

Every rating pill (IMDb, Rotten Tomatoes, TMDb, Trakt) is real data — whichever your sources light up.

Movies library grid with 5,833 titles, a filter dropdown open showing sub-genres (History, Horror, Slapstick, Buddy Comedy highlighted, Parody, Dark Comedy, Satire), and rows of real movie posters visible behind.

Sub-genres you didn't know your library had.

Filter 5,000+ titles by TMDB keywords: slapstick, buddy comedy, cyberpunk, giallo, revenge, whatever's actually in there. Also usable as home rows and as a hero source. Cross-referenced from one SQLite media index that spans every server you've connected.

Appearance

Live wallpapers that don't melt your Apple TV.

Six built-in themes, rendered at 1080p H.264 because 4K H.264 fell to software decode and killed the frame rate. Each server gets its own hero source, and the whole home layout syncs between your Apple TVs over iCloud.

Themes are picked from an inline gallery — one AVPlayer at a time, because a wall of live thumbnails is a great way to crash the picker.

The Appearance settings page in Goody, with a Live Wallpapers list (Dark Galaxy, Default, Elegant, Motion, Pastel, Waves) rendering the Elegant wallpaper full-screen behind.
Solo Leveling show detail with a big serif logo, Season 1 and Season 2 tabs, and horizontally-scrolling episode cards each with a runtime pill, watched checkmark, episode number, title, synopsis, and rating badge.
Episode Rosters

Every episode, even the missing ones.

TV detail pages render the full TMDB episode roster — including episodes not in your library yet, with air dates and "in N days" hints. If Jellyseerr is wired up, missing seasons can be requested right from the same page.

Watched state syncs both ways for both Plex and Jellyfin — no scrobble-only quirks.

Cast & Crew

Follow a name through your library.

Tap an actor from any detail page to open their filmography — bio, headshot, cross-referenced against everything you own. Tabs for Movies / TV / Directed / Produced. Same treatment for directors and writers.

Andy Samberg's person detail page in Goody, with headshot, biography, stats (34 movies, 8 TV shows, 4 produced), tab strip (Movies/TV Shows/Directed/Produced), and a row of movie posters.
Player controls panel with a large 'Lady and the Tramp' logo, right-side icon rail (audio, subtitles, adjustments, brightness, gravity toggle), scrubber with time codes, and a tab strip (Info, Technical, Cast, Chapters, Related, Continue Watching) with a related-item row below.
Playback

A player that respects the remote.

Aether Engine under the hood with a real video-gravity toggle (Fit / Fill / Stretch) that survives engine swaps. Transport is welded to the center press; up and down open the panel; left and right are flat 30-second skips. Nothing fights you.

Info / Technical / Cast / Chapters / Related — every tab that a real player needs, wired to your library.

Under the Hood

Cross-server media index

One SQLite index keyed by TMDB / IMDb / TVDB across every server you've connected. Posters, logos, ratings, and "already in library" stay consistent no matter which backend surfaced the title.

iCloud settings sync

Home row layout, hidden hubs, sports config, per-server hero source — all sync between your Apple TVs. New device picks up your setup automatically.

Inline YouTube trailers

Multi-client resolver (ANDROID_VR → TVHTML5 → IOS) plays trailers inside the app. No handoff to the YouTube app, no ad chrome.

Menu button follows the platform

Never quits the app — toggles the sidebar. Focus lands where you'd expect after a back-swipe. It behaves like a tvOS app because it is one.

Sidebar & profiles

Full drawer nav with search, playlists, collections, discover, and profile switching. Per-profile avatars and per-server settings scope automatically.

Rich metadata everywhere

Reviews with multilingual text, Dolby Atmos / HDR flags, DTS and language tracks, accessibility badges, chapters — surfaced on every detail page.

Goody's Settings V2 category list showing User, Appearance, Hubs & Rows, Library, Playback, and Sources rows. Sources is labelled 'Plex, Jellyfin, Emby, Trakt connections.'
Sources

Bring your own backend.

Goody talks to every backend you're already running. Same UI, same features, whichever server surfaces the title.

Plex Jellyfin Emby Trakt
Beta

This is a moving target. Goody is in open TestFlight and ships changes most days. Some features land, some get reworked, some get pulled and rebuilt.

Bug reports and feature requests are extremely welcome — file them however you got here. If a corner of the app feels rough, it probably is, and hearing about it moves it up the queue.

Community

Hang out on Discord.

Bug reports, feature requests, and "hey does anyone else see this" go faster in real time. Come by the Discord — same people who ship the app read it.

Join the Discord
Support

Stuck? Get in touch.

Fastest paths: Discord for real-time, email for anything longer or account-specific.

goodnitez@proton.me

My library isn't showing up.

Make sure your server (Plex, Jellyfin, or Emby) is online and reachable from your Apple TV. If you're on Plex and running locally, verify the server is signed in with the same Plex account you used in Goody.

I can't connect to my server.

Sign out and back in. On Plex, verify your account has access to the server; on Jellyfin/Emby, double-check the hostname/port and API key in Settings → Sources.

Content isn't loading correctly.

Pull-to-refresh on the library, or restart the app. If it persists, drop a message on Discord with the title that's misbehaving — helps us reproduce it.

Does Goody host any content?

No. Goody talks to your Plex, Jellyfin, or Emby server. It doesn't ship or stream any media of its own — bring your own library.

Put your library on the big screen, properly.

Free while it's in beta. Point it at your servers, sign in, and it's home.

Join the TestFlight