← All posts

Kino: a Stremio client I can keep extending

My own Stremio client with an interface built for a TV remote, native playback, and the features I always wanted, starting with skip intro.

The existing Stremio apps work, and I still use them. But every time I wanted something they did not do, I hit the same wall. I wanted intros skipped automatically. I wanted an interface designed for a remote on a TV. I wanted playback behavior tuned to how I watch. None of that is possible from outside the app. Kino is a Stremio client I own, so the wall is gone.

The same core, a new face

Kino talks to the real Stremio Core, the same library the official apps use, so add-ons, catalogs, library, and progress behave the same as everywhere else. Everything the user sees is new.

On macOS it is a native Qt shell. The screens are web technology, but playback goes to libmpv with VideoToolbox hardware decoding. Media keys and Now Playing work. The screen stays awake only while video is playing. Subtitles, embedded or from add-ons, have delay, size, and position controls.

On the TV it is native Kotlin and Compose running on an NVIDIA Shield, which gives it proper focus-based remote navigation. Near the end of an episode it offers Up Next, and it opens the next episode's sources only after the current progress is saved.

The design decision that matters

Every model that comes out of the Core passes through a validating adapter before a screen sees it. Screens receive navigation requests and playback fields. The adapters are tested against a pinned build of the Core with committed fixtures, so when a Core update changes a payload shape, a check fails on my machine before a screen breaks on the TV.

Skip intro

This is the feature that started the project. Kino resolves intro markers, embedded or from the community, marks them on the timeline, and skips them on a button press or automatically, with an undo. I wanted this in a Stremio client for years and could not add it to one I did not own.

Development started on macOS, with Android TV next, then Windows and Linux. The macOS package is ad-hoc signed and Apple silicon only for now.