How it works
One browser runs the game. Every other seat is a controller and a screen. No installs, no launchers â just a link.
đŽ The host
Picks a game they own. The file loads into their browser with the File API and never uploads anywhere â it's identified by a hash of its bytes, not its name. Their browser runs the emulator, renders the picture, plays the sound, and owns the save.
đšī¸ The guest
Opens one link. Presses any button â first press maps their gamepad or keyboard. From then on their inputs fly to the host and the host's picture and sound fly back. They never touch the game file.
HOST (the only emulator) GUEST (browser + controller) âââââââââââââââââââââ âââââââââââââââââââââââââ game file â stays in browser â ââ emulator renders the game â ââ controller input âââ WebRTC DataChannel âââ gamepad / keyboard â ââ video + audio ââââ WebRTC stream ââââââââââē their screen
Three things worth knowing
đ Browser-based
Nothing to install for host or guest. A modern browser and a controller (or keyboard) is the whole rig.
đ Host-authoritative
The host owns the game state: save, load, reset. Guests send inputs and nothing else â that's by design, not by permission setting.
đĨ Free account
Accounts are how friends find you on the couch â you get a friend code like VC-NAME-1234. Guests need one to take a seat.
Under the hood it's PeerJS signaling with STUN, and a TURN relay only when a direct path doesn't exist. The nerdy version lives on the Couch Network page.
Ready to take a seat?
Host brings the game. Friends take a seat.