OpenWatchParty: Synchronized Watch Parties for Jellyfin

What is OpenWatchParty? OpenWatchParty is a Jellyfin plugin that enables synchronized media playback across multiple clients. Watch movies and shows together with friends, no matter where they are. Unlike Jellyfin’s built-in SyncPlay, OpenWatchParty uses a dedicated external session server, providing more reliable synchronization and better latency handling. Architecture The system consists of three components: Component Technology Role Jellyfin Plugin C# Delivers client JavaScript and configuration UI Session Server Rust Manages rooms, relays sync messages via WebSocket Web Client JavaScript Embedded in Jellyfin UI, coordinates playback flowchart LR A[Client A] <-->|WebSocket| S[Session Server<br/>Rust] B[Client B] <-->|WebSocket| S C[Client C] <-->|WebSocket| S Features Real-time Synchronization: Playback stays in sync across all participants Room-based Management: Create and join watch party rooms Host Control: The party creator controls playback (play, pause, seek) Latency Monitoring: RTT (Round-Trip Time) measurement and display Drift Correction: Automatic playback rate adjustment to maintain sync HLS Support: Works with transcoded content via HTTP Live Streaming JWT Authentication: Secure user identity verification Installation 1. Deploy the Session Server docker run -d \ -p 3000:3000 \ -e ALLOWED_ORIGINS=https://your-jellyfin-domain.com \ ghcr.io/mhbxyz/openwatchparty-session-server:latest 2. Add the Plugin Repository In Jellyfin Dashboard: ...

January 19, 2026 · 2 min · Manoah B.

Automate SSH Key Generation with ssh-keybuild

Introduction Manually juggling SSH keys across different projects and hosts is both tedious and error‑prone. I built ssh-keybuild to provide a lightweight, reliable, all-in-one solution to: Quickly generate ed25519 or rsa keys Auto‑add the key to your SSH agent Copy the public key to your clipboard Update ~/.ssh/config without duplicates In this post, we’ll explore the script’s main features and how to get up and running in minutes. Where to Find the Script The complete code is available on GitHub: ssh-keybuild.sh ...

April 19, 2025 · 2 min · Manoah B.

DictDB: A Lightweight In-Memory Database for Python

Why DictDB? When prototyping or writing tests, you need a data store as agile as your code. SQLite feels heavy; plain dictionaries lack structure and querying power. DictDB bridges that gap: an in-memory, dictionary-backed database with SQL-like CRUD, optional schemas, indexing, and persistence. No server required. Features Zero Configuration: Import and use. No server, no setup. Query DSL: Fluent interface with Python operators (table.age >= 18). Indexing: Hash indexes for O(1) lookups, sorted indexes for range queries. Optional Schemas: Type validation when you need it. Persistence: Save/load via JSON or Pickle (sync and async). Automatic Backups: Periodic and incremental backup support. Thread Safety: Reader-writer locks for concurrent access. Minimal Dependencies: Only sortedcontainers required. Installation pip install dctdb Note: The PyPI package is dctdb, but the import is dictdb. ...

April 19, 2025 · 2 min · Manoah B.