Skip to main content

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.

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.

How it works

The Heroic runner is built on the same runner-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

ghcr.io/nestrilabs/nestri/runner:nightly-heroic-v3
The image is rebuilt nightly from the dev branch.

Start the Heroic runner

1

Launch the container

Start the Heroic runner on your GPU-equipped machine. Replace YOUR_RELAY_HOST and my-heroic-room with your values.
docker run -d \
  --name nestri-heroic \
  --gpus all \
  -e RELAY_URL="ws://YOUR_RELAY_HOST:8088" \
  -e NESTRI_ROOM="my-heroic-room" \
  -e RESOLUTION="1920x1080" \
  -e FRAMERATE="60" \
  -e VIDEO_CODEC="h264" \
  -e VIDEO_BITRATE="6000" \
  --restart unless-stopped \
  ghcr.io/nestrilabs/nestri/runner:nightly-heroic-v3
Pass --gpus all (NVIDIA) or the equivalent device flags for AMD/Intel. The container needs direct GPU access for hardware-accelerated encoding.
2

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.
3

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.
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.
4

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/).
5

Launch and stream

Click Play in Heroic. Heroic starts the game through Wine or Proton and the stream appears in your browser.

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:
RuntimeBest for
Proton-GE (GloriousEggroll)Most Windows games — broadest patch coverage
Wine-GEGames that run better with Wine than Proton
System WineAdvanced use; requires Wine installed in the container
Proton-GE often works better than stock Proton for Epic and GOG titles because it includes patches that Valve has not yet merged. Install it from the Heroic Wine manager inside the running container.

Persisting game data

By default, installed games are lost when the container is removed. Mount a host directory to keep game data:
docker run -d \
  --name nestri-heroic \
  --gpus all \
  -v /path/to/heroic-data:/home/nestri/.local/share/heroic \
  -v /path/to/game-installs:/home/nestri/Games \
  -e RELAY_URL="ws://YOUR_RELAY_HOST:8088" \
  -e NESTRI_ROOM="my-heroic-room" \
  ghcr.io/nestrilabs/nestri/runner:nightly-heroic-v3
Mount path inside containerPurpose
/home/nestri/.local/share/heroicHeroic config, Wine prefixes, runtime downloads
/home/nestri/GamesInstalled game files

Environment variables

VariableDefaultDescription
RELAY_URL(required)WebSocket URL of your relay node
NESTRI_ROOM(required)Unique room identifier for this session
NESTRI_LAUNCH_CMDheroicCommand used to launch Heroic
RESOLUTION1280x720Stream resolution (WxH)
FRAMERATE60Stream framerate (5–240)
VIDEO_CODECh264Video codec (h264, h265, av1)
VIDEO_BITRATE6000Target bitrate in kbps
GPU_VENDOR(auto)Select GPU by vendor (nvidia, amd, intel)
GPU_INDEX(auto)Select GPU by index

Troubleshooting

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.
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.
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.
Check that all supervisor-managed services are running:
docker exec nestri-heroic supervisorctl status
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.

Build docs developers (and LLMs) love