Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration Reference

OpenStream TV reads an optional TOML file and environment variables. Environment variables override the file. The Rust build only parses TOML, even though its automatic filename search also sees YAML/JSON names. A YAML or JSON file at a matching name will cause a parse error; convert it to TOML or use environment variables.

Explicit path: ost --config /path/to/openstream.toml serve. The parser also accepts ost serve --config /path/to/openstream.toml.

If --config is omitted, it searches the current working directory, in this order: openstream.toml, openstream.yml, openstream.yaml, openstream.json, legacy jiotv_go.yml, jiotv_go.yaml, jiotv_go.toml, jiotv_go.json, then config.json, config.yml, config.toml, config.yaml. Only choose a .toml filename.

Example

# openstream.toml (sample values; no credentials)
title = "Home TV"
epg = true
drm = true
tv_plus = false
fastway = false
# Beta: PlayboxTV account (OTP login). Off unless you sign in.
playbox = false
# Beta: Tata Play Smart diagnostics. Off by default.
tataplay = false
# Beta: VZY free tier (anonymous). Off unless you want its catalogue.
vzy = false
disable_auth = false
debug = false
log_to_stdout = true
# Set only if an HTTPS reverse proxy or named tunnel publishes this hostname.
# public_origin = "https://tv.example.com"
default_categories = []
default_languages = []

Save, start with ost --config ./openstream.toml serve, then open http://localhost:5001/.

Complete configuration table

