Watch together.
Peer to peer.
One person shares a movie, a game or a desktop, and the others watch it live while everyone talks. Make a room, send the link: the picture goes straight to each friend, encrypted end to end.
Windows 10/11 · Linux AppImage · MIT licensed
from capture to a friend's screen on one host
accounts, sign-ups or servers you have to trust
encrypted: Noise on the wire, SFrame on every frame
open source, no GPL anywhere in the stack
Features
Everything a movie night needs. Nothing in the middle.
A desktop app for calls and screen streams, built in C++ on its own peer-to-peer media transport.
Rooms by link
Make a room, copy its rats:// link and send it to whoever should join. Peers find each other through the DHT, so a server is optional.
A screen or a window, with its sound
Viewers hear what your applications play, but never the call's own voices. Games, movies, a whole desktop.
Voice that is easy to listen to
Echo cancellation, noise suppression and automatic gain from WebRTC AudioProcessing. Mute, deafen, see who speaks.
Hardware encoding
AV1, HEVC and H.264 on NVENC, AMF or Quick Sync. On Windows the screen reaches the encoder without leaving the GPU.
Encrypted end to end
Connections use the Noise protocol and every frame is sealed again with SFrame. A server that forwards it can't read it.
Low latency on real networks
Rate control follows the path, and FEC and retransmission repair losses within each frame's deadline. A frame is in time or dropped: the stream never stalls behind an old one.
Gets through NATs
Port mapping and hole punching first, a relay through ratcast-server when nothing else works.
Cameras
Show yourself next to the share, or meet in a grid where whoever speaks is ringed.
Text chat
Write to the room beside the call. Late joiners see the last hundred messages.
Updates itself
New releases install from GitHub, checked by SHA-256 — but never while a call is on.
How it works
From zero to watching in three steps
No sign-up, no server to set up, nothing to configure. Unzip, run, send a link.
Make a room
Press one button and the app gives you a link. Send it to your friends however you like.
rats://PEER-ID
Friends join
They paste the link and press Join, or open it from the command line: ratcast rats://…
no account, no install wizard
Share and watch
Press Share, pick a screen or a window and whether its sound goes too. The others press Watch.
F full screen · Ctrl+I stats
Network
A room that rearranges itself
Every room starts as a mesh. When the sharer's uplink can't carry a copy for everyone, the share is rearranged one viewer at a time: through a server, through another viewer with spare uplink, or still directly.
Through a server
ratcast-server forwards the share like an SFU, so one upload serves every viewer it takes.
Through another viewer
A viewer with spare uplink passes the frames on as they came, without re-encoding.
Sealed on every hop
Frames stay SFrame-encrypted the whole way. A server is never given a key.
libratcast
The transport underneath, yours to build on
libratcast moves encoded frames between peers — a counterpart to SRT, librist and WebRTC's media, on top of librats. No codecs, no capture: just media over P2P.
1rats_config_t config = {.protocol = RATCAST_PROTOCOL};2rats_t node = rats_create(&config);3ratcast_t media;4ratcast_handlers_t handlers = {.user = app,5 .stream_announced = on_stream,6 .frame_received = on_frame};7ratcast_attach(node, &handlers, NULL, &media); /* before rats_start() */8rats_start(node);9rats_connect(node, "sender.example", 7700);1011/* on_stream: subscribe; a feed in order, 200 ms behind */12ratcast_subscribe(media, peer_id, stream->id, 200000);
1$ ratcast-send --source pattern --audio tone2$ ratcast-recv rats://127.0.0.1:7700
Deadline-bound delivery
Each frame arrives in time or is dropped. FEC and retransmission repair what they can before it.
Rate control
Follows librats' path measurements; several streams to one peer share its path.
One to many
One sender feeds many viewers, directly or through a server.
SFrame on every frame
With a key for each sender, on top of the Noise-encrypted connection.
C and C++ APIs
Moves encoded frames only — bring your own codecs. Carries MPEG-TS feeds too.
Download
Get ratcast
The latest build, straight from GitHub Releases. Free and open source. It keeps itself up to date.
Windows
x64 · zip
Windows 10 1903+ or 11. Sharing the applications' sound needs 2004+.
Unzip and run ratcast.exe.
Download for WindowsLinux
x86_64 · AppImage
glibc 2.39+ and PipeWire 1.0+: Ubuntu 24.04, Debian 13, Fedora 40 or newer.
chmod +x and run it.
Download for LinuxOptional
Run your own server
Calls usually connect directly. A ratcast-server on a public host helps the rest: rooms behind strict NATs meet there, it relays when no path can be punched, and it can forward a share so the sharer uploads one copy however many watch. It can't read anything it carries.
Needs only librats and libratcast: no media libraries, no Qt.
1$ git clone --recursive https://github.com/librats/ratcast.git && cd ratcast2$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DRATCAST_SERVER_ONLY=ON -DRATCAST_BUILD_TESTS=OFF3$ cmake --build build --parallel 24$ sudo cmake --install build5# port 7700, UDP and TCP6$ sudo systemctl enable --now ratcast-server