source 

Your key is the address. Plug in, tap, play.

no macos arm64 build yet

portal for macos/arm64 is not released yet · macos arm64 comes first · release history

Games over QUIC: one-to-one SteamOS streaming over iroh
Work in progress. Not a finished product.

why goq

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

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

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

  4. Audio included

    PipeWire capture to Opus in bounded datagrams, played back through an AudioWorklet next to the WebCodecs picture.

  5. Bounded everything

    Frame handoff capped at four, decode queue at two, every buffer bounded. Stale frames are dropped, not queued, so latency never drifts.

  6. One host, one client

    A single active client, enforced, over an end-to-end encrypted iroh link, relay-assisted when a direct path isn't possible. No third-party streaming service.

hardening next

The first target stays deliberately narrow: hardware H.264 at 1280×800/60. These are the promoted steps from a proven stream to one that adapts without accumulating latency.

  1. promoted · transport

    Iroh/MoQ media objects

    Prioritized, cancellable video objects with explicit GOP boundaries and keyframe recovery. Input remains independent.

  2. promoted · control

    Adaptive bitrate

    Feed RTT, loss, backpressure, and decode backlog into a bounded controller with measured recovery and no queue growth.

  3. promoted · motion

    Motion-sensitive resolution

    Favor fresh, smooth motion at lower resolution, then restore detail after motion settles without breaking pointer mapping.

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

sigil · bare-metal linux
  1. Steam and your game
  2. headless Gamescope session
  3. PipeWire video + audio capture
  4. hardware H.264 + Opus encode
gamepad + kb/m injected via uinput
portal · native app
  1. native iroh endpoint
  2. WebCodecs + AudioWorklet
  3. picture and sound appear
  4. controller, keyboard, mouse
any machine, near or far

three taps to steam

  1. provision sigil

    Run the Sigil setup command on a dedicated AMD Bazzite machine. It accepts only signed runtime packages; Gamescope becomes the headless display.

  2. open portal

    Download a signed Portal build on your client machine. Tap your FIDO2 key; the D-pad PIN pad keeps onboarding couch-friendly.

  3. 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 signed Portal release targets macOS; other client packages remain source builds until they receive an equally strict release path. Runbook and source →