A self-hosted media server for films, series, audiobooks, ebooks, podcasts, and manga.
Quick start · Documentation · Builds & releases · Migrating from Silo · Contributing
Warning
Vio is pre-release. APIs, configuration, and database migrations may change before the first stable release. Back up your deployment before updating.
The 1.0 milestone covers movies and series. Audiobooks, ebooks, and Audiobookshelf compatibility keep working as they do today and are labeled beta: they are outside the 1.0 support promise and will be replaced by a consolidated Books effort with no assigned release date. The broader capabilities below include those beta implementations, not a promise that every media type is supported in 1.0. Existing library data is preserved when upgrading.
|
Play Direct play when possible, remux when needed, transcode otherwise, with VA-API, Quick Sync, and NVENC hardware acceleration. |
Organize One catalog for films, series, audiobooks, ebooks, podcasts, and manga, matched through metadata plugins such as TMDB and TVDB. |
Connect Use the included web app, or the Jellyfin/Emby-compatible API with clients such as VidHub, Findroid, and Infuse. Client coverage varies. |
|
Share Household profiles with their own watch state, library access, and parental controls. |
Manage Libraries, users, providers, storage, search, and playback are configured in the admin interface, not in config files. |
Scale Start with one integrated server; split proxy and transcode roles across shared PostgreSQL and Redis when you need to. |
Requires Docker Compose 2.24 or newer. The default stack runs Vio Server, PostgreSQL with pgvector, and Redis.
git clone https://github.com/kipsilabs/Vio.git
cd Vio
cp .env.example .env
chmod 600 .env
printf '\nPOSTGRES_PASSWORD=%s\nSECRET_KEY=%s\n' \
"$(openssl rand -hex 24)" "$(openssl rand -base64 48)" >> .envSet MEDIA_ROOT in .env to the absolute path of your media, then:
docker compose up -dOpen http://localhost:8090 and complete onboarding.
The published developmental image is ghcr.io/kipsilabs/vio:dev (override with
VIO_IMAGE to pin a tag or use :latest for releases). Server data lives under /opt/vio by default;
set VIO_DATA_ROOT in .env to relocate it. When running from source, the
server binary is ./vio.
The Docker deployment guide covers the
SECRET_KEY backup requirement, storage paths, GPU acceleration, Meilisearch,
external PostgreSQL and Redis, distributed roles, PostgreSQL tuning, backups,
and updates. Migrating from Silo? Use the
Vio migration guide.
Until the first release, default-branch images carry an ordered build-N tag
and a short commit SHA alongside latest. Build numbers order published images;
they are not release versions. Release versioning
defines each tag and the SemVer contract.
- Documentation index — user and operator guides
- Silo to Vio migration — Phase 1 cutover for Silo installs
- Development guide — source setup, builds, tests, migrations
- Settings API, Downloads API, and Apple Push Display Token — client contracts
Vio is an independent fork with its own builds. Please file issues and pull
requests against this repository (kipsilabs/Vio); upstream Silo
does not take Vio patches.
Read CONTRIBUTING.md before opening a pull request. Features, API changes, migrations, and behavior changes should start as an issue.
Vio's source code is licensed under the
GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). See
LICENSE.
Vio is based on Silo (© Silo Media L.L.C., AGPL-3.0-or-later). Silo is a trademark of Silo Media L.L.C.; Vio is an unofficial fork, not affiliated with or endorsed by Silo Media.
The Vio name, logo, and wordmark belong to this fork and are not covered by the AGPL. Forks and redistributions may use the code but must not use the Vio brand as their identity and must remove or replace the brand assets. The Silo marks remain the property of Silo Media L.L.C. and are used here only referentially. See TRADEMARK.md.