OTVI (Open TV Interface) is a YAML-driven television streaming platform. It lets providers expose login, channel browsing, and playback flows through configuration instead of custom per-provider application code.
otvi-server- Axum backend for auth, provider integration, streaming APIs, and static asset servingotvi-core- shared types, provider schema, and template/extraction utilitiesotvi-web- Leptos WebAssembly frontend for login, channel browsing, and playbackdocs/- Docusaurus documentation site with versioned release snapshots and a release blog
providers/*.yaml
|
v
+-------------------+ HTTP +------------------------+
| otvi-server | ---------------> | provider APIs |
| - Axum API | | auth / channels / DRM |
| - schema endpoint |
| - static assets | <--------------- +------------------------+
+---------+---------+
|
| JSON
v
+-------------------+
| otvi-web |
| - login |
| - channels |
| - player |
+-------------------+
- Rust stable
trunkfor the frontend:cargo binstall trunkwasm32-unknown-unknown:rustup target add wasm32-unknown-unknownwasm-packfor frontend UI tests:cargo binstall wasm-pack- Bun for the docs site and frontend package scripts
# build the frontend
(cd web && trunk build)
# run the backend
cargo run -p otvi-serverThe app serves on http://localhost:3000 by default.
# full Rust test suite
cargo test --workspace --all-features
# frontend UI tests
(cd web && wasm-pack test --headless --firefox --features ui-test --lib)
# docs site
(cd docs && bun install && bun run build)- Product and operator docs:
docs/ - Docs site maintainer workflow:
docs/README.md - Contributing guide:
CONTRIBUTING.md - Release process:
RELEASING.md - Security policy:
SECURITY.md - Support guide:
SUPPORT.md - Code of conduct:
CODE_OF_CONDUCT.md
devis the integration branch for normal pull requestsmainstages the next release and should stay closer to release-candidate quality- Pushes to
mainautomatically create pre-release builds with binaries for all supported platforms - Release automation publishes binaries and containers from
vX.Y.Ztags - Tagged releases require matching versions in
crates/otvi-core/Cargo.toml,crates/otvi-server/Cargo.toml, andweb/Cargo.toml - GHCR images are published without a floating
latesttag; usedev,main,v0,v0.1, or a full release tag such asv0.1.0 - Public docs default to the latest released version; unreleased docs remain available separately
Repository files can document and enforce part of this model, but GitHub settings still need administrator setup. See CONTRIBUTING.md and RELEASING.md.
AGPL-3.0-only. See LICENSE.