Documentation

Architecture

JellyBridge is written in Rust.

The interface is drawn with egui on OpenGL, and libmpv renders video into the same window. Network and disk work runs on a tokio runtime, off the thread that draws, so the window never waits on the server. An idle window requests no frames, so it uses next to no CPU.

rust/app/src
├── main.rs        startup and wiring
├── api.rs, api/   Jellyfin HTTP client
├── features/      what the app does: sign-in, pages, playback, settings
├── services/      artwork cache, session storage, mpv, the playback proxy
└── ui/            everything on screen (the only code that uses egui)

libmpv is loaded the first time something plays rather than linked, which removes 70–80 ms of dynamic linking from every launch. docs/PERFORMANCE.md in the repository records what was measured and why each optimization works.