Skip to content

Repository files navigation

🎮 StreamTweak

Platform Framework Downloads Built with Claude Code

Immagine 2026-08-08 115135

StreamTweak is the host half of the FoggyBytes streaming duo. It takes care of the setup that makes game streaming reliable — the network link, spatial audio, HDR, the game library, the NVIDIA driver profile — and keeps a record of how every session actually went.

Paired with its companion client StreamLight the two work as one: the client asks for the link speed it needs, the host reports what is happening to a launch, and telemetry, store metadata, Tailscale presence and remote power and update controls travel between them over a local TCP bridge.

Immagine 2026-09-18 222853

✅ Compatibility

Windows 10 21H2 and later, alongside Sunshine, Apollo, Vibeshine or Vibepollo.

Everything host-side works on its own. The paired features need StreamLight on the client, and the newest of them — client-driven link speed, the launch report, the shared session card and the PIN pad — need StreamLight 5.0.0 or later. Older clients keep the rest of the integration and simply never ask for what they don't know about.

🔐 The bridge is authenticated. It accepts commands only from StreamLight devices you have approved: a one-time prompt shows a 4-digit PIN to confirm against the one on the device, and every command afterwards is signed with that client's Moonlight certificate. Streaming is never gated by it — approval only unlocks the paired features. Approve clients under Clients in the sidebar.

⚠️ Installer warning: Windows SmartScreen may flag the installer because it lacks a commercial code-signing certificate. Choose Keep / Keep anyway. Full source is in this repository.

🔥 Features

Everything below is in the current release, whichever version first introduced it.

🌐 Network

  • Link-speed switch — the client reads its own wired link and asks the host to match it before connecting; the stream starts once the change is confirmed. This is what fixes the packet loss and latency spikes caused by host and client NICs negotiating at different speeds — a 2.5 Gbps host feeding a 1 Gbps handheld sends each frame as a burst the slower link cannot drain, and the few packets carrying audio die first
  • You stay in control of your hardware — one permission switch decides whether clients may touch the adapter at all, the link is never changed while a session is running, and a manual restore is one click away. The host holds the speed until it is asked to put it back, so the gap between two games costs nothing
  • Wired only — Ethernet adapters that expose a speed setting, nothing else. Wi-Fi has no fixed link speed to match, and a request arriving over Wi-Fi or Tailscale is refused
  • No UAC, ever — a LocalSystem service performs the adapter changes over a named pipe
  • Tailscale detection — the host's Tailscale IP is shown with a copy button, and the client tracks it on the host's tile for streaming from outside the LAN with no port forwarding

🎬 Launch and lock state

  • The host reports the launch — StreamTweak follows the game the streaming server was asked to open and reports whether it is still starting, has a window, is on screen, or is waiting for a click, so the client can cover the wait with its own screen instead of showing a desktop mid-reconfiguration
  • Launcher-aware — a store client asking for a login is reported as needing attention, while a launcher that simply starts the game and steps aside is not: the check is whether the game's own process has appeared, because watching windows alone cannot tell the two apart. A window already open when the launch began is never mistaken for a prompt
  • The host says whether it is locked — so a client that has just woken it can offer a PIN pad instead of leaving you with a host that answers pings and does nothing else. StreamTweak types nothing and unlocks nothing itself: the PIN travels on the streaming connection, the same path as any other keystroke
  • The unlock is kept out of your history — the brief session that carries the PIN is not recorded, switches on no spatial audio, closes no managed apps and credits no game

🖥️ Display and audio

  • HDR and Auto HDR toggles per monitor, without opening Windows Settings
  • Auto spatial audio — Dolby Atmos for Headphones or Windows Sonic activated shortly after a session starts, on the output device of your choice, with live per-device availability shown before you commit

