Is junto free?
Yes. junto is free and open source under the MIT license. There are no accounts, no paid tiers, and no server you pay for. It rides free public nostr relays for coordination and connects friends directly to each other for the video. The only thing you bring is the media file you already have.
Do I need an account to use junto?
No. junto has no accounts, no sign-ups, and no central server. The host runs one command to create a room, shares the room code, and friends join with that code. Identity and coordination travel as encrypted messages over public relays, so there is nothing to register and no profile to create.
How do my friends get the movie file?
junto sends the file directly from the host to each joiner over a peer-to-peer WebRTC connection, so no third party ever holds it. Joiners start watching within seconds while the rest downloads in the background (that is streaming playback), and the transfer is SHA-256 verified so everyone ends up with an identical, intact copy. If a friend already has the file, they can skip the transfer entirely.
Can the relays see what we are watching?
No. Coordination messages (play, pause, seek, the room code) are end-to-end encrypted with NIP-44 before they ever touch a relay, so relays see only ciphertext: not the filename, not your activity, not even that it is junto. The media file never goes through a relay at all. It transfers directly between peers over WebRTC.
Does junto work on Windows?
Not yet. junto runs on macOS and Linux today. Windows is a known gap (it needs mpv named-pipe IPC) and is deliberately deferred until the core experience is rock-solid on macOS and Linux, so it is not a near-term promise. On macOS, install with Homebrew and it pulls in mpv too. On Linux, grab a binary from GitHub Releases or build from source with Go 1.23+.
What media player does junto use?
junto drives mpv, which it launches and remote-controls to keep everyone in sync. mpv is required, and on macOS the Homebrew formula installs it for you. Other players like VLC and IINA are deliberately out of scope for now: junto is built around mpv so the watch-party experience can be as polished as possible on one player first.
What if my network blocks direct connections?
Run junto doctor first. It checks your NAT and tells you whether direct connections will work. Strict or symmetric NATs may need a TURN relay you supply yourself with the -turn flag, since junto has no built-in relay. And there is always the fallback that just works: get the file any other way and pass it to junto join, which keeps playback in sync without transferring anything.
How many people can be in a room?
A room is built for a group of friends watching together, not a broadcast audience. The host streams the file to each joiner directly, so practical room size is bounded by the host's upload bandwidth. On a typical home connection, a handful of friends works comfortably. Friends who already have the file do not draw on that bandwidth at all.
Do subtitles stay in sync too?
Yes, and the subtitle files come along automatically. If a sidecar subtitle file (.srt, .ass, .ssa, .vtt) sits next to a shared video, the host offers it, and streaming joiners download it first and load it into mpv. Nobody has to go hunting for subtitles separately. From there the active subtitle track and delay offset mirror across the room along with play, pause, seek, speed, and playlist position. Change the track and everyone follows within about a second.
What happens if someone seeks ahead of the download?
The room pauses with a "buffering…" notice and resumes everyone together once the data arrives. Because junto streams while it downloads, seeking past what you have downloaded simply steers the download to fetch that part next, for the whole room at once. So nobody silently stalls and nobody runs ahead.
How does the readiness gate work?
Before playback starts, the host sees a live count like "2/3 ready" as friends join and load the file. When everyone is set, the host presses Enter and the room starts at the same moment. No counting down over voice chat, no one starting ten seconds early.
Can I moderate or mute someone in a room?
Yes, locally. /ignore <nick> suppresses a peer's chat and stops their playback commands and buffering from affecting you (and /unignore undoes it). /kick <nick> asks a peer to leave and auto-ignores them for everyone else. Since junto has no central authority over a public relay, kicking is cooperative: a well-behaved client leaves, but a misbehaving one can decline. There is also /sync, which forces your client to re-adopt the room's current state when something feels off.
What if my connection drops mid-watch?
junto recovers on its own. A dropped file transfer resumes from the last byte it received instead of restarting, and that resume even survives quitting and rejoining. Dropped relay connections re-dial silently in the background. Usually you stay in the room and back in sync without doing anything; at worst you see a brief "reconnecting…" notice.
How do I install junto?
On macOS, run brew install swayam-mishra/tap/junto and it installs mpv too. On Linux, download the binary for your architecture from GitHub Releases and install mpv from your package manager, or build from source with Go 1.23+. Then run junto doctor to confirm everything is ready.
Is junto a browser extension or an app?
Neither. junto is a command-line tool. You run it in a terminal and it controls mpv on your machine. There is no browser extension and no streaming-service account involved, because junto plays your own local files rather than a website's video.
Can I watch a YouTube video together?
Yes. Point junto create at an http(s) URL and junto fetches the video with yt-dlp, then hosts that file like any local one, so friends stream it within seconds over peer-to-peer. You supply the link; junto provides no content of its own. URL sources need yt-dlp and ffmpeg installed, and junto doctor checks for both. Downloads are capped at 1080p by default (override with -quality) and cached in ~/.cache/junto, so watching the same thing again is instant. Live streams are not supported yet.
How do I update or uninstall junto?
Run junto update to get the latest release, or junto uninstall to remove it. Both respect how you installed junto: a Homebrew install points you to brew upgrade junto or brew uninstall junto, a go install build points you back to go install, and a standalone binary updates or removes itself in place. junto uninstall -purge also clears your config and cache. Neither command touches mpv, yt-dlp, or ffmpeg, since those are separate installs.

Still curious? How it works goes deeper, or ask on GitHub Discussions ↗.