The Heroic runner brings Epic Games Store and GOG support to Nestri. It installs Heroic Games Launcher — an open-source native Linux client for both storefronts — inside a Nestri container. You log in to your Epic or GOG account directly inside the running Heroic UI, install games, and stream them to your browser just like the Steam runner.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 Heroic runner is built on the samerunner-common base image as the Steam runner. It installs heroic-games-launcher-bin via pacman and sets NESTRI_LAUNCH_CMD="heroic" so Heroic opens on container start.
supervisord launches nestri-server alongside Heroic. The server captures the Wayland display, encodes with GStreamer and your GPU, and sends the stream through your relay to the browser.
Heroic handles Windows game compatibility through its built-in Wine and Proton management. You can select a compatibility runtime for each game from within the Heroic UI.
The Heroic runner requires the same GPU passthrough as the Steam runner. Without it the container falls back to software encoding, which is not fast enough for real-time gaming.
Container image
dev branch.
Start the Heroic runner
Launch the container
Start the Heroic runner on your GPU-equipped machine. Replace
YOUR_RELAY_HOST and my-heroic-room with your values.Connect and open Heroic
Go to nestri.io, navigate to your session by room name, and click Play. The Heroic Games Launcher UI appears in your browser.
Log in to Epic Games or GOG
Use the Heroic sign-in screen to authenticate with your Epic Games or GOG account. Heroic opens the Epic or GOG login page inside the app.
- Epic Games
- GOG
Click Log in under the Epic Games section. Heroic opens the Epic authentication page. Enter your Epic credentials and complete any two-factor authentication prompt.
Install a game
Browse your library in Heroic, click a game, and select Install. Heroic downloads the game to the container’s local storage.
Game data is stored inside the container by default. To persist game installs across container restarts, mount a volume to the Heroic library path (typically
/home/nestri/.local/share/heroic/).Wine and Proton compatibility
Heroic manages Wine and Proton runtimes per-game. On first use, Heroic downloads a compatible runtime automatically. You can change the runtime for each game under Game settings → Wine version. Recommended runtimes for most games:| Runtime | Best for |
|---|---|
| Proton-GE (GloriousEggroll) | Most Windows games — broadest patch coverage |
| Wine-GE | Games that run better with Wine than Proton |
| System Wine | Advanced use; requires Wine installed in the container |
Persisting game data
By default, installed games are lost when the container is removed. Mount a host directory to keep game data:| Mount path inside container | Purpose |
|---|---|
/home/nestri/.local/share/heroic | Heroic config, Wine prefixes, runtime downloads |
/home/nestri/Games | Installed game files |
Environment variables
| Variable | Default | Description |
|---|---|---|
RELAY_URL | (required) | WebSocket URL of your relay node |
NESTRI_ROOM | (required) | Unique room identifier for this session |
NESTRI_LAUNCH_CMD | heroic | Command used to launch Heroic |
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 |
Troubleshooting
Epic login page does not load
Epic login page does not load
The Epic login flow opens a web view inside Heroic. If it fails to load, check whether the container has outbound internet access on port 443. Also verify that the
--gpus flag is set correctly — some GPU passthrough errors surface as rendering failures in the web view.Game crashes on launch
Game crashes on launch
Open Game settings → Wine version in Heroic and switch to a different runtime, such as Proton-GE. Many Epic and GOG titles are not tested with the default runtime and need GE patches to work correctly.
Game library is empty after container restart
Game library is empty after container restart
Without a mounted volume, Heroic stores everything inside the container filesystem. Mount
/home/nestri/.local/share/heroic to a host directory so your library, credentials, and Wine prefixes persist across restarts.No audio
No audio
Check that all supervisor-managed services are running:PipeWire and WirePlumber must show
RUNNING. If they are not, inspect the container logs for startup errors.Next steps
Steam integration
Link your Steam account and stream your existing Steam library.
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 reference.