Warning
This is an unofficial web interface for Tablo devices. It is not affiliated with Nuvyyo Inc. or Tablo. Use at your own risk.
A modern, responsive web application for your Tablo (Gen 4) devices. Built with React, TypeScript, FastAPI, and FFmpeg for seamless live TV streaming and library management.
| Live TV | TV Guide |
|---|---|
![]() |
![]() |
| Login | Profile |
|---|---|
![]() |
![]() |
- Live TV Streaming: Smart transcoding (via FFmpeg) for high-compatibility browser playback.
- Traditional Guide: A full timeline/grid view of upcoming programs.
- Library Management: Browse and watch your recordings directly in the browser.
- Auto-Discovery: Automatically finds and connects to your Tablo devices on the local network.
- Plex & Jellyfin Live TV: HDHomeRun emulation — add tablo-web as a Live TV tuner in Plex or Jellyfin with full XMLTV EPG.
- Containerized: Easy deployment using Docker or Podman, with pre-built images on GHCR.
- Tablo Gen 4 Device (with an active account).
- Docker or Podman with Docker Compose / Podman Compose.
- FFmpeg (included in the backend container).
-
Clone the repository:
git clone https://github.com/trevor-viljoen/tablo-web.git cd tablo-web -
Launch the stack:
# Using Docker docker-compose up -d # Using Podman podman-compose up -d
-
Access the app: Open
http://localhost:7070in your browser. -
Login: Use your Tablo account email and password to authenticate.
# Using Docker
docker-compose up -d --build
# Using Podman
podman-compose up -d --buildLocal Dockerfile tweaks: create a
docker-compose.override.ymlto test changes before committing — it is gitignored and automatically merged by Compose.
tablo-web exposes an HDHomeRun-compatible tuner interface so Plex and Jellyfin can use your Tablo as a Live TV source with a full multi-day EPG.
- Go to Settings → Live TV & DVR → Set Up Plex DVR.
- Plex will auto-discover the tuner at
http://<host>:7070. If not, enter it manually. - EPG data loads automatically — no Gracenote subscription needed.
- Go to Dashboard → Live TV → Add Tuner Device → choose M3U Tuner.
- URL:
http://<host>:7070/api/iptv/playlist.m3u
- URL:
- Go to Dashboard → Live TV → Add TV Guide Data Provider → choose XMLTV.
- URL:
http://<host>:7070/api/iptv/epg.xml
- URL:
- Refresh guide data and browse Live TV.
See GitHub Issues for known limitations with OTT channels and EPG matching.
- Frontend: React + Vite + Tailwind CSS + hls.js.
- Backend: FastAPI (Python) + FFmpeg for transcoding + tablo-api.
- Proxy: Nginx handles routing between the frontend and backend containers.
- This application proxies sensitive requests to your local Tablo device.
- Credentials (email/password) are stored locally in a
data/config.jsonvolume and are only used for authentication with the Tablo cloud API. - Live streams are proxied and transcoded locally on your server.
If you encounter a bug, please follow these steps to help us diagnose the issue:
-
Generate a debug report — click the profile icon in the top-right corner of the app, then choose Download Debug Report. This creates a
tablo-debug-<timestamp>.jsonfile containing server diagnostics and browser info. It contains no passwords or personal information. -
Open an issue on GitHub Issues and include:
- A clear description of what happened and what you expected.
- Steps to reproduce the issue.
- Your browser and OS version.
- The debug report JSON file attached to the issue.
-
Browser console logs — if the app shows an error, open your browser's developer tools (F12), go to the Console tab, and copy any red error messages into the issue.
If you find this project useful and would like to support its development, you can buy me a coffee!
This project is licensed under the MIT License - see the LICENSE file for details.
Tablo and the Tablo logo are trademarks of Nuvyyo Inc. marks of Nuvyyo Inc.



