Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
Stremio logo

stremio-core

The Rust engine that powers every Stremio app.

Build Workflow Status Latest MSRV workflow Status Latest deployed docs on GH pages License

📚 API Docs · Website · Report a bug

Stremio is a modern media center — a one-stop solution for discovering, organizing and streaming video content via addons. stremio-core is the single Rust codebase that contains all the logic shared between Stremio apps: user/addon state, the addon protocol, library, notifications, playback state and deep links. The UIs are thin layers on top — this crate is the app.

Goals

  • Flexibility — integrates into any codebase, across the entire stack and in different paradigms: types alone can be used by addons, or the full Ctx model can be the backbone of a whole Stremio app
  • Emphasis on correctness
  • No cruft / legacy — not burdened by obsolete decisions and solutions

🧠 Architecture

The state management is inspired by the Elm Architecture: state flows in one direction, side effects are explicit, and the platform is abstracted away behind a trait.

flowchart LR
    UI["Platform UI"] -- "Action" --> RT["Runtime"]
    RT -- "Msg" --> M["Models<br>(Ctx, Player, ...)"]
    M -- "Effects" --> ENV["Env<br>(fetch, storage, exec)"]
    ENV -- "Internal Msg" --> RT
    RT -- "NewState / CoreEvent" --> UI
  1. The UI dispatches an Action to the Runtime.
  2. The Runtime routes it as a Msg to the state models, which update themselves and return Effects — explicit descriptions of side effects (futures) to run.
  3. Effects execute through the Env trait and resolve back into the loop as Internal messages.
  4. Changed models are announced to the UI as NewState; noteworthy happenings are emitted as Events.

Each platform only has to implement Env — HTTP fetch, storage, task execution and time — and compose its own model out of the building blocks with #[derive(Model)].

📦 What's inside

Module / crateWhat it is
src/typesThe vocabulary: addon manifests and resources, meta items, streams, subtitles, library, profile, API types
src/modelsThe state models: Ctx (profile, library, notifications — the backbone), CatalogWithFilters, MetaDetails, Player, LibraryWithFilters, StreamingServer, Calendar and more
src/runtimeThe reactive engine: Runtime, Effects, Env, messages
src/addon_transportAddon protocol client — modern HTTP(S) JSON plus a legacy JSON-RPC adapter
src/deep_linksDeep link generation for every platform
stremio-core-web/WASM bridge published to npm as @stremio/stremio-core-web — runs core in a Web Worker for stremio-web
stremio-derive/#[derive(Model)] proc macro
stremio-watched-bitfield/Compact encoding of per-video watched state

Feature flags

FeatureEffect
deriveRe-exports #[derive(Model)] from stremio-derive
analyticsEnables the analytics module
env-future-sendAdds Send bounds to Env futures (incompatible with the WASM target)
deflateForwards to stremio-official-addons/deflate

🚀 Development

You'll need Rust 1.77 or newer (MSRV, checked in CI).

cargo fmt --all -- --check
cargo clippy --all --no-deps -- -D warnings
cargo test
cargo build

Docs are built with the nightly toolchain pinned in docs.yml:

RUSTDOCFLAGS="--cfg docsrs -Z unstable-options --enable-index-page" cargo +nightly build-docs

For the WASM bridge, see stremio-core-web/README.md.

Tips

  • New actions are defined in src/runtime/msg/action.rs — the message enums there are the public API surface of the crate.
  • WASM output can get large, especially when deriving Serialize/Deserialize where it isn't needed. Run twiggy top ..._bg.wasm to find the biggest code size offenders.

🧩 Ecosystem

RepositoryWhat it is
stremio-webThe web UI, driven by this crate through stremio-core-web
stremio-core-kotlinKotlin/JNI bindings for Android (archived)
stremio-addon-sdkBuild your own addon in Node.js
local-searchSearch suggestions engine used by the LocalSearch model

📄 License

Copyright © 2019-2026 Smart Code OOD. Released under the MIT license — see LICENSE.

关于 About

⚛️ The Stremio Core: types, addon system, UI models, core logic

语言 Languages

Rust99.8%
JavaScript0.2%
Shell0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
360
Total Commits
峰值: 31次/周
Less
More

核心贡献者 Contributors