Streamystats is a statistics service for Jellyfin, providing analytics and data visualization. 📈 Built with modern advanced frameworks.
This is a personal hobby project, so please don't expect rapid development. Even though I am a full-time experienced developer, this project is prone to bugs, and I am using AI-assisted development for tasks ranging from PR reviews to refactoring and coding new features.
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:
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.
Playback reporting plugin is no longer needed and Streamystats solely relies on the Jellyfin API for statistics.
docker-compose.yml file to your desired location. Use tag :latest (read more below in Version Tags).3000.SESSION_SECRET in the docker-compose.yml file to a random string. You can generate one with openssl rand -hex 64.docker-compose up -dhttp://localhost:3000First 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.
Database migrations are automated and handled by the job-server container (it runs migrations on startup before becoming healthy).
Streamystats does not perform automatic rollbacks/downgrades of the database schema for Docker users.
v1.95.0 back to v1.94.0), the database remains migrated to the newer version. The older application version will likely fail to start or behave incorrectly because it does not understand the newer schema.Docker is currently the easiest and recommended way to run streamystats. However you can also run without docker.
TypeScript
99.1%
Streamystats is a statistics service for Jellyfin, providing analytics and data visualization. 📈 Built with modern advanced frameworks.
This is a personal hobby project, so please don't expect rapid development. Even though I am a full-time experienced developer, this project is prone to bugs, and I am using AI-assisted development for tasks ranging from PR reviews to refactoring and coding new features.
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:
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.
Playback reporting plugin is no longer needed and Streamystats solely relies on the Jellyfin API for statistics.
docker-compose.yml file to your desired location. Use tag :latest (read more below in Version Tags).3000.SESSION_SECRET in the docker-compose.yml file to a random string. You can generate one with openssl rand -hex 64.docker-compose up -dhttp://localhost:3000First 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.
Database migrations are automated and handled by the job-server container (it runs migrations on startup before becoming healthy).
Streamystats does not perform automatic rollbacks/downgrades of the database schema for Docker users.
v1.95.0 back to v1.94.0), the database remains migrated to the newer version. The older application version will likely fail to start or behave incorrectly because it does not understand the newer schema.Docker is currently the easiest and recommended way to run streamystats. However you can also run without docker.
TypeScript
99.1%