Note
Answer "What should I watch tonight?" based on how you feel, not just by genre.
Imagine having 500+ movies in Jellyfin and spending 30 minutes every night scrolling through them. Genre filters didn't help because "Thriller" includes everything from The Bourne Identity to Hereditary.
I wanted to browse by mood, not just category. So I built this.
RasaServer is a vibe-based movie discovery layer that sits alongside Jellyfin, organizing your library by each film's atmosphere and tone instead of generic genres. It powers the RasaPlay (WIP) viewing app and includes a web UI for setup and tag management.
The Problem: Browsing by genre doesn't match how you actually choose movies. "Action" doesn't tell you if it's a brainless popcorn flick or a slow-burn thriller.
The Solution: Movie's mood-based organization. Instead of "Thriller," you browse:
- π Dialogue-Driven - Character-focused narratives
- π§οΈ Rain & Neon Aesthetic - Cyberpunk/neo-noir vibes
- π§ Brainmelt Zone - Mind-bending psychological films
- π Ha Ha Ha - Pure comedy, no drama
36 curated moods (expandable) that actually answer "what matches my vibe right now?"
ββββββββββββββββ
β Jellyfin β β Your existing media server (source of truth)
ββββββββ¬ββββββββ
β webhooks (real-time sync)
βΌ
ββββββββββββββββββββββββββββ
β RasaServer β β Mood tagging + transformation layer
β ββββββββββββββββββββββ β
β β Web UI (Admin) β β β Setup, sync, manual / automatic tagging
β ββββββββββββββββββββββ β
β ββββββββββββββββββββββ β
β β REST API β β β Powers client apps
β ββββββββββββββββββββββ β
ββββββββββββ¬ββββββββββββββββ
β API
βΌ
ββββββββββββββββ
β RasaPlay β β Client app (browse by mood, watch)
ββββββββββββββββ
Important
Jellyfin is always the source of truth. RasaServer is just an intelligent vibe index layer.
How it works:
- RasaServer syncs your Jellyfin library (one-time setup via Web UI)
- Automatically tags movies into mood buckets
- Stays in sync via Jellyfin webhooks (real-time updates)
- Web UI for admin tasks: configuration, manual tagging, sync management
- RasaPlay app (or any client) queries RasaServer API for mood-organized content
- β Movie's mood-based organization - 36 curated moods (see full list below)
- β Real-time sync - Jellyfin webhooks keep data fresh
- β Auto-tagging - Optional AI suggestions (BYOK: Claude)
- β Manual tagging - Web UI for fine-tuning
- β Import/Export - Backup your mood mappings
- β External ratings - Optional OMDB integration (IMDb, RT, Metacritic)
- β Built-in Web UI - No separate admin tools needed
- π Local-first - All data in
./data/rasa.sqlite - π No telemetry - Zero tracking, no accounts
- π BYOK only - AI tagging requires your own API key (optional)
docker run -d --name rasa-server -p 3242:3242 \
-v "$(pwd)/data:/app/data" \
-v "$(pwd)/config:/app/config" \
-v "$(pwd)/logs:/app/logs" \
-e WEBUI_PORT=3242 \
-e RASA_DATABASE_PATH=/app/data/rasa.sqlite \
--restart unless-stopped \
ghcr.io/imgkl/rasaserver:latestThen:
- Open
http://localhost:3242in your browser (Web UI) - Complete setup wizard (enter Jellyfin URL + credentials)
- Run initial sync
git clone https://github.com/imgkl/RasaServer
cd RasaServer
./run.shWeb UI: http://localhost:8001
Click to expand full mood list
- Dialogue-Driven
- Vibe Is the Plot
- Existential Core
- Antihero Study
- Ensemble Mosaic
- Crime, Grit & Style
- Men With Vibes (and Guns)
- Obsidian Noir
- Rain & Neon Aesthetic
- Cat and Mouse
- Brainmelt Zone
- The Twist Is the Plot
- Psychological Pressure-Cooker
- Late-Night Mind Rattle
- Uncanny Vibes
- Slow Burn, Sharp Blade
- One-Room Pressure Cooker
- Visual Worship
- Rainy Day Rewinds
- Quiet Epics
- Emotional Gut Punch
- Feel-Good Romance
- Coming of Age
- Bittersweet Aftermath
- Ha Ha Ha (Comedy)
- Horror & Unease
- Heist Energy
- Time Twists
- Film School Shelf
- Modern Masterpieces
- Regional Gems
- Underseen Treasures
- Based on Vibes (True Story)
- Cult Chaos
- Experimental Cinema
- WTF Did I Watch
Access at http://your-server:3242
- Setup Wizard - Initial Jellyfin connection configuration
- Sync Management - Manual sync, view sync status and history
- Movie Browser - View all movies with their current mood tags
- Tag Editor - Add/remove mood tags from individual movies
- AI Auto-Tag - Bulk suggestions for untagged movies (requires Claude API key)
- Import/Export - Backup and restore your mood mappings
- Settings - Configure integrations (OMDB, Claude API)
- Jellyfin integration
- Mood tagging system
- Real-time webhook sync
- Web UI for admin tasks
- AI auto-tagging (BYOK: Claude)
- Import/Export mood mappings
- OMDB ratings integration (BYOK)
- User-defined custom moods
- Multi-user support
- Advanced filtering (combine moods, exclude tags)
- Mood analytics (most-watched moods, etc.)
This is a personal project, but PRs are welcome for:
- Bug fixes
- New mood definitions (with clear criteria)
- Performance improvements
- Web UI enhancements
Please open an issue first to discuss major changes.
MIT - Use it, fork it, modify it. Just don't blame me if your movie night goes wrong.
Built to solve a personal problem: "I have 500 movies but can't decide what to watch."
Inspired by the realization that mood > genre for actually picking movies.