It pushes when it feels like it, not when you ask
Follows a Jellyfin server within seconds rather than on the next poll — over a push socket that is treated, deliberately, as nothing more than an optimisation.
Not in the HomeSeer store yet — running here daily, and heading for the store as a beta.
Jellyfin does what Plex does without an account, a company, or anybody's permission. For a house that would rather not have its media library mediated by a third party, that is the entire argument, and it is a good one.
The plugin reports sessions and controls playback. The interesting part is how fast it notices.
The push socket
Polling a media server on a timer means the house learns that a film started somewhere between zero and one polling interval after it did. Fine for lighting; poor for anything that should feel immediate.
Jellyfin has a WebSocket. Subscribe with SessionsStart "0,1500" and the server pushes the
full session list — except it does not honour the interval you asked for. Measured here on
2026-08-11, it clamps to its own floor and delivers every 2.0 seconds regardless.
The payoff is in the shape of the frames. Each element is byte-identical in structure to the regular sessions reply, which means one parser serves both feeds. The socket path and the polling path converge on the same publish logic: one pipeline, two doors.
The rule that makes it safe
Any failure degrades to polling. Never to a crash.
The socket is an optimisation and is treated as one throughout. Connection errors, protocol surprises, platform quirks — all of them end identically: the freshness check fails, polling resumes at full rate, and a reconnect is attempted on a growing backoff.
The plugin works exactly the same with the socket disabled entirely. Only slower.
That is a discipline worth applying more widely than it usually is. A fast path is only genuinely an optimisation if removing it changes the speed and nothing else — if it can take the feature down with it, it is not an optimisation, it is a dependency wearing a disguise.
Deliberately identical to its siblings
The Plex and Emby plugins share this one's shape field for field, on purpose. Anyone running Jellyfin gets the same devices, the same events and the same page layout as somebody running the other two — so automations survive a change of server.
Making three plugins behave identically is more work than making one, and it is precisely the work that decides whether a suite feels designed or merely accumulated.