🛡️ NVIDIA Sentinel (NVIDIA GPUs only)

  • Profile snapshot — capture the NVIDIA global driver profile to a .nip file, restore it, or clear it. The header shows the driver package, version and release date
  • Auto-restore — armed, StreamTweak watches the driver settings database and silently re-applies your saved profile within seconds whenever NVIDIA App resets it, logging every restore
  • Readable settings panel — each customised setting with its NVIDIA label, and the real installed DLSS SR / RR / FG versions
  • No external dependency — a native port of NVIDIA Profile Inspector's DRS layer (MIT, © Orbmu2k), decrypter included, so encrypted "internal" settings are captured and restored correctly

🎮 Game library sync

  • Multi-store discovery — Steam, Epic Games, GOG, Ubisoft Connect, Xbox / Game Pass, EA App and Battle.net, synced into the streaming server's app list without touching entries you created by hand
  • Native cover art — fetched from each store and cached as PNG. A cover has to be full size to be accepted, so the search carries on past the small thumbnail a launcher keeps for its own grid, and a cover already downloaded is never replaced by a smaller one
  • Each store launched the way it expects — Steam and Epic through their launcher's own protocol, Xbox through the UWP shell, Battle.net through its client. Most Epic games cannot be started from their executable at all: the entitlement tokens arrive on the command line from the launcher
  • Manual entries — add any executable that was not detected, remove single entries, and keep them across re-syncs
  • Host tile replacement — swap the streaming server's Desktop and Steam tiles for bundled artwork, reversibly and with no UAC. They stay replaced: a server update reinstalls its own, and StreamTweak puts yours back

🗂️ Streaming app manager

  • Apps to close when a session starts and reopen when it ends — Hue Sync, RGB suites, anything that fights with the client — with a per-app switch to exclude one without removing it

📋 Sessions and telemetry

  • Full session log — every session with duration, RTT, drop rate, and the games it played with their covers. Optionally, sessions that never launched a game are discarded rather than recorded
  • Quality report — open any session for CLIENT and HOST stats, charts for RTT, host frame latency, drops, bitrate, decode latency and host compute, and a grade of Excellent / Good / Poor
  • Compare two sessions side by side, with per-metric deltas and both runs overlaid on every chart
  • Dashboard — one layout in both states, where only the top-left box changes: at rest a live host monitor (GPU temperature and load, VRAM, CPU, network, once a second), while streaming the live session. Around it, the last session with its games, a performance trend over the period you choose, and the host setup alongside your paired clients

🔗 Paired Features (with StreamLight)

These cross the bridge and need both apps. The version shown is the minimum StreamLight on the client.

  • Client-driven link speed (5.0.0+) — the client reads the adapter over NETINFO, asks for a matching speed with SETSPEED, and waits for the host to confirm before launching. The host keeps the permission, the safety guards and the restore
  • Launch state (5.0.0+)GAMESTATE reports what is happening to the game the server was asked to open, so the client can hold its own launch screen up until the game is really there
  • Remote PIN unlock (5.0.0+)LOCKSTATE tells a client that has just woken the host whether it came up at the lock screen, and the client offers a PIN pad. The session carrying the PIN is declared as such and kept out of the history
  • Last session on the client's home screen (5.0.0 – 5.6.1)LASTSESSION serves the host's most recent finished session with thumbnail cover art. ⚠️ StreamLight stopped asking for it in 5.7.0, where that card became the game you last played, kept by the client itself and working against a plain Sunshine host. Nothing was removed from the bridge — the verb is still served, and an older client still gets its answer. The reason it was replaced is the sentence that always followed it here: it is the host's last session, and StreamTweak keeps no record of which client a session belonged to
  • Host metrics in the overlay (1.2.0+) — GPU %, encoder %, GPU temperature, VRAM, CPU and network TX, over STATS
  • Store badges on covers (2.0.0+) — the per-game store map, over APPSTORES
  • Session quality reports and live charts (2.1.0+) — client telemetry every second; StreamTweak computes the grade and draws the charts
  • Delivered vs target bitrate (4.5.0+) — the client reports the rate it was told to aim for, so the Dashboard can show what was actually delivered against it
  • Remote session pause (2.3.0+) — the Pause button on the Dashboard ends the stream client-side
  • Remote host power-off (3.2.0+) — an approved client can shut down the host, itself, or both. Destructive, so it only ever fires on a verified signature
  • Remote sleep and restart (6.2.0+) — the host reports the power options it really has, and the client offers only those
  • Remote Windows Update (3.3.0+) — scan, classify and install updates on the host and reboot it, or install them as part of a shutdown, all from the client with no keyboard on the host. The privileged work runs in the LocalSystem service
  • Tailscale presence (3.0.0+) — the host's 100.x.y.z address is offered over TAILSCALE, and the client tracks it on the host's single tile alongside the LAN address

