Tomo TV
Stream any video from your Jellyfin server. Just press play.

Tomo TV turns your Apple TV into the front end for your entire Jellyfin library. Connect a server, or a handful of them, and your movies, shows, music, and playlists are right there ready to play. It works out what your Apple TV can decode and quietly transcodes anything it can't, so you never have to think about codecs again.
Pick up where you left off
Launch the app and you land on what matters. Every library you own is right there, ready to dive into, with no menus to dig through and no folder to find first. Just below, a Continue Watching row remembers your exact spot, tracked on-device, so a half-finished film is one click from resuming.

Your whole library, one place
Whatever you keep on Jellyfin, Tomo TV plays it. Browse movies and collections, full show seasons, and playlists, all with the artwork and counts you expect. Music gets the same treatment, laid out by cover art, so the app that runs your movie nights doubles as your record shelf.



Filter, shuffle, favorite
Every library gets a Filters panel: narrow it down by favorites, genre, artist, or year, and flip on shuffle to play the whole filtered set in a fresh random order that loops. Selections are scoped per library and follow you into sub-folders. Long-press any card to favorite it, and favorited items wear a gold heart wherever you browse, not just under the Favorites filter.

Connect without typing an address
Pick Scan Networkand Tomo TV sweeps your local subnet for Jellyfin servers, honoring the network's real netmask, and lists every one it finds. The connect screen shows your Apple TV's own IP, warns when a private address is not on this subnet, and if a connection fails it lists every address that was tried and how each one failed instead of one generic error. Reverse-proxy subpaths like 10.0.0.5/jellyfin work too. Tomo TV holds as many servers as you want and lets you hop between them in a tap. Add your own, or load up Jellyfin's public demo at https://demo.jellyfin.org/stableto take it for a spin. Every server's credentials stay sandboxed and locked in the device Keychain.


Find anything in seconds
Type a title, season, or year and results surface as you go. Search runs on the real Apple TV keyboard and SwiftUI's native .searchable modifier, so it feels like the rest of tvOS instead of a web view bolted onto the screen.

The search experience is built on expo-tvos-search, an open-source Expo module that brings native tvOS search integration to React Native apps. It is published on npm with TypeScript support, customizable layouts, and extensive configuration options.
- npm: expo-tvos-search (install with
npx expo install expo-tvos-search) - GitHub: keiver/expo-tvos-search for source code, issues, and documentation
- Library docs: expo-tvos-search tool page for API reference, layout presets, and examples
Smart streaming
When you press play, Tomo TV checks whether your Apple TV can decode the file directly. H.264 and HEVC stream at full quality with no re-encoding. Anything else, VP9, AV1, MPEG-2, VC-1, or DivX, is transcoded on the fly by your Jellyfin server and streamed across, with no manual format wrangling on either end.
- Multi-audio tracks: switch between audio tracks during playback without restarting the video
- Subtitles: automatic detection and embedding of subtitle tracks with per-language selection
- Up Next: continuous playback with an overlay showing what plays next in a collection or playlist
- Continue Watching: on-device resume so you start where you stopped, even before the server reports your position
Streaming quality
Tomo TV offers quality presets that cap the transcoding bitrate. Direct play always streams at original quality regardless of this setting, the preset only applies when the server has to re-encode.
Slow Wi-Fi, remote streaming over VPNDefault
Standard home Wi-Fi
Fast Wi-Fi
Wired Ethernet, Gigabit LAN
Gigabit LAN, high-end server
| Preset | Bitrate | Best For |
|---|---|---|
| 480p | 1-2 Mbps | Slow Wi-Fi, remote streaming over VPNDefault |
| 540p | 2-4 Mbps | Standard home Wi-Fi |
| 720p | 4-6 Mbps | Fast Wi-Fi |
| 1080p | 8-12 Mbps | Wired Ethernet, Gigabit LAN |
| 4K | 40-80 Mbps | Gigabit LAN, high-end server |
Up and running in two steps
Point Tomo TV at your server and sign in, that's it. Prefer to follow along on your phone? Scan the in-app QR code, or head to tomotv.app.
Add a server
Tap Scan Network to find servers on your subnet with nothing to type, enter an address including port, e.g. http://192.168.1.100:8096, or tap the bundled demo server to try it with nothing of your own.
Sign in
Quick Connect: enter the code shown on your TV into any logged-in Jellyfin device to authorize instantly
Username & Password: sign in directly with your Jellyfin credentials


Requirements
- Apple TV running tvOS 15.1 or later
- Jellyfin server 10.8+ with transcoding enabled
- FFmpeg installed on the server to power transcoding
Troubleshooting
- Black screen or a video won't play
- Enable transcoding in Jellyfin under Dashboard → Playback → Transcoding, and make sure FFmpeg is installed on the server.
- Can't reach a server
- Check that the server address includes the port (e.g.
http://192.168.1.100:8096). HTTP works on a local network; for access from outside your home, HTTPS with a valid certificate is recommended. - Buffering or slow playback
- Lower the quality preset in Settings, and enable hardware transcoding on your server if it supports it (Intel QuickSync, NVIDIA NVENC, or VAAPI).
Privacy
Tomo TV ships with no third-party analytics or tracking SDKs. Each server's credentials live in your device's Keychain and are never sent to us. Video streams directly between your Apple TV and your Jellyfin server, with no servers of ours in between.
Support
Questions or feedback: contact@keiver.dev