This is a game streaming and remote desktop tool for Linux, featuring:
- Headless, offscreen, multitenant rendering
- No system dependencies; no desktop environment, dummy plug, docker, pipewire, etc required
- Native linux containerization for running apps (the equivalent of unshare(1))
- Up to 4k streaming (with support for 10-bit HDR in progres)
- Very low latency (about 1 frame, plus network)
- Local cursor rendering
- Client support for macOS
Warning
Alpha software! Please submit any issues you encounter. Run the server with --bug-report
to generate detailed logs and record videos to attach to your report.
Grab the latest release (link above), and run it on a server with a GPU:
$ cat > steam-bigpicture.toml <<EOF
command = ["steam", "-gamepadui"]
xwayland = true
EOF
$ ./mmserver --bind "<your local ip>:9599" -i steam-bigpicture.toml
You can replace steam with your app of choice, or even a full nested desktop environment like Sway.
And then on the client (after installing ffmpeg
):
$ ./mmclient "<ip>:9599" steam-bigpicture --codec h265 --resolution 1080
This will work over the local network, or a private IP space like Tailscale. To serve over the public internet, TLS is required. See mmserver.default.toml for more detail on that and other configuration options.
For instructions on building the server and/or client yourself, see BUILD.md.
The following is required to run the server:
- Linux 6.x (for Ubuntu, this means Mantic or Noble)
- (For AMD/Intel cards) Mesa 24.1.x or later
- (For NVIDIA cards) Vulkan drivers version 550 or later
- XWayland (for X11 apps)
The following is required to run the client:
- Ffmpeg 6.x
Hardware encoding, based on Vulkan Video, is needed to get the best performance and latency. CPU-based encode is available as a fallback, but it's much slower.
To see if your GPU supports video encoding, see the following matrix for your vendor: AMD • NVIDIA
Note that with the ffmpeg
feature, linking against a system-installed ffmpeg
is supported, which may allow you to use specific CPU-based codecs not considered in this table.
Codec | CPU | AMD | NVIDIA | Intel1 |
---|---|---|---|---|
H.264 | ❌ | ✔️ | ✔️ | ❔ |
H.265 | ✔️ | ✔️ | ✔️ | ❔ |
AV1 | ✔️ | ❌ | ❌ | ❌ |
Footnotes
-
I don't have an Intel GPU available to test, and it's difficult to find information online about driver/card support for hardware encode. Please let me know how it goes! ↩