Browse documentation
DocsChoose Lumina

Jellyfin clients & migration

Connect Infuse, Swiftfin, Roku and Android TV to Lumina, check compatibility limits, and import Jellyfin watch history.

Which Jellyfin apps work with Lumina?

Lumina serves its own library directly to compatible Jellyfin API clients. You do not need Jellyfin Server. Enable the optional API and connect the app to Lumina using your Lumina member credentials. Compatibility depends on app version, device and source codecs.

Client or client typeCompatibility
Infuse on Apple TV, iPhone, iPad and MacDocumented browsing, playback and watch-state workflow through a Jellyfin connection.
SwiftfinDocumented connection and member sign-in workflow.
Jellyfin for Roku and Android TVDocumented API playback fixes for these apps; test your app version and media formats.
Other direct Jellyfin API clientsAPI compatibility is targeted; verify browsing, playback and resume before switching.
Apps requiring server-hosted jellyfin-webUnsupported, including the official phone web wrappers and Jellyfin Media Player. Lumina does not host jellyfin-web.
Plex apps and Jellyfin server pluginsUnsupported; Lumina is a separate server.

Jellyfin’s client directory lists clients for Jellyfin Server, not a Lumina certification. See Lumina’s API decision and compatibility history.

How do I connect Infuse or Swiftfin?

  1. Set up HTTPS or LAN HTTP access. Loopback-only access is the default.
  2. Open Manage Server → Connections → Metadata → Apps like Infuse, enable the API, and copy the shown server address.
  3. In Infuse, add a Jellyfin share. In Swiftfin, choose Connect to Server. Use Lumina’s address and your Lumina member credentials.
  4. If two-step verification is enabled, create an app password under Settings → Connected apps → Add an app and use it in the client.
  5. In Infuse, keep Library Mode enabled for artwork and library views.

Use the server root, such as https://media.example.com. Do not append /jellyfin or /emby. Each member signs in as themselves. See the complete operator procedure.

Does watch progress sync with the browser?

The compatible API supports watched status and resume positions shared with Lumina’s web interface for the signed-in member. Each sign-in appears in Settings → Connected apps and can be revoked there. Client queues and device-specific settings are separate from server watch progress; this does not promise seamless device handoff.

Can I move from Jellyfin to Lumina?

Lumina imports matched Jellyfin watched status, resume positions and favorites. First add and scan your media in Lumina, then configure Manage Server → Connections → Metadata → Jellyfin server to import from with an address reachable from inside Lumina’s container.

For one member, open Settings → Privacy & data → Watch history from Jellyfin. A vault owner can use Settings → Members → Bring members over from Jellyfin for household pairing and new members. Preview before applying.

Matching uses file-path suffixes, then TMDB, IMDb and TVDB IDs; different container mount prefixes are allowed. Newer Lumina progress is preserved. This does not migrate the entire Jellyfin database, plugins or settings. Follow the full import procedure and retain the old server until the library and clients are verified.

What if a client connects but cannot play?

Check app version, source codecs and hardware transcoding. Direct play, remux and conversion depend on client capabilities and host configuration. After updating, reopen the client to fetch fresh item details.

Report version, device, codec and sanitized failure details through GitHub Issues. Never include passwords or token-bearing playback URLs. See also the server comparison and FAQ.

Applies to Lumina 0.4.0. Source: operator guide · Reviewed by the Lumina project

Find your next step.

Type to search all documentation.