Ctrl K
ComunidadGuías…
GITHUB · ANALIZADO

gawk

Self-hosted, sub-500ms live game streaming over WebTransport + WebCodecs — join by code, scales horizontally across a Go relay fleet.

Ficha actualizada 22 sept 2026, 18:36 · upstream 22 sept 2026, 18:36 · release gawk-admin/v1.3.0

00

Qué es gawk

Descripción editorial construida a partir del repositorio, su documentación y sus señales de mantenimiento.

gawk is a self-hosted, low-latency live game streaming solution designed for browser-based broadcasting. It enables broadcasters to share their screen and viewers to join via a simple six-character code, achieving sub-500ms latency (approximately 50ms measured on the hardware encode/decode path). The system requires no accounts, plugins, or native applications — it runs entirely in the browser with zero installation overhead.

The architecture consists of two main components: gawk-server, a Go-based relay that handles streaming and pub/sub operations; and gawk-app, a React SPA frontend for broadcasters and viewers. Together they form a complete self-hosted pipeline from capture to playback.

Key design decisions include using QUIC datagrams over WebTransport rather than streams, which ensures dropped frames are never stalled — only lost. The relay acts as a byte forwarder that caches decoder configurations and keyframes so late joiners receive content immediately. A single frozen wire format supports four implementations: Go (source of truth), TypeScript, and two native Linux/Windows broadcasters.

The system is designed for horizontal scaling across a relay fleet, with each pod serving viewers independently. It also includes optional resilience features such as reliable carrier streams, a relay-side DVR buffer, and forward parity for lossy viewer links.

CASOS DE USO
  • Broadcasting live gameplay from a single machine without installing any software
  • Hosting multiplayer games where players join via a simple code instead of accounts
  • Running a private streaming server on a home or small office network
  • Providing low-latency game streaming to remote users with minimal infrastructure
  • Testing and development environments that require zero dependencies
PUNTOS DESTACADOS
  • Sub-500ms latency achieved through WebTransport datagrams + WebCodecs, optimized for dropped frames over stalled playback
  • Join by code eliminates the need for accounts, installs, or native applications — purely browser-based
  • Scales horizontally across a Go relay fleet that can carry hundreds of broadcasts and thousands of concurrent viewers on a single hot stream
  • Native Linux and Windows broadcasters with true GPU hardware encoding (unavailable in browsers)
  • System-level audio and per-application audio support, plus synchronized off a shared clock for precise timing
  • Optional telemetry dashboard and MCP surface for diagnostics, all configurable without breaking the core experience
PRECAUCIONES
  • Requires Docker or Kubernetes to run; no single-binary standalone deployment option exists
  • Relies on Chromium-based browsers as broadcaster clients (Firefox has documented fallbacks but Safari is WebKit-only)
  • Safari on iOS joins via a different playback path using fMP4 and ManagedMediaSource, which may not support all codecs natively
  • The QUIC datagram transport means lost frames are dropped rather than retransmitted — no guaranteed delivery for large payloads
  • Self-signed certificates must be manually managed; there is no built-in certificate authority or automatic renewal mechanism
01

Perfil de infraestructura

Estimación inicial derivada del repositorio y de los servicios detectados.

CPU4 vCPUrecomendación inicial
MEMORIA8 GBRAM estimada
DISCO20 GBalmacenamiento base
COMPLEJIDADhighnivel de operación
02

Despliegue detectado

Qué señales reales de instalación hemos encontrado.

Docker Compose detectado

Run the relay as a Go binary against the same persisted certificate: go run ./cmd/gawk-server -dev-cert -cert-file ../certs/cert.pem -key-file ../certs/key.pem,Use Helm charts for production deployments; chart versions, appVersion, and image tags must always be in lockstep,For local development, use the compose profiles: sim (no screen share), rooms (multi-viewer room), telemetry (diagnostics), app-dev (Vite with HMR),The relay generates a self-signed certificate on first run; subsequent restarts reuse it by reading from certs/ directory,Certificate hashes are embedded in /config.js, so join links survive container restarts and work across incognito profiles,Use the app-dev compose profile over bare npm dev when running in containers to avoid resolving published UDP ports as IPv4 (::1),For ACME-based deployments, use DNS-01 challenge via ./dev/certs.sh with your domain's A record pointin

✓Dockerfile
✓Compose
—One-click
03

Stack y dependencias

Componentes inferidos a partir de manifests, configuración y documentación.

FRAMEWORKS
Next.jsReactNode.jsRust
SERVICIOS
PostgreSQLNATS
BASES DE DATOS
PostgreSQL
PUERTOS
808080885173443321126445822280908443
06

Experiencia real de la comunidad

Ayuda a contrastar la estimación automática con instalaciones reales.

Todavía no hay datos comunitarios para este proyecto.