Skip to content

About

EON Stream desktop client (Tauri + Rust). Builds both EON Stream and EON Edu from one core: the Edu profile excludes the open marketplace, arbitrary addon URLs and open BitTorrent at compile time, and CI verifies they are absent.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

eon-stream-app

The desktop client (Tauri + Rust). Both builds are produced here: EON Stream and EON Edu.

Status License


Two builds, one core

cargo tauri build                      # EON Stream
cargo tauri build --no-default-features --features edu   # EON Edu

The Edu build does not hide the open marketplace, arbitrary addon URLs, or open BitTorrent access. They are excluded at compile time — not present in the binary (madde 22). The Edu module manager loads only modules signed with the Edu key, and the application id, update channel and signing key are separate.

The claim is tested, not asserted

Cargo features are additive and easy to leak. CI runs a symbol and string check against the Edu binary and fails the release if a forbidden symbol appears. This matters because the guarantee given to an institution rests on it (madde 32b): "absent at compile time" has to be verifiable by someone who does not trust us.

Status: a working program with no interface, on purpose

There is no window yet, and that is the plan rather than a shortfall. The whole alpha line is a terminal program: every piece is proven at a prompt first, so that when there is an interface it sits on work that already works. The interface is the last thing added, at v1. A half-generated Tauri scaffold committed now would rot and would hide which decisions are actually made (madde 2).

What the current build does, today, from a prompt:

Addons add by URL, list, remove, order, enable, refresh, configure, discover, health
Browsing catalogues, search, pagination, metadata, episodes, eon:// deep links
Playback mpv over JSON IPC — HTTP, HLS, DASH, local files, and BitTorrent
Torrents sequential download, loopback HTTP server, prebuffer, file selection, progress
Subtitles from addons, matched by name, hash and size, loaded into the running player
History resume where you left off, continue-watching, next episode, same release
Modules install, update, remove, enable, order, dependencies, signature verification
Themes declarative, no code, with a WCAG contrast report
Settings persisted, typed, and auditably free of anything that reports anywhere
Updates signed release manifests, downgrades refused, revocation applied
Language Turkish and English, lang tr

Against the eight items of the v1 definition-of-done: 2, 3, 4, 5, 6 and 7 are done; 8 is done apart from the interface it describes; 1 is done apart from packaging and signing.

One thing refuses to work, by design. install installs nothing, because this build trusts no signing keys — no key in the hierarchy exists yet (madde 30). The mechanism is complete and exercised; see the note in CHANGELOG.md for how to mint one and watch the chain run.

Architecture

eon-stream-app (this repo)
  src-tauri/     Rust: window, IPC commands, module host, build profiles
  src/           frontend: interface, themes, declarative module rendering
        |
        +-- eon-stream-core     module manager, addon protocol, signatures
        +-- eon-stream-engine   torrent, local HTTP server, mpv IPC

v1 plays through mpv as a separate process (madde 2). Controls live in the EON Stream window, video in the mpv window. Embedding libmpv in a single window is a later slice; if it never lands, v1 behaviour stands.

See docs/architecture.md.

What v1 is

Windows and Linux, single-file installer, signed, auto-updating. Stremio-compatible addon resolution, mpv playback, subtitles, resume. Add addons by URL. Sequential torrent streaming. Module manager with signature verification. Declarative themes. Compatibility suite green. Turkish and English, meeting a baseline accessibility bar (madde 35).

What is left between here and v1: the interface, the installer, and the signing keys.

Not in v1: marketplace, accounts, creator tools, material packages, music, mobile, code-executing plugins, Edu.

Non-negotiables in this repo

  • No telemetry. Not off-by-default — absent. Crash reporting, if it ever exists, is opt-in and shows the user what would be sent (madde 36).
  • No bundled content source or addon. Ever (madde 9).
  • Signing keys are never committed. .gitignore blocks the usual extensions; that is a safety net, not a policy.
  • Accessibility is a release gate, not a later polish item: full keyboard operation, screen-reader-usable core flows, WCAG AA contrast, scalable text (madde 35).

Build (once the scaffold exists)

rustup show          # toolchain pinned in rust-toolchain.toml
npm install
cargo tauri dev

System requirements: a Tauri v2 toolchain (WebView2 on Windows, WebKitGTK on Linux) and mpv on PATH for playback.

License

GPL-3.0-or-later WITH the EON Module ABI Exception 1.0 — LICENSE, LICENSE-EXCEPTION.md. Read NOTICE before distributing anything that bundles mpv or FFmpeg.

Related

eon-stream-core · eon-stream-engine · eon-stream-spec · eon-edu-server · eon-docs

About

EON Stream desktop client (Tauri + Rust). Builds both EON Stream and EON Edu from one core: the Edu profile excludes the open marketplace, arbitrary addon URLs and open BitTorrent at compile time, and CI verifies they are absent.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages