Open source · Self-hosted · v0.1.0

Watch together.
Privately.

ShowTime is a lightweight watch-party server you run yourself. Sync movies, shows and live TV with friends in real time, with an encrypted library, friends-only privacy, smart AV1/VP9 encoding and end-to-end encrypted chat.

  • MIT licensed
  • Node.js 22.13+
  • 1 runtime dependency
  • 6 test suites
  • AES-256-GCM
ShowTime · Movie Night
ShowTime watch-party room: synced player, queue, host permissions and codec switcher
ShowTime on a phone: compact navigation and watch stats
0frameworks — plain Node.js + SQLite
3codecs: AV1, VP9, H.264
48hand the chat destroys itself
30badges to earn

Features

Everything for movie night, nothing you don't want

Built for small groups and local networks first, with the privacy and security you'd expect before putting it on the internet.

🍿

Synced watch parties

Play, pause, seek, queue and skip stay in lockstep for everyone. Hosts decide who may control what, and can stream a file straight from their own computer over WebRTC — nothing is uploaded.

🔒

Invisible by default

No user directory, no search. People connect by swapping private friend codes off-platform. Strangers in a shared room only ever see anonymous aliases. Online status is friends-only.

🛡

Encrypted at rest

Uploads, thumbnails, subtitles and profile pictures are stored with chunked AES-256-GCM and a per-file key, so seeking still works. Local library folders are read-only and never modified.

⚡

Smart AV1 / VP9 / H.264

A quick scan trial-encodes your file on your machine, then produces only the versions worth having. Every viewer's player picks the best one for its device — and can switch live without losing its place.

💬

E2E encrypted chat

A mIRC-style chat where the server only sees ciphertext. Keys come from a passphrase, nicknames live inside the encrypted payload, nothing touches disk, and everything is wiped every 48 hours.

📺

Live TV directory

Browse thousands of free, publicly available channels from the community iptv-org index. Streams play through a hardened proxy with health checks, frozen-feed detection and automatic recovery.

📝

Subtitles that just work

Embedded and sidecar tracks are found automatically and stored as encrypted WebVTT. Upload your own, or share subtitles live with your room, peer-to-peer.

🏆

Profiles & badges

Track watch time, recently watched and everything you've seen. Earn 30 bronze-to-platinum badges. Your activity is private unless you choose to share it with friends.

Screenshots

A modern, fast interface

These are captured from the live demo, which runs the real front-end in your browser.

Home
Watch room & host controls
Codec scan report
Encrypted chat
Live TV
Friend codes & anonymous requests
Achievements
Watch-time stats
Aliases for strangers

How it works

From download to movie night in three steps

  1. 1

    Run it

    Clone the repo, npm install, npm start. The first account you register becomes the admin.

  2. 2

    Add media & friends

    Upload files (encrypted) or point ShowTime at a folder. Swap friend codes, make a group, share a title.

  3. 3

    Start a room

    Invite people, press play, and everyone watches in sync. Chat is one tab away — and it forgets everything on schedule.

Security

Designed to be safe on the internet

ShowTime assumes it will be exposed to people you don't know, so the defaults are strict. Read the full security policy.

  • Accounts: scrypt password hashing, HttpOnly SameSite=Strict sessions, rate-limited login, invite-only signup.
  • Web: strict CSP, CSRF protection, no inline script, no innerHTML with data.
  • Streaming proxy: SSRF-guarded (private addresses blocked, even after redirects) with signed, expiring links.
  • Uploads: signature-checked before ffmpeg runs, with ffmpeg protocol whitelisting.
  • Access control: every file request is checked; there are no public share links.
  • Chat: end-to-end encrypted, RAM-only, zero-filled on wipe.

Install

Up and running in about two minutes

Requires Node.js 22.13+ and FFmpeg on your PATH.

# get it
git clone https://github.com/248Tech/ShowTime.git
cd ShowTime
npm install
cp .env.example .env     # optional: SMTP, library folders, TLS
npm start                # http://127.0.0.1:8080 - first signup becomes admin

Serving friends over the internet? Put it behind HTTPS (Tailscale Funnel, Cloudflare Tunnel or Caddy) — see the full install guide for Windows, macOS and Linux, reverse proxies and running it as a service.

FAQ

Questions, answered

Is ShowTime free?

Yes. It is free, open-source software under the MIT license. You host it yourself on your own computer or server.

Does it include movies or TV channels?

No. You bring your own media. The Live TV page imports the community iptv-org index of publicly available channels, and you are responsible for what you watch and share. ShowTime has no public links and includes a compliance hook for future copyright tooling.

Can friends outside my network join?

Yes. Expose it over HTTPS with a tunnel (Tailscale Funnel, Cloudflare Tunnel) or a reverse proxy, then send invite links. Signup is invite-only by default.

Is the chat really private?

Messages are encrypted in your browser with AES-256-GCM using a key derived from a channel passphrase. The server only holds ciphertext in memory, never on disk, and destroys everything every 48 hours. Anyone who knows a channel's passphrase can read it, so share it only with people you trust.

Does it support AV1, VP9 and AV2?

AV1, VP9 and H.264 are supported, with a quick scan that picks the best version and per-viewer switching. AV2 isn't supported by FFmpeg or any browser yet, so it is a ready-made slot that activates when they catch up.

Which browsers work?

Current Chrome, Edge, Firefox and Safari. Streaming a local file to a room (peer-to-peer) needs Chrome, Edge or Firefox on the host's side.

What's the project status?

v0.1.0 is the first public release and is considered beta. It is covered by an automated test suite, but expect rough edges. Issues and pull requests are welcome.

Your movie night, your rules.

Open the demo, no install and no sign-up — or grab the code and host it yourself.