Skip to content

Configuration

Kino keeps every server-level setting in a single SQLite row (the config table). The Settings pages in the web UI are a thin editor over that row; this page enumerates the row itself, grouped by area.

Most fields have a sensible default and only need attention if you’re deviating from the standard single-host install. Fields marked auto-managed are populated by Kino itself — you should not edit them by hand.

How Kino binds the HTTP listener and identifies itself to clients.

FieldTypeDefaultDescription
listen_addressstring0.0.0.0Interface the HTTP server binds to. 127.0.0.1 for localhost-only; an IP for a specific NIC.
listen_portinteger8080TCP port for the HTTP server. Override at boot with --port / KINO_PORT.
api_keystringrandom UUID on first bootThe master credential. Sent as Authorization: Bearer <key> or X-Api-Key: <key>. Rotatable from Settings; rotation does not invalidate per-device sessions.
base_urlstring""Path prefix when reverse-proxied behind a sub-path (e.g. /kino). Empty means served at the root.

Where Kino writes its own state and where it expects your media to live.

FieldTypeDefaultDescription
data_pathstringplatform defaultKino’s working directory — SQLite database, cached images, trickplay sprites, librqbit session. Set at boot via --data-path / KINO_DATA_PATH; the platform default is XDG / native.
media_library_pathstring""Root directory for your imported library. Required before Kino can move completed downloads into the library.
download_pathstring""Working directory for the BitTorrent client. Required before any download will start.

Optional WireGuard tunnel that scopes the BitTorrent client (only). See VPN setup for the full walkthrough.

FieldTypeDefaultDescription
vpn_enabledbooleanfalseMaster switch. When off, the BitTorrent client uses the default route.
vpn_private_keystringWireGuard private key. Write-only via the API.
vpn_addressstringTunnel-side address assigned by the VPN provider (e.g. 10.64.0.2/32).
vpn_server_public_keystringPeer (server) public key.
vpn_server_endpointstringPeer endpoint, host:port.
vpn_dnsstringDNS server reachable inside the tunnel.
vpn_port_forward_providerstringnonePort-forwarding API used to obtain a forwarded port. none disables port forwarding.
vpn_port_forward_api_keystringAPI key for the port-forwarding provider, when applicable.
vpn_killswitch_enabledbooleantrueWhen the tunnel drops, soft-pause every active download until it reconnects. Ignored when vpn_enabled is off.
vpn_killswitch_check_urlstringhttps://api.ipify.orgURL the periodic IP-leak self-test hits. Self-hostable for paranoid setups.
FieldTypeDefaultDescription
tmdb_api_keystring""TMDB Read Access Token. Required for any title metadata; without it the metadata features are disabled.
opensubtitles_api_keystringOpenSubtitles API key for subtitle search.
opensubtitles_usernamestringOpenSubtitles account username.
opensubtitles_passwordstringOpenSubtitles account password. Write-only via the API.

Throughput and seeding behaviour for the built-in BitTorrent client.

FieldTypeDefaultDescription
max_concurrent_downloadsinteger3How many downloads run in parallel. Higher values can hurt completion time on the per-download side.
download_speed_limitinteger0Global download cap in bytes/sec. 0 means unlimited.
upload_speed_limitinteger0Global upload cap in bytes/sec. 0 means unlimited.
seed_ratio_limitreal1.0Stop seeding once uploaded ÷ downloaded reaches this ratio.
seed_time_limitinteger0Stop seeding after this many minutes regardless of ratio. 0 disables the time cap.
FieldTypeDefaultDescription
transcoding_enabledbooleantrueAllow the player to fall back to HLS transcoding when direct play isn’t possible.
ffmpeg_pathstringffmpegPath to the FFmpeg binary. Defaults to PATH lookup.
hw_accelerationstringauto-probed on first bootHardware-acceleration backend. Kino probes on first run and picks the fastest backend that works on your box; none means software-only.
max_concurrent_transcodesinteger2Hard cap on simultaneous FFmpeg transcode sessions.
cast_receiver_app_idstringCustom Chromecast Receiver application ID. Empty means the default media receiver.

How Kino keeps the library tidy and what it goes looking for in the background.

FieldTypeDefaultDescription
auto_cleanup_enabledbooleantrueDelete watched movies and episodes after the configured delay.
auto_cleanup_movie_delayinteger72Hours to wait after a movie is marked watched before auto-cleanup deletes it.
auto_cleanup_episode_delayinteger72Hours to wait after an episode is watched before auto-cleanup deletes it.
auto_upgrade_enabledbooleantrueWhen a higher-quality release becomes available, replace the current file.
auto_search_intervalinteger15Minutes between background scans for wanted-but-missing items.
stall_timeoutinteger30Minutes a download may be making no progress before it’s flagged as stalled.
dead_timeoutinteger60Minutes after which a stalled download is killed and re-searched.

