Skip to content

Open Watch PartyWatch together across different apps

Each person plays their own copy. The room keeps everyone in sync.

1:02:141:02:141:02:14K7M-Q2X
  • One room, any app

    Share the 6-character code, such as K7M-Q2X, and everyone joins the same room.

  • Your own copy

    The room names a title, not a file. The protocol forbids anything in the room that locates or fetches media, and the relay never fetches media.

  • Free, no account

    You join with the code and a display name. The public relay is free for open-source apps.

    Who may use it
  • Open source, self-hostable

    The protocol, relay and SDKs are open source under the Apache License 2.0. Anyone can run their own relay.

    Run a relay

How a room works ​

  1. Create a room ​

    One person creates a room and shares its code.

  2. Pick the title ​

    The host picks the title and controls playback, or lets everyone control it. Each app finds its own copy of the title.

  3. Wait for everyone ​

    The room waits up to 15 seconds for everyone to be ready, or up to 30 seconds after a new title, then plays.

  4. Stay in step ​

    The room keeps playback in step. If your copy is a different cut, your app can let you set an offset. The room is unaffected.

  • Up to 8 people in a room, by default
  • 5 minutes for a dropped connection to resume
  • 24 hours at most for a room

What the relay holds ​

  • While the room runs ​

    Display names, app names, the title's details and the playback position. All deleted when the room ends.

  • After the room ends ​

    Daily counts per app name, kept for 400 days. The server's daily disk backup can hold the room for up to a day.

  • Never ​

    No cookies, and no logs of names, codes, titles or positions.

The privacy notice says exactly what the public relay keeps. The public relays are the ones listed in /relays.json.

Add it to your app ​

Use an SDK for TypeScript, Dart, Kotlin or Swift, or speak the protocol directly. Your app supplies a player adapter, a resolver and its interface; the SDK does the rest.