Live · olympia.orph.dev

Four games. One edge runtime. Live, right now.

Chess, pool, poker, and snake — running entirely on Cloudflare Workers, served from the nearest 300-city POP. No install, no signup, no warm-up. Click, play.

p99 latency
14ms edge
cold start
0ms workers
pop count
335 global
bundle
38kb gz
Live olympia.orph.dev/chess
click a tile to switch
Chess
@olympia/chess
Open
02 · Platform

Built on the same edge-native stack as everything else at Orphnet.

01
Edge runtime
Each game serves from the nearest of 335 POPs. No region selection, no warm-up. p99 14ms.
02
Shared kernel
Identical Phaser scaffolding, identical ORM bindings, identical asset pipeline across all four titles.
03
Type-safe ORM
Match state, move history, leaderboard — all in D1, queried with end-to-end inference.
04
No signup
Anonymous play by default. Add a handle if you want the leaderboard to remember you.
05
Shareable rooms
A URL per match. Friends join with one click, no account, no waiting room.
06
Open source
Every package on npm under @olympia/*. PRs welcome — read the brief first.
Architecture

A Worker, five DOs, two storage layers.

Every game in Olympia is the same shape. The Nuxt UI talks to a Hono Worker. The Worker is a thin shell that hands WebSocket upgrades to one of four per-game Durable Objects. A fifth DO runs matchmaking. D1 owns rooms and sessions. R2 owns replays.

  • Anonymous guest JWT, refreshed silently
  • Six-character room codes, deterministic DO IDs
  • WS hibernation, 30-second reconnect grace
  • Sliding-window rate limits in KV
  • 30-day R2 lifecycle for replays