How completed downloads land in your library.

FieldTypeDefaultDescription
use_hardlinksbooleantrueHardlink imported files instead of copying. Requires the download path and library path on the same filesystem.
movie_naming_formatstring{title} ({year}) [{quality}]Filename template for imported movies.
episode_naming_formatstring{show} - S{season:00}E{episode:00} - {title} [{quality}]Filename template for single-episode files.
multi_episode_naming_formatstring{show} - S{season:00}E{episode:00}E{episode_end:00} - {title} [{quality}]Filename template for multi-episode files.
season_folder_formatstringSeason {season:00}Folder template for season directories.

OAuth credentials and per-bucket sync toggles for Trakt. You register the app on Trakt yourself (see Settings → Integrations); credentials are per-install, not baked into the binary.

FieldTypeDefaultDescription
trakt_client_idstringClient ID from your Trakt OAuth application.
trakt_client_secretstringClient secret from your Trakt OAuth application.
trakt_scrobblebooleantrueSend live play / pause / stop scrobbles to Trakt.
trakt_sync_watchedbooleantrueTwo-way sync of watched state.
trakt_sync_ratingsbooleantrueTwo-way sync of 1-10 ratings.
trakt_sync_watchlistbooleantrueMirror Trakt watchlist as a system list. Marks already-in-library items as monitored; never adds new titles to the library.
trakt_sync_collectionbooleantrueMirror your Kino library to your Trakt collection.
trakt_resume_sync_enabledbooleantrueMirror playback resume position between Kino and Trakt.
trakt_recommendations_enabledbooleantrueRefresh the Home recommendations row from Trakt.

External lists Kino can poll for titles to add. See mdblist.com.

FieldTypeDefaultDescription
mdblist_api_keystringMDBList API key. TMDB lists reuse tmdb_api_key; Trakt lists reuse the Trakt OAuth tokens.
list_bulk_growth_thresholdinteger20Send a notification when a single list-poll adds more items than this.

Per-install detection and skip behaviour for show intros and credit sequences.

FieldTypeDefaultDescription
intro_detect_enabledbooleantrueRun the chromaprint-based intro detector on imported episodes.
credits_detect_enabledbooleantrueDetect credit sequences alongside intros.
auto_skip_introsstringsmartOne of off (button only), on (always auto-skip), smart (button on the first episode of a season, auto-skip the rest).
auto_skip_creditsbooleanfalseAuto-skip detected credits sequences.
intro_min_length_sinteger15Minimum candidate intro length in seconds; shorter matches are ignored.
intro_analysis_limit_sinteger600How far into each episode the intro analyser scans, in seconds.
credits_analysis_limit_sinteger450How far back from the end the credits analyser scans, in seconds.
intro_match_score_thresholdreal10.0Minimum match score required to accept a detected intro.
max_concurrent_intro_analysesinteger2Hard cap on simultaneous intro-detection workers.
FieldTypeDefaultDescription
mdns_enabledbooleantrueAdvertise {hostname}.local and _http._tcp on the LAN so users can reach Kino without knowing the IP.
mdns_hostnamestringkinoHostname advertised over mDNS — reach Kino at http://<hostname>.local:8080.
mdns_service_namestringKinoHuman-readable service name advertised over mDNS.
low_disk_threshold_gbinteger5Free-space threshold (in GB) on the download path below which the health banner warns.

Built-in archive + restore. See Backups once the runbook lands.

FieldTypeDefaultDescription
backup_enabledbooleantrueRun the scheduled backup job.
backup_schedulestringdailyPreset cadence — daily, weekly, monthly, or off.
backup_timestring03:00Local time-of-day the scheduled backup fires (24-hour HH:MM).
backup_location_pathstring{data_path}/backups (set on first boot)Directory backups land in. Override to point at a NAS or external drive.
backup_retention_countinteger7Number of scheduled backups to keep. Manual and pre-restore archives are exempt.

These fields exist on the row but you don’t set them by hand. They’re populated by Kino on demand.

  • session_signing_key — HMAC secret for short-lived signed media URLs. Lazily initialised on first use; rotates separately from api_key.

A separate single-row table, user_preferences, holds UI-only preferences (Home layout, hidden sections, greeting name). These are edited entirely from the UI; there’s no operator reason to touch them directly.