✨ What's New in 8.6.0 — "The Good Night Update"

  • Sleep and restart from StreamLight — StreamLight 6.2.0 can put the host to sleep or restart it, not only shut it down, with Windows updates installed first where Windows allows it
  • Only what the host can really do — the host reports its own power options, read from the machine: standby (classic or Modern Standby), nothing for an account without the right to shut the PC down. It also reports whether its network adapter is set to wake the PC
  • The link comes back before sleep — the host restores its link speed before sleeping, since a PC that wakes from sleep does not start again and would stay at the streaming speed
  • ⚠️ Older StreamLight versions keep shutting the host down exactly as before

Older releases are in changelog.txt.

🏗️ Architecture

Three components:

  • StreamTweakUI.exe — the WinUI 3 tray app, unprivileged, on Windows App SDK 2.4
  • StreamTweak.Core — shared logic: NIC control, audio, HDR, game library, telemetry, NVIDIA Sentinel, Tailscale detection, the TCP bridge
  • StreamTweakService.exe — a LocalSystem Windows Service reached over a named pipe, which performs the NIC changes, host-asset writes and Windows Update work, so no UAC prompt ever appears

The bridge is a TCP listener on port 47998 (LAN, line-delimited ASCII). Commands accepted from StreamLight: NETINFO, SETSPEED, RESTORE, STATUS, STATS, APPSTORES, TAILSCALE, SESSIONDATA, GAMESTATE, LASTSESSION, LOCKSTATE, UNLOCKBEGIN / UNLOCKEND, and the power and update set POWERCAPS, POWER, SHUTDOWN, SHUTDOWN_UPDATE, UPDATESTATE, UPDATECHECK, UPDATE_NOW, UPDATEPROGRESS. A client negotiates with CAPS, enrolls its Moonlight certificate once with ENROLL, and signs every command afterwards with AUTH1 (RSA-SHA256). Destructive commands additionally require a verified signature.

StreamLight (Qt, client PC)
    │  TCP port 47998
    ▼
StreamTweak (WinUI 3, host PC)  →  Named Pipe  →  StreamTweakService (LocalSystem)
                                                           │
                                                           ▼
                                                NIC speed via CIM/WMI
                                                Host assets via filesystem
                                                Windows Update via WUA

📝 Installation

Download the latest installer from the Releases page and run it.

It registers StreamTweakService as a LocalSystem Windows Service, which is what keeps NIC and host-asset operations free of UAC prompts. The Windows App SDK 2.4 runtime is fetched only if missing, and installs alongside any older 1.x runtime, so upgrading from 7.x needs no uninstall.

🙏 Support the Project

Donate with PayPal

🤝 Acknowledgements

  • StreamLight — the companion client, designed in lockstep with StreamTweak
  • Moonlight — the open-source streaming client that inspired this project
  • Sunshine — the streaming host that started it all
  • Apollo — community-driven Sunshine fork
  • Vibeshine and Vibepollo — fully supported
  • NVIDIA Profile Inspector by Orbmu2k (MIT) — its DRS layer and setting catalog were ported natively to power NVIDIA Sentinel

License

License: GPL v3

Releases

Packages

Used by

Contributors

Languages