UKKO
Browser-based computer-vision game engine — your body is the controller, video clips are the world.
UKKO is a browser-based game engine where the player's body is the input device. A SvelteKit frontend feeds a Go gateway that talks to a Python MediaPipe + RTMO worker; the worker watches the player's pose in real time and triggers video clip sequences back to the browser. There's no 3D rendering, no controllers — a game is a content pack of clips, transitions, and pose triggers. Being prepared for a fully air-gapped event deployment in May 2026.
- TypeScript
- SvelteKit 2
- Svelte 5
- Tailwind v4
- shadcn-svelte
- Go 1.24
- chi
- SQLite
- sqlc
- goose
- Python 3.12
- FastAPI
- MediaPipe
- RTMO
- Apache
- systemd
UKKO is a browser-based game engine where the body is the controller. The player stands in front of a webcam; a Python MediaPipe + RTMO worker watches their pose in real time; a Go gateway routes detected gestures back to a SvelteKit frontend that responds by sequencing video clips. No 3D rendering, no controllers, no app — a game is a content pack of clips, transitions, and pose-trigger rules.
The "games are content, not code" thesis
Most game engines ship a runtime and a level editor; UKKO flips that — the runtime is the engine plus a clip library plus a small DSL of pose-to-clip rules. New experiences don't ship new builds; they ship a new pack. The bet is that for the target use case (event installs, museum kiosks, brand activations) the bottleneck is rarely "we need a custom engine," it's "we need this whole thing to ship by Friday with different art." UKKO is the version of that loop that lets non-engineers iterate on the experience.
Architecture
- Frontend — SvelteKit 2 + Svelte 5 + Tailwind v4 + shadcn-svelte. Renders the clip player, captures webcam frames, ships them to the gateway, and responds to clip-change events. Built to run as a kiosk full-screen tab.
- Gateway — Go 1.24 with chi for HTTP routing, SQLite (WAL) under sqlc-generated query layer, goose for migrations. Stateful for sessions; a thin translator between the browser and the vision worker.
- Vision worker — Python 3.12 + FastAPI wrapping MediaPipe + RTMO models. Consumes frame batches, emits pose events; can be scaled separately from the gateway since it's the only GPU-hungry piece.
- Deploy — systemd services behind Apache with Let's Encrypt SSL on the public install. No Docker in production; the offline kit (see below) is rsync-able directly to a USB stick.
Offline-first by design
UKKO is being prepared for a fully air-gapped event deployment
in May 2026. The repo carries a
just offline-kit recipe that produces a single
USB-portable artifact bundle: pre-built binaries, the
SvelteKit static export, the Python worker with cached
weights, all systemd unit files, and the sqlite migrations.
The smoke-test recipe rehearses the full one-command bring-up
on real hardware. The architecture rationale lives in
docs/offline/feasibility-windows.md; the
constraints those binding guardrails enforce live in the
repo's CLAUDE.md.
Why "UKKO"
Ukko is the Finnish god of weather, sky, and thunder — a deity whose business is making things happen at scale by waving his hands. That's the metaphor. The engine doesn't care what the gesture is; it cares that the gesture happened, and that the world responds.
Straight from the source
The project's own README.
Rendered in place — every link, image, and code block carried over from the repo. The page below is what a contributor would see opening the project for the first time.
UKKO
Browser-based computer-vision game engine. Players' body movements trigger video clip sequences -- no 3D rendering, no controllers. Games are content, not code.
Live: ukko.gamingworld.uk
Quick Start
just setup # install deps, create .env, run migrations
just dev # start all services in dev mode
Stack
| Layer | Tech |
|---|---|
| Frontend | SvelteKit 2, Svelte 5, Tailwind v4, shadcn-svelte |
| Gateway | Go 1.24, chi, SQLite (WAL), sqlc, goose |
| Worker | Python 3.12, FastAPI, MediaPipe, RTMO |
| Deploy | systemd, Apache2, Let's Encrypt |
Structure
apps/frontend/ SvelteKit app
apps/gateway/ Go HTTP gateway
apps/worker/ Python vision + AI worker
db/migrations/ goose SQL migrations
db/queries/ sqlc query definitions
deploy/ systemd, Apache, Docker configs
scripts/ deploy, backup, restore scripts
docs/prd/ product requirements
Commands
See just --list for all available recipes.
Documentation
Full product requirements in docs/prd/.
Event / offline deployment
UKKO is being prepared for a fully air-gapped event deployment at Peak Technologies (May 2026). Start at docs/offline/README.md for the one-command workflow (just offline-kit, just offline-kit-smoke), artifact layout, and USB copy commands. Architecture rationale is in docs/offline/feasibility-windows.md; the real-hardware rehearsal checklist is in docs/offline/smoke-test.md. Binding guardrails online development must respect live in CLAUDE.md.
Build something like this
Want a tool like this for your shop?
We've shipped this kind of thing before. Twenty-minute intro call, no slides.