SteamOS · Bazzite · CachyOS · Steam Deck · Windows (beta)

The remote your gaming PC deserves.

Couchside turns your phone into the remote, controller, and dashboard for your living-room Linux gaming PC: SteamOS, Bazzite, CachyOS, or Steam Deck, with a Windows build in beta. When the TV goes black, Couchside is the screen. Check the vitals, read the logs, restart the display, or pick up a controller. Everything stays on your own network.

Free for a week, then a one-time $4.99 unlock.

One-time purchase · No subscription · No accounts · No ads · $7.99 from Sept 1 · build it yourself if you'd rather

On iPhone and want the newest features first? Join the iOS beta on TestFlight →

● LIVE swipe on the phone to browse · tap to launch

steamdeck.local 7:32 · Game Mode
◀ ▶ browse  ·  A to launch
Launching…
Now playing
BACK in the app to return
Couchside

↑ the actual app, running right here in your browser

Real footage · nothing staged

See it actually drive a TV.

A phone controlling Steam Big Picture on the TV over the local network: the menus, the input modes, the game library, all from the couch. Recorded on a real box.

Drive the menus, switch input modes on the fly.
Browse the cover-art library and launch.
Type into the box from the phone's keyboard.
A phone showing the Couchside gamepad while the TV behind it shows the Steam menu the phone is driving
The gamepad on the phone and the Steam menu it's driving on the TV, in one shot.

Up and running in a minute

Three steps to flight.

No accounts, no cloud sign-up. Install the open-source service on your box, scan the code it prints, done.

The whole thing, one take: paste the command, scan the QR, drive the box. (Terminal sped up; nothing else.)
1

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.

Windows — 10 / 11  (beta) · 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. Read the script first →  ·  or paste it into ChatGPT or Claude and ask what it does. It installs an unprivileged service that can only run an audited allowlist of commands; there is no root daemon.

Either takes about 15 seconds, then shows a PIN (and a QR) and leaves the service running. Re-run any time.

2

Scan for your box, type the PIN

Open Couchside and 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.

3

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 →

Under the hood

What actually talks to what.

Tap a task to watch where the traffic goes. Then pull the internet cable and see what changes. (Spoiler: almost nothing.)

YOUR HOME · WI-FI INTERNET Your phone the Couchside app Gaming PC service · port 8787 TV HDMI App Store · Play unlock check · app updates GitHub service source · installer Couchside cloud doesn't exist · nothing to hack

The app and the service speak plain HTTP with a bearer token, phone to box, on your Wi-Fi. Pick a task above to see exactly what moves where.

Why you'd open it

Three reasons you'd reach for your phone.

Not a feature list — the moments people actually open Couchside.

The TV is black

The box is on, the screen is not, and the controller does nothing. Check whether it's actually alive, read the logs, restart the display — without finding a keyboard or crawling behind the TV. This is the one that made the app exist.

The controller is dead, or across the room

Your phone becomes a real Xbox controller the box can't tell from plastic, plus a trackpad and a keyboard for the moments a controller can't do the job at all — a login box, a launcher update, a wall of small text.

You just want to play something

Your library with its cover art, in your hand. Pick a game and it starts on the TV. No Big Picture menus, no hunting with a D-pad through a grid you can barely read from the sofa.

Everything it does

One app, the whole box.

Vitals, rescue, and input for a living-room gaming PC: the parts you actually reach for from the couch.

Three phone screens side by side: an Actions list with boot-mode and session controls, a Console dashboard showing one box's temperature, load, memory and disks, and a Launch screen listing a Steam library with cover art
Actions, Console and Launch — shot against a real box, not a mockup.

Live dashboard

CPU temperature, load, memory, per-disk usage, uptime, and the health of every background service you watch (systemd on Linux, Windows services), refreshed in real time.

Rescue actions

Restart the frozen display (a wedged gamescope black screen), reboot, or power off. One tap each, grouped by danger, with a double confirm on the destructive ones.

Desktop ⇄ Game Mode

Drop the box into the SteamOS desktop and flip back to Game Mode with a single tap, no keyboard or mouse involved. Or just hold the Guide button on a controller to trigger the handoff, no phone needed (opt-in per box). Make the quick tweak from the couch, then get back to playing.

Virtual controller

The service presents a standard Xbox controller to the box, so Steam and your games see genuine input: sticks, D-pad, ABXY, triggers, haptics. Handy when the real controller is dead or across the room.

Swipe mode

An Apple-TV-remote-style surface: swipe to move, tap to select. The fastest way through Kodi and Big Picture menus from the couch.

Log viewer

Browse recent error logs (journald / Windows Event Log) for any watched service straight from your phone, without an SSH session or squinting at the TV.

PIN pairing

Tap Scan for boxes, then type the PIN the box shows on its screen. No IP addresses and no tokens to copy — the QR the installer prints still works too.

TV & power control

Your TV, over Wi-Fi — no HDMI-CEC required. Point Couchside at a smart TV on your network and you get a real remote: D-pad, OK/Back/Home, power, volume, and the input/SOURCE key, plus an on-screen keyboard for those miserable TV search boxes. Couchside can even find the TVs on your network so you don't hunt for an IP. Works with LG webOS, Roku, Android / Google TV and Hisense; Samsung is in beta. (Smart-TV backends need a Linux box — on Windows, Roku is supported today.)

Your phone's own volume buttons work too, on every control screen. And the box side: volume (a real drag slider on SteamOS) and mute, sleep it and wake it back over the network — one awake box can even wake a sleeping one. HDMI-CEC still works where your box has it, as do commercial RS-232 panels like Newline; no CEC and no smart TV? A spare Raspberry Pi adds it via the one-line Pi CEC bridge installer.

One-time · no subscription, ever

Pay once. Or don't pay at all.

The service on your box, the piece that touches your network, is fully open source (MIT). The app is source-available: read it, or build it onto your own phone for free, for personal use. The one-time price buys the ready-made build from the App Store or Play, kept updated, and it supports the work behind it. Everything's a subscription these days. I hate that, so Couchside isn't one. Try every feature free for 7 days, then unlock it forever, or build it yourself for free. Pick your path:

“I love opening my phone, finding my favorite game, and hitting launch, so by the time I've walked over to my gaming spot it's loaded and ready to go. Once it fits your setup, you'll get it. That's why the unlock is one payment instead of another monthly bill.”
— Taylor, maker of Couchside

$

Try free for 7 days, then unlock once

Download free and use every feature for a full week, no commitment. If it earns a spot in your living room, keep it forever for less than a cup of coffee: $4.99 through August, then $7.99 from September 1. One payment, one time, no accounts. Unlock before September 1 and the app shows a permanent Early Adopter badge. The money funds this project and supports my family. I hope you enjoy it.

</>

Build it yourself, free

The app's full source is on GitHub: read it, compile it onto your own phone with Expo, tweak it for yourself. It's source-available for personal, noncommercial use (PolyForm Noncommercial); the service and installer are MIT, so you can even build your own client. Same software, your labor instead of $4.99. All I ask is that you don't repackage and sell it.

Private by design

Your box. Your network. Nobody else's.

Couchside talks only to the service on your own LAN. There is no cloud in the middle, because there is no cloud at all.

Token auth

A secret key (bearer token) generated on your box and stored in your phone’s keychain. Only a paired phone can talk to the service.

LAN-only

No relay, no telemetry. The phone and the box on the same Wi-Fi, full stop.

Least privilege

The service can run an exact, audited allowlist of commands and nothing else.

Auditable

The service is open source (MIT); the app's source is public too. The whole project is on GitHub if you want to read every line.