K7
AGPL-3.0
- Platform
- Docker Linux Windows macOS Web Android iOS Self-hosted
- Licence
- AGPL-3.0 Open source
Overview
K7 is a self-hosted media server for a small circle of family and friends — movies, TV series and music in one library, served from your own hardware. It is written in C# on .NET 10, ships as a Docker image (ghcr.io/kaybi-gh/k7), and is licensed AGPL-3.0. The name is the French pronunciation of cassette (/ka.sɛt/), and the stated goal is to bring back the feeling of a shelf at home: tapes, VHS, files that are yours and local. Unlike the big streaming servers it does not try to be a platform — the project is explicitly built for one household and the people it invites.
Deployment is small: copy .env.example to .env, set a PostgreSQL password, run docker compose up -d, then complete the first-run setup on port 7080. There is a public demo at k7.kaybi.dev with a guest login.
Key Features
- One library for movies, series and music: films, episodic series and an album/artist music library live on the same shelf, with metadata that can be corrected field by field and locked so a refresh cannot overwrite your edits.
- Transcoding with ffmpeg and HLS: playback adapts to the client and the network instead of demanding a device that can decode the original file, with configurable quality, subtitles, intro skip and seekbar thumbnails.
- Federation between instances: two K7 servers — yours and a friend’s — can be linked to share and stream remote media and metadata without copying the files.
- Accounts that work offline: local authentication with optional two-factor and optional OIDC for single sign-on, plus an admin-controlled guest mode for people who should browse without an account.
- Clients everywhere: web, Android (phone and TV), Windows, macOS and an experimental Linux GTK4 build, all sharing the same interface through Blazor WASM and MAUI. The iOS and macOS builds exist but are untested by the maintainer, who has no Apple hardware.
- Keyboard and remote control: the whole app is spatially navigable from a remote or keyboard, and one logged-in client can drive playback on another device on the same server. Chromecast is supported from web and Android.
- OpenSubsonic endpoint: existing music clients such as Symfonium or Feishin can connect with an app password from Settings → External clients.
- Personalisation without forking: server-wide defaults for home layout, player and playback that each user can override; a custom home page you pin yourself; optional navigation shortcuts; and global media filters to hide content across the app.
- Your space: playlists, collections, history, stats and reviews per user, dynamic rule-based playlists (genre, year, play count, artist) that re-evaluate as the library grows, and offline downloads on the native clients with progress sync.
- Watching together: Sync Play for remote co-viewing, shared profiles that merge stats and history for a couple or a group, and per-content-type visibility controls deciding what you share and what you accept to see.
- Admin tooling: dashboard, diagnostics and background tasks in the UI, customisable outgoing webhook notifications, and an import tool for migrating from Plex, Jellyfin, Spotify and others.
- Optional AudioMuse AI integration: connect a self-hosted AudioMuse AI server for mood radios, similar tracks, sonic paths and natural-language library search. Off by default; no cloud dependency.
Why Use K7
The pitch is scale, not features-by-checklist. A Plex or Jellyfin install grows into a platform with accounts, remote access, transcoding farms and an app store; K7 assumes a handful of people you actually know and keeps the moving parts small — one compose file, PostgreSQL, ffmpeg. Because it speaks OpenSubsonic, you are not locked into its own clients for music, and because federation shares media between two instances instead of uploading it to somebody else’s server, the library stays on hardware you own. The AGPL-3.0 licence and the plain Docker deployment mean the whole thing can be read, rebuilt and moved.
Use Cases
- A household shelf: films and series for the family plus a music library, on a NAS or home server, with a guest account for visitors.
- Sharing with friends without a cloud: federate with a second K7 instance so two households see each other’s libraries without duplicating terabytes.
- A TV-first living room: the Android TV client plus spatial navigation and remote control means a remote, not a mouse, drives the interface.
- Migrating off a bigger server: the bundled import tool moves an existing Plex or Jellyfin library over, and OpenSubsonic keeps existing music apps working.
- Homelab experiments: a single container to run, watch and break — useful if you want a media server you can read end to end rather than administer.
Views: 1