why goq
-
Your key is the address
The FIDO2 key's hmac-secret seeds the iroh identity. Host and client derive the same node ID from the same physical key. No pairing codes, no accounts.
-
Headless Sigil host
A pure-Rust daemon on bare-metal Linux, no desktop, no display. Gamescope runs a private SteamOS session; PipeWire feeds a hardware H.264 encoder.
-
Controller-first
A virtual Xbox-style gamepad, keyboard, and relative mouse injected via uinput. D-pad PIN pad and a Back+Start escape chord, built for a couch.
-
Audio included
PipeWire capture to Opus in bounded datagrams, played back through an AudioWorklet next to the WebCodecs picture.
-
Bounded everything
Frame handoff capped at four, decode queue at two, every buffer bounded. Stale frames are dropped, not queued, so latency never drifts.
-
One host, a few viewers
Three viewers by default, eight at most, sharing one encoded stream over end-to-end encrypted iroh links, relay-assisted when a direct path isn't possible. Exactly one holds the controller. No third-party streaming service.
hardening next
The first target stays deliberately narrow: hardware H.264 at 1280×800/60. Bounded Iroh/MoQ media objects have landed: video now rides prioritized, cancellable groups with explicit GOP boundaries and keyframe recovery, and the legacy media tiers and JPEG fallback are gone. One to many viewers has landed as well: one encoded generation now serves up to eight authenticated viewers with a single transferable slot-0 input focus and per-peer revocation, while legacy clients stay strictly exclusive. These are the promoted steps still ahead.
-
promoted · control
Adaptive bitrate
Feed RTT, loss, backpressure, and decode backlog into a bounded controller with measured recovery and no queue growth.
-
promoted · motion
Motion-sensitive resolution
Favor fresh, smooth motion at lower resolution, then restore detail after motion settles without breaking pointer mapping.
-
promoted · codec
Auto Codec
Select from end-to-end hardware support and measured latency. H.264 remains the safe baseline; compression ratio alone never wins.
how it works
- Steam and your game
- headless Gamescope session
- PipeWire video + audio capture
- hardware H.264 + Opus encode
- native iroh endpoint
- WebCodecs + AudioWorklet
- picture and sound appear
- controller, keyboard, mouse
- Paired by your FIDO2 security key: same key, same address. No passwords, no accounts.
- One host, up to eight viewers. Media and input ride separate end-to-end encrypted iroh connections, and only the focus holder's input reaches the host.
- Every queue bounded. Stale frames are dropped, not queued, so it never drifts behind.
three taps to steam
-
provision sigil
Run the Sigil setup command on a dedicated AMD Bazzite machine. It accepts only signed runtime packages; Gamescope becomes the headless display. A controller-first Decky Loader plugin manages the appliance from the couch. First-time pairing still needs a shell on the host.
-
open portal
Download the Portal build for your client machine and verify its published SHA-256. Tap your FIDO2 key; the D-pad PIN pad keeps onboarding couch-friendly.
-
tap to play back+start
Tap the same key anywhere else: SteamOS appears, your controller just works. Hold Back+Start for a second to escape the session.
You'll need a FIDO2 key with hmac-secret support (YubiKey, Google Titan, …) and an AMD Bazzite machine for Sigil. The first Portal release targets macOS arm64. It is ad-hoc signed rather than Apple-notarized, so macOS blocks the first launch until you allow it. Linux and Windows are built and attested every release but are not published; build from source until they pass their own acceptance gate. Runbook and source →