ContactBook a call
HomeServicesProcessProductsIndustriesAboutContact
Book a discovery call
Cloud gaming · Distributed · GPU

Real 3D games, streamed to a browser tab in under two seconds.

Every session is a full Unreal Engine build running on a GPU in our cluster. Pixel Streaming sends each frame to the player over WebRTC and carries their keyboard, mouse and touch back the same way. Nothing to install, no plugin, and the player never learns which machine they landed on.

PEAK CONCURRENT PLAYERS
12
P99 CONTROL PLANE
210ms
GPU POOL
6 nodes
SESSIONS LAUNCHED
4,800
● THE PROBLEM

What we walked into.

The client had one Unreal Engine experience, on one GPU, for one player at a time. It took 30 seconds to start, and every session exposed the address of the machine behind it. Then a sales pilot sent 1,200 prospects in at once, and on day three the whole thing fell over.

GOALS WE COMMITTED TO
  • One link for everyone, with the machine behind each session kept private
  • Pixels on screen in under two seconds from a warm pool, and under twelve from cold
  • Every session reachable only by the person it belongs to
  • Enough visibility to follow a single frozen frame through five services
● THE SOLUTION

What we shipped.

  • 01A Go orchestrator that runs the GPU pool. It leases a warm Unreal instance to each new player, holds the lease in Redis, and takes the machine back the moment they leave.
  • 02Unreal Pixel Streaming on every GPU node, so a thin laptop or a phone plays like a workstation. The heavy rendering never leaves the data centre.
  • 03Kong at the front door, handling mTLS, checking tokens and keeping each tenant inside its own rate limits.
  • 04Laravel for sign in and permissions, NestJS for the session lifecycle, and RabbitMQ carrying events between them.
  • 05Fluent Bit gathering logs from every node into Loki, linked by trace ID to metrics in Prometheus and traces in Tempo.
Architecture

The full topology, at a glance.

UE-PIXEL-STREAM · ARCHITECTURELIVE
EDGE / CLIENTCONTROL PLANESTREAM ORCHESTRATIONOBSERVABILITY📱Player BrowserWebRTC client🎮Game LobbyReact + Vite🛠Admin ConsoleVue 3⏺Studio Uploadmultipart · S3 sigv4≡CDN · Edge Locations3 regions · 12ms p50◆Kong API GatewayJWT · rate-limit · circuit-breakAAuth Servicelaravel · sso · rbacSSession Servicenestjs · redis leaseUUpload Servicelaravel · ffmpegBBillingstripe · webhooks◈Stream Orchestratorgolang · grpcpoolscheduleleaseevict≋RabbitMQexchanges · DLQ · 300 msg/s◉Redis Clustersessions · backpressure∞Fluent Bitlog shipper · 50msPPostgres HAprimary + 2 replicas▣UE Instance Pool Aus-east · 3× g4dn.xlarge▣UE Instance Pool Beu-west · 2× g4dn▣UE Instance Pool Cap-south · 1× g4dnKKubernetesHPA + custom KEDA◢Grafana6 dashboards◷Prometheus15s scrape◑Loki120k lines/day◓TempoOTel traces◔PagerDutySLO burn
Microservices

The services we shipped.

stream-orchestratorGo

GPU pool, leases, evictions

auth-svcLaravel

SSO, RBAC, JWT

session-svcNestJS

session lifecycle, limits

upload-svcLaravel

build ingest, transcoding

log-svcNestJS

RabbitMQ → Loki bridge

billing-svcNode

metered minutes, Stripe