OpenWatchParty
Docker app from BBergle's Repository
Overview
Readme
View on GitHubOpen Watch Party
Open Watch Party (OWP) lets people watch one title together even when each of them uses a different app. It is an open protocol, a free public relay and client SDKs for TypeScript, Dart, Kotlin and Swift.
How it works
Someone creates a room and shares its 6-character code. Everyone who joins plays their own copy of the title in their own app.
The relay holds the room's shared timeline. It sees the title and the playback position, but never a file or a stream. In each app, the SDK keeps the player on that timeline.
Your app supplies two pieces of code:
- A player adapter, which lets the SDK read and control your player.
- A resolver, which finds the user's own copy of the title the host picked.
Where to start
| You are | Start here |
|---|---|
| An app developer | The integration guide, then the SDK for your language: TypeScript, Dart, Kotlin or Swift. The web example is a complete page, and owp-peer is a scripted participant for testing your app. |
| A relay operator | The relay guide and its self-hosting section. |
| Implementing OWP in another language | The protocol in SPEC.md, client behaviour in SDK.md, the test tables and the relay suite. |
| A contributor | CONTRIBUTING.md and, for automated contributors, AGENTS.md. |
Repository map
| Path | What it is |
|---|---|
spec/ |
The protocol: SPEC.md (wire protocol and relay), SDK.md (client behaviour), JSON schemas and examples |
relay/ |
The relay, owp-relay, written in Go, with its Dockerfile and compose.yaml |
conformance/ |
The owp-conform relay suite, the test tables every SDK runs, and the owp-peer scripted participant |
sdk/typescript/ |
The TypeScript SDK, npm package openwatchparty |
sdk/dart/ |
The Dart SDK, pub.dev package openwatchparty |
sdk/kotlin/ |
The Kotlin Multiplatform SDK, Maven party.openwatch:openwatchparty |
sdk/swift/ |
The Swift SDK, SwiftPM product OpenWatchParty |
examples/web/ |
A web page with an HTML <video> player, built on the TypeScript SDK |
docs/ |
The integration guide, the terms of use and the privacy notice |
relays.json |
The public relay list |
website/ |
The https://openwatch.party site, built with VitePress |
Public relay
Open-source apps may use the public relays for free, without asking. Any other app needs written permission first: write to contact@openwatch.party. The terms of use give the rules, and the privacy notice says what the relays keep.
Security
Report vulnerabilities privately, as SECURITY.md describes. Don't open a public issue.
License
The repository is licensed under Apache-2.0.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/edde746/owp-relay:1Runtime arguments
- Network
bridge- Privileged
- false
- Extra Params
--user 0:0
Template configuration
Host port for the relay. Set the app's custom relay to http://YOUR-UNRAID-IP:THIS-PORT (base URL only, no path).
- Target
- 8080
- Default
- 9977
- Value
- 9977
Room state, so rooms survive a container restart or update.
- Target
- /state
- Default
- /mnt/user/appdata/owp-relay
- Value
- /mnt/user/appdata/owp-relay
Container path for room state. Leave as /state.
- Default
- /state
- Value
- /state
Set to true only behind a reverse proxy, so per-IP limits see the real client IP from X-Forwarded-For.
- Default
- false
- Value
- false
Participants per room, from 1 to 20.
- Default
- 8
- Value
- 8