Streamystats is a statistics service for Jellyfin, providing analytics and data visualization. 📈 Built with modern advanced frameworks.
This is a hobby project of mine. Don't expect fast development.
- 🖥️ Dashboard with overview statistics, live sessions and more!
- 👤 User-specific watch history and statistics
- 🌟 Most popular item tracking
- 📚 Library statistics
- ⏱️ Watch time graphs with advanced filtering
- 🏠 Multi-server and user support
- ✨ AI Chat with you library and get watch recomendations
- 🧹 Supported by Janitorr (beta)
- ⬇️ Import data from Jellystat and Playback Reporting Plugin to get started
Library items are embedded using OpenAI-compatible APIs if enabled, supporting multiple models and custom configurations. Embeddings are stored in vectorchord with support for any dimension, allowing you to use any embedding model. The system automatically creates vector indexes optimized for similarity search.
Interactive chat interface. Supports multiple providers out of the box with any OpenAI-compatible API.
The chat includes function calling with 13 specialized tools:
- Personalized recommendations based on watch history
- Semantic library search using embeddings
- Watch statistics and most-watched content
- Shared recommendations for multiple users
- Genre filtering and top-rated items
- Recently added content discovery
Recommendations use vector similarity (cosine distance) to find content similar to your watch history. The system analyzes your viewing patterns and suggests movies and series. Each recommendation includes explanations showing which watched items led to the suggestion.
- Individual item statistics
- More statistics
- Only sync certain libraries
- More AI tools for better chat
Playback reporting plugin is no longer needed and Streamystats soely relies on the Jellyfin API for statistics.
- Install Docker and Docker Compose if you haven't already.
- Copy the
docker-compose.ymlfile to your desired location. Use tag:latest(read more below in Version Tags. - Change any ports if needed. Default web port is
3000. - Change the
SESSION_SECRETin thedocker-compose.ymlfile to a random string. You can generate one withopenssl rand -hex 64. - Start the application with
docker-compose up -d - Open your browser and navigate to
http://localhost:3000 - Follow the setup wizard to connect your Jellyfin server.
First time load can take a while, depending on the size of your library.
Version tags (e.g., v1.2.3) are automatically generated on release. These tags provide stable, tested reference points for production use. I recommend pinning to specific version tags for stability.
The :latest tag always points to the latest commit on the main branch. It contains the most recent features and fixes. While typically stable, it may occasionally contain breaking changes
Docker is currently the easiest and recommended way to run streamystats. However you can also run without docker.
- Frontend: Next.js, React, TypeScript
- Backend: Hono with Bun v1.3
- Database: vectorchord (used for embeddings)
- Containerization: Docker