TOML keyEnvironment variable(s)DefaultPurpose and accepted values
epgJIOTV_EPG, OPENSTREAM_EPGfalseBoolean. Generate/refresh the XMLTV guide. A persisted ost epg on/ost epg off override takes precedence until changed again.
debugJIOTV_DEBUG, OPENSTREAM_DEBUGfalseBoolean. Show more diagnostic output.
disable_ts_handlerJIOTV_DISABLE_TS_HANDLER, OPENSTREAM_DISABLE_TS_HANDLERfalseBoolean. Avoid local TS/AAC segment proxying when supported; change only when diagnosing HLS.
disable_logoutJIOTV_DISABLE_LOGOUT, OPENSTREAM_DISABLE_LOGOUTfalseBoolean. Hide/disable JioTV logout when true.
drmJIOTV_DRM, OPENSTREAM_DRMtrueBoolean. Allow the protected DASH pathway; does not bypass DRM.
tv_plusJIOTV_TVPLUS, OPENSTREAM_TVPLUSfalseBoolean. Enable the optional JioTV+ account. Needs a JioFiber or AirFiber login.
fastwayJIOTV_FASTWAY, OPENSTREAM_FASTWAYfalseBoolean. Enable the optional Fastway Live TV provider. Connect an account with ost fastway login or Settings before channels appear.
playboxOPENSTREAM_PLAYBOX, JIOTV_PLAYBOXfalseBeta. Enable the PlayboxTV account. Sign in with POST /api/playbox/login/sendOTP then POST /api/playbox/login/verifyOTP; the channel catalogue and live playback then use the normal /live/... routes.
tataplayOPENSTREAM_TATAPLAY, JIOTV_TATAPLAYfalseBeta. Enable the Tata Play Smart diagnostic API. It can test OTP/session, catalogue document IDs, EPG, entitlement and official access-control. It does not join the shared catalogue or /live, and never returns upstream play/license URLs or session tokens.
vzyOPENSTREAM_VZY, JIOTV_VZYfalseBeta. Enable the VZY (Dish/Watcho white-label) free tier. It uses an anonymous Kaltura session; no account or OTP is needed. Only EntitlementType=Free channels are exposed. Premium/login-required channels are not advertised.
disable_authJIOTV_DISABLE_AUTH, OPENSTREAM_DISABLE_AUTHfalseBoolean. Disable app access checks. Dangerous on reachable networks; use only with a trusted external access control.
titleJIOTV_TITLE, OPENSTREAM_TITLE"OpenStream TV"Display title; any TOML string.
disable_url_encryptionJIOTV_DISABLE_URL_ENCRYPTION, OPENSTREAM_DISABLE_URL_ENCRYPTIONfalseBoolean. Disable encryption of local proxy parameters. Leave false.
proxyJIOTV_PROXY, OPENSTREAM_PROXY""Optional outgoing proxy URL.
public_originOPENSTREAM_PUBLIC_ORIGIN, JIOTV_PUBLIC_ORIGIN""Trusted external HTTPS origin (for example https://tv.example.com). Must have no path, credentials, query or fragment. Used when the request’s Host matches. LAN HTTP and direct TLS remain unchanged.
path_prefixJIOTV_PATH_PREFIX, OPENSTREAM_PATH_PREFIX""Directory for OpenStream TV state. Empty uses the runtime’s resolved default.
log_pathJIOTV_LOG_PATH, OPENSTREAM_LOG_PATH""Reserved in this build; do not rely on file logging.
log_to_stdoutJIOTV_LOG_TO_STDOUT, OPENSTREAM_LOG_TO_STDOUTtrueBoolean. Emit logs to process output.
custom_channels_fileJIOTV_CUSTOM_CHANNELS_FILE, OPENSTREAM_CUSTOM_CHANNELS_FILE""Optional path to custom-channel JSON file.
default_categoriesJIOTV_DEFAULT_CATEGORIES, OPENSTREAM_DEFAULT_CATEGORIES[]Integer category IDs; environment form is comma-separated.
default_languagesJIOTV_DEFAULT_LANGUAGES, OPENSTREAM_DEFAULT_LANGUAGES[]Integer language IDs; environment form is comma-separated.

Boolean environment values must be true or false in lowercase (as Rust’s parser expects). Use either the JIOTV_* environment variable or its documented OPENSTREAM_* alias where listed; the OPENSTREAM_* value takes precedence when both are set. Example: OPENSTREAM_EPG=true ost serve. If ost epg off has stored an override, that environment variable alone does not re-enable EPG; run ost epg on to replace the persisted override. Integer-list settings use JIOTV_DEFAULT_LANGUAGES=1,6.

The TOML key is tv_plus; JIOTV_TVPLUS and OPENSTREAM_TVPLUS are accepted, with OPENSTREAM_TVPLUS taking precedence. The previous TOML key extras and legacy JIOTV_EXTRAS variable are also accepted. Both JIOTV_* and OPENSTREAM_* aliases are accepted for tunnel and update tokens.

When more than one source is connected, catalogue precedence is Fastway > JioTV+ > PlayboxTV (beta) > VZY (beta) > JioTV. JioTV remains the normal fallback source. See Connect Fastway Live TV.

playbox / OPENSTREAM_PLAYBOX (legacy alias JIOTV_PLAYBOX) enables the beta PlayboxTV integration. When a PlayboxTV session is signed in it supplies the catalogue only if Fastway and JioTV+ are not connected; it takes precedence over VZY and JioTV. Its channel IDs start with pb_. EPG for PlayboxTV is not published because the client’s guide response has no programme end time.

vzy / OPENSTREAM_VZY (legacy alias JIOTV_VZY) enables the beta VZY free tier. It signs in anonymously to the Dish/Watcho Kaltura tenant, exposes only free channels (vzy_* IDs), and proxies their clear HLS/DASH. It does not implement account login, premium entitlement, or DRM license forwarding for paid channels.

tataplay / OPENSTREAM_TATAPLAY (legacy alias JIOTV_TATAPLAY) enables a deliberately isolated beta built from the recovered com.tataplay.livetv Retrofit contracts. Its routes live under /api/tataplay/*: OTP send/verify, refresh, catalogue seed, EPG, entitlement and sanitized access-control. The beta preserves Tata Play’s own entitlement decision. Shared catalogue selection, /live, DRM/license proxying and session heartbeat remain disabled until runtime testers prove those flows.

The supplied older com.vzy.one.apk is the Uptodown app store rather than a TV service; the real VZY build is com.vzy.one.atv.

For runtime listening options, see CLI commands; for protection see Network and HTTPS; for storage see Data and logs.