Get started
Install & pair in three steps.
No accounts, no cloud sign-up. Install the open-source service on your box, scan the code it prints (or type the PIN), done.
Run one command on the box
It installs a tiny service, no dependencies. Pick the command for your OS:
Linux — SteamOS · Bazzite · Steam Deck (Terminal)
$ curl -fsSL https://couchside.tv/install.sh | bash
Read the script first → · not a shell person? Paste it into ChatGPT or Claude and ask what it does; it’s a short, open-source script. · New Steam Deck? Run passwd once in Desktop Mode so it can ask permission. · Got Decky Loader? The same one-line install drops a Couchside Game Mode panel straight into your Quick Access Menu, without going through a plugin store. · On Bazzite? These steps are also in the official Bazzite documentation →
Windows — 10 / 11 (beta)
Double-click to install — it sets up the service and shows your PIN and a QR. It’s unsigned for now, so Windows SmartScreen shows a one-time “More info → Run anyway”; the admin prompt after that is the normal Windows UAC.
Prefer the terminal? In PowerShell (asks for admin via UAC):
> irm https://couchside.tv/install.ps1 | iex
Windows is in beta. Linux is the primary target and the most polished; the Windows service works today but is newer, so expect the odd rough edge and file anything you hit. Either path installs the same unprivileged service that can only run an audited allowlist of commands — no root daemon. Read the install script → or check the Windows agent source.
Either takes about 15 seconds, then shows a PIN (and a QR) and leaves the service running. Re-run any time.
Scan for your box, type the PIN
Get Couchside on your phone, then tap Scan for boxes. It finds the box on your network; the box shows a short PIN on its own screen — type that in and you’re paired. No IP addresses, no tokens, no typing. Prefer the QR? Scan it with the in-app scanner (Setup → Scan a pairing code) or just point your phone’s regular camera at it.
Fly the couch
Watch the vitals, restart a wedged display, tail the logs, or flip to the controller. Never get up to find a keyboard again.
Want more? A couple of one-time opt-ins
The installer adds a couchside command. A few extra powers are off by default — you turn them on only on the box (never from the phone), and each one tells you exactly what it grants first:
Update the box from your phone — Flatpak apps and the OS (SteamOS / Bazzite)
$ couchside allow-system-updates on
It grants the service passwordless sudo for one fixed command each — a root-owned wrapper that runs flatpak update or stages an OS update, and accepts nothing else. Never a blank cheque on flatpak or rpm-ostree. An OS update stages for the next boot, so the app says “reboot to apply” rather than pretending it finished. Turn it off any time with couchside allow-system-updates off.
Also: couchside allow-updates on (let the app update Couchside itself) and couchside allow-launchers on (let the app create launchers, not just run them). Full detail — and why each grant is shaped the way it is — is in the README on GitHub →