The Steam runner is the primary way to play your existing Steam library through Nestri. It installs Steam inside a Linux container, launches it in Big Picture mode (also called “tenfoot”), and streams the display directly to your browser over WebRTC. Proton Experimental is pre-configured as the default compatibility tool, so most Windows games work without any manual setup.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/nestrilabs/nestri/llms.txt
Use this file to discover all available pages before exploring further.
How it works
The Steam runner container is built on therunner-common base image and adds:
- Steam — installed via the Arch Linux package manager (
pacman) - Proton Experimental — set as the default compatibility tool via
config.vdf, so Windows games run automatically through Wine, DXVK, and VKD3D - Big Picture mode — Steam launches with
steam -tenfoot -cef-force-gpu, which forces the controller-friendly UI required for input to work correctly in the browser
supervisord launches nestri-server alongside Steam. The nestri-server process captures the Wayland display, encodes video using GStreamer and your GPU, and sends the stream to the relay.
Big Picture mode (
-tenfoot) is required. It enables controller input passthrough and provides a UI designed for remote interaction. Desktop mode is not supported in the current runner.Container image
dev branch. No stable tags are published yet — pin to a specific digest if you need reproducibility.
Link your Steam account
Before you can browse your library, you need to connect your Steam account to your Nestri profile. Nestri uses Steam OpenID for authentication — your Steam credentials never pass through Nestri’s servers.Open the Nestri web app
Sign in at nestri.io with your Nestri account.
Authenticate via Steam OpenID
Nestri calls
GET /steam/popup/:id, which redirects you to https://steamcommunity.com/openid/login. Log in with your Steam credentials.After authentication, Steam redirects back to the Nestri API at /steam/callback/:id. Nestri verifies the OpenID response, fetches your Steam profile, and stores the link. The popup closes automatically.Start streaming
Launch the Steam runner container
Start the container on your GPU-equipped machine. Replace
YOUR_RELAY_HOST and my-room with your values.Wait for Steam to sync your library
On first launch, Steam downloads your library metadata and any pending updates. This can take a few minutes depending on your internet connection. You can watch progress in the container logs:
Open the Nestri web app and connect
Go to nestri.io, navigate to your session by room name, and click Play. Steam Big Picture mode appears in your browser.
Proton and compatibility
The Steam config file at~/.local/share/Steam/config/config.vdf inside the container sets Proton Experimental as the global default compatibility tool:
config.vdf
Environment variables
The Steam runner inherits allrunner-common environment variables. The most relevant ones for Steam:
| Variable | Default | Description |
|---|---|---|
RELAY_URL | (required) | WebSocket URL of your relay node |
NESTRI_ROOM | (required) | Unique room identifier for this session |
NESTRI_LAUNCH_CMD | steam -tenfoot -cef-force-gpu | Command used to launch Steam — change with care |
RESOLUTION | 1280x720 | Stream resolution (WxH) |
FRAMERATE | 60 | Stream framerate (5–240) |
VIDEO_CODEC | h264 | Video codec (h264, h265, av1) |
VIDEO_BITRATE | 6000 | Target bitrate in kbps |
GPU_VENDOR | (auto) | Select GPU by vendor (nvidia, amd, intel) |
GPU_INDEX | (auto) | Select GPU by index when multiple GPUs are present |
Troubleshooting
Steam says my account is logged in elsewhere
Steam says my account is logged in elsewhere
Each runner container has its own Steam session. If you launch two containers with the same Steam account simultaneously, Steam will sign one out. Use a separate Steam account per container, or stop one container before starting another.
Games fail to launch or crash immediately
Games fail to launch or crash immediately
Check whether the game is listed as Steam Deck Verified or Playable on ProtonDB. For games rated Borked, no Proton version may work reliably. You can also try switching to a specific Proton version in the game’s Properties → Compatibility settings from within Big Picture mode.
No audio in the stream
No audio in the stream
The runner uses PipeWire with a virtual loopback device. If audio is missing, check that PipeWire and WirePlumber started correctly inside the container:All services should show
RUNNING.Controller input is not working
Controller input is not working
Controller input requires Big Picture mode (
-tenfoot). If you modified NESTRI_LAUNCH_CMD and removed this flag, restore it. Also confirm your browser supports the Gamepad API — Chrome and Edge have the most complete support.Next steps
Heroic Games Launcher
Stream Epic Games Store and GOG titles with the Heroic runner.
Custom runner containers
Build a container for any Linux-compatible application or game.
Streaming server configuration
Tune GPU selection, encoding parameters, and bitrate settings.
Self-hosting overview
Full hardware requirements and deployment guide.