Work ukko
library

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.

Last updateApr 26, 2026 PrimarySvelte
  • 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 — 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 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.