Support
Tentacle TV

Tentacle TV

Latest

A premium, modern media client for Jellyfin.

Stream your library through a sleek, dark-themed interface with glassmorphism design,
smooth animations, and powerful features — all self-hosted.

Download

Desktop

Auto-updates built-in via Tauri updater.

Mobile

Android TV

1.0.0 beta

Install Tentacle TV on your Android TV, Google TV or NVIDIA Shield with the free Downloader app — no computer needed.

In the Downloader app, enter this code:
3022864

Step-by-step installation

  1. 1
    Install the Downloader app

    On your TV home screen, open the Play Store, search for Downloader (by AFTVnews) and install it. It is free.

    Downloader app on the Google Play Store
  2. 2
    Enter the code

    Open Downloader, select the address bar at the top, type the code 3022864 and press Go.

    Downloader code 3022864 entered in the address bar
  3. 3
    Let it download

    The code opens the link and Downloader automatically downloads the Tentacle TV file (about 160 MB).

    Downloader downloading the Tentacle TV APK
  4. 4
    Allow the installation

    A message says your TV isn’t allowed to install from this source. Press Settings — no need to change anything beforehand, Downloader takes you there.

    Downloader permission prompt: open Settings
  5. 5
    Turn on Downloader

    In the list, switch Downloader to ON, then press the Back button on your remote to return.

    Enable Downloader in Install unknown apps
  6. 6
    Install the app

    Confirm by pressing Install and wait a few seconds.

    Install Tentacle TV confirmation
  7. 7
    Open Tentacle TV

    Press Open — Tentacle TV launches on your TV, ready to pair with your server.

    Tentacle TV running on the TV
  8. 8
    Find it again later

    Tentacle TV is now in the Apps (or Applications) tab of your TV. On some models, long-press it and add it to favourites to pin it on the home screen.

    Tentacle TV in the Your apps row

The download link always points to the latest version — the code never changes.

Self-Host with Docker

Recommended

The fastest way to get Tentacle TV running. Copy, paste, done.

Includes MariaDB + Tentacle TV in a single stack:

services:
  db:
    image: mariadb:11
    container_name: tentacle-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: tentacle_db
      MYSQL_USER: tentacle_user
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    volumes:
      - tentacle-db-data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 5

  web:
    image: ghcr.io/knaox/tentacle-tv:latest
    container_name: tentacle-tv
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    environment:
      DATABASE_URL: mysql://tentacle_user:${MYSQL_PASSWORD}@db:3306/tentacle_db
      JWT_SECRET: ${JWT_SECRET}
      PORT: "3000"
      HOST: "0.0.0.0"
    volumes:
      - tentacle-data:/app/apps/backend/data
    ports:
      - "3000:3000"

volumes:
  tentacle-db-data:
  tentacle-data:
docker compose up -d

Already have a MariaDB/MySQL instance? Use this minimal config:

services:
  web:
    image: ghcr.io/knaox/tentacle-tv:latest
    container_name: tentacle-tv
    restart: unless-stopped
    environment:
      JWT_SECRET: ${JWT_SECRET}
      PORT: "3000"
      HOST: "0.0.0.0"
    volumes:
      - tentacle-data:/app/apps/backend/data
    ports:
      - "3000:3000"

volumes:
  tentacle-data:
docker compose -f docker-compose.external.yml up -d
First launch: Open http://your-server:3000 — the setup wizard guides you through database, Jellyfin connection, and admin account creation.

Configuration

VariableDescriptionDefault
DATABASE_URLMariaDB connection string
JWT_SECRETSecret key for token signing
PORTServer listening port3000
HOSTServer bind address0.0.0.0
RATE_LIMITMax requests/min per IP1000

Jellyfin URL and API key are configured through the web setup wizard and stored in the database.

Features

Video Playback

HTML5 + HLS streaming (web), native mpv with Direct Play, Dolby Vision & Atmos (desktop). Resume, track switching, per-library preferences.

Glassmorphism UI

Premium dark theme with purple/pink accents, dynamic hero banners, animated media cards, global search with Ctrl+K. Fully responsive.

Plugin System

Built-in admin marketplace with one-click install. Multiple registry sources, SHA256 verification, auto-navigation integration.

Administration

Setup wizard, invite system, support tickets, TV pairing via 4-digit code, real-time notifications. Full control.

Multi-language

English and French with i18next. More languages can be added through the translation system.

Auto-Updates

Desktop app auto-updates via Tauri updater. Docker images auto-pull with Watchtower. Always up to date.

Tech Stack

LayerTechnology
WebReact 19, Vite 6, Tailwind CSS, Framer Motion
DesktopTauri v2 (Rust), native mpv player
MobileReact Native 0.76, Expo 52, NativeWind
BackendFastify 5, Prisma 6, MariaDB 11
DataTanStack Query v5
Videohls.js (web), mpv (desktop), react-native-video
LanguageTypeScript 5.7, strict mode

Architecture

┌─────────────┐     ┌─────────────┐     ┌─────────────────┐
│   Web App   │────▶│   Backend   │────▶│    MariaDB      │
│  (React 19) │     │ (Fastify 5) │     │  (Prisma ORM)   │
└─────────────┘     └──────┬──────┘     └─────────────────┘
                           │
┌─────────────┐            │            ┌─────────────────┐
│ Desktop App │────────────┘       ┌───▶│ Jellyfin Server │
│  (Tauri v2) │                    │    └─────────────────┘
└─────────────┘            ▲───────┘
                           │
                     /api/jellyfin/*
                      (proxy route)
Tentacle Backend /api/*

Auth, invites, tickets, config, pairing, plugins

Jellyfin Proxy /api/jellyfin/*

Streaming, media browsing, user data via backend proxy

Platform Status

PlatformVersionStatusTechnology

Resources