Privacy-first shared YouTube rooms. Synchronized playback, a collaborative queue and live chat without advertising, analytics, fingerprinting, or a required account for unlisted rooms.
- Paste a YouTube link anywhere in a room (or drop it, or share it from the YouTube app on Android) and it is queued instantly; an idle room starts it right away. Several links, playlists (optional),
?t=start times, play next and play now are supported. - Ephemeral live chat, emoji reactions and join notices that also show over the video in fullscreen; nothing is stored.
- Vote to skip, per-person presence (who is buffering or still needs to tap for sound), undo for removals, room names and self-chosen display names without an account.
- Optional server-side YouTube search and playlist import with
KOALAPARTY_YOUTUBE_API_KEY. - Countdown starts and “wait for everyone” so all viewers begin on the same frame, room modes (party, cinema, host only), short links with QR codes, scheduled parties, saved queues, a reaction heatmap and a shareable party recap.
- English and German interface.
- Server-authoritative play, pause, seek, queue, reorder, skip, and reconnect behavior.
- Collaborative queue voting, shuffle, loop, duplicate protection, history, and ephemeral emoji reactions.
- Room-synchronized playback speed and optional SponsorBlock skipping of sponsor/intro/outro segments for everyone at once.
- Persistent anonymous browser identities; optional accounts and friend-only rooms.
- Cross-device room library, private invitations, account/session self-service, and ownership transfer.
- Owner/admin/member roles, per-member capabilities, kick, ban, visibility, and activity history.
- Optional public discovery with controlled provider metadata; disabled by default for early-beta deployments.
- Responsive SvelteKit UI with accessible loading, empty, error, connection, light, dark, and system-theme states.
- Browser-local recent-room shortcuts on the start page, including for anonymous users.
- Floating mini-player, playback drift diagnostics, and live room previews for returning viewers.
- Go, WebSockets, SQLite WAL, embedded migrations, Docker, health/readiness probes, and Caddy-ready TLS deployment.
Requirements: Go 1.26.8, Node.js 24 LTS, npm 12, and Docker.
git clone https://github.com/Shik3i/KoalaParty.git
cd KoalaParty
cd frontend && npm ci && cd ..
make verify
docker compose up --buildOpen http://127.0.0.1:8080. The anonymous identity belongs to the current browser storage; create an account before clearing it if room ownership must be recoverable.
Release images support linux/amd64 and linux/arm64:
cp .env.example .env
docker pull ghcr.io/shik3i/koalaparty:0.13.0
docker compose -f deploy/docker-compose.ghcr.yml up -dThe official deployment is preconfigured for https://party.koalastuff.net and the shared external caddy_net used by the other Koala services. Pin an exact image version and verify KOALAPARTY_TRUSTED_PROXIES against that Docker network. Public room discovery remains disabled until KOALAPARTY_PUBLIC_ROOMS=true is explicitly selected. See deployment.
make verify
cd frontend && npm run test:e2e
cd ../backend && go test -race -count=1 ./...
cd .. && node --test scripts/*.test.mjs
docker compose up -d --buildCI additionally runs dependency scanning, a frontend audit, Docker build/health smoke tests, and the browser suite. See testing.
- Architecture and project structure
- Authentication, permissions, and protocol
- Database, privacy, and known limitations
- Deployment, testing, and releasing
- Changelog, security policy, and contributing guide
Pushing a stable tag matching vX.Y.Z runs the full verification suite (including the tag/changelog check in scripts/verify-release.mjs), then builds and pushes a multi-architecture GHCR image (linux/amd64, linux/arm64) with SBOM, provenance, and a signed build attestation.
KoalaParty is free and open-source software licensed under the MIT License.
Optional segment-skipping uses data from SponsorBlock, licensed CC BY-NC-SA 4.0. KoalaParty is a non-commercial project without KoalaParty analytics, ads, fingerprinting, or fees and attributes SponsorBlock in-app wherever segments are used. The feature can be disabled entirely with KOALAPARTY_SPONSORBLOCK=false or per room.