Things I've built along the way
The journey isn't only chat windows โ it's what I make with it. All of these demos have been created in just a few hours, so they're only scratching the surface of the art of the possible โ the models do a lot of the heavy lifting, and I keep the whole thing at the desk.
Lucky 7 โ Fruit Machine (v2)
A three-reel one-armed bandit that runs from a single HTML file. The whole cabinet is hand-drawn in CSS โ marquee, bulbs, LCD, reel windows โ with bets, credits, paylines, jackpots, sound, and a persisted high score. It ships as a PWA: add it to your home screen and it's a cabinet in your pocket, fully offline.
โถ LIVE DEMOWhere local AI came in: the reel choreography, cabinet styling, and paytable logic were iterated with local models. The single-file constraint is a genuine advantage here โ the entire project fits in one model's context, so it can always see what it's changing.
Retail POS
A point of sale in a single file, built for a tablet at the counter: product grid with instant search, current sale with VAT and discounts, cash and card settlement, receipts, product management, daily sales roll-up, and shop settings โ all touch-optimised, all offline-first, no backend, no cloud, nothing to phone home to.
โถ LIVE DEMOWhere local AI came in: a tight iterate loop โ the model drafts or fixes a view, I run it on the tablet, I describe what I saw, it adjusts. Dozens of fast, cheap, private rounds. The part I like most: prompts containing real product names, prices, and sales behaviour never left the counter.
Neon Snake
The journey continues, and I'll keep pasting my/our creations here. Local AI is so empowering, and I feel I'm only limited by my imagination… and time! This one took a couple of hours to create, exploring the abilities of local AI. A retro snake on a glowing neon grid — canvas-drawn, arrow keys or touch, ever-faster with every bite, best score saved on the device. One file, fully offline. (The iOS app I teased about is still to come!)
โถ LIVE DEMOWhere local AI came in: the same single-file trick as Lucky 7 — the whole game fits in one context window, so the feel could be iterated (glow, speed curve, controls) in a couple of hours of back-and-forth with a local model.
Luna Lander
A classic guided descent, rebuilt from scratch: canvas physics with gravity, rotation, and one tank of fuel over procedurally generated lunar terrain. Touch down on the green pad — too fast, too tilted, or off the pad, and the game craters the surface where you hit. Each level raises gravity and shrinks the pad; leftover fuel becomes score, the best is kept on the device, and there are on-screen pads for touch. Exhaust plumes, a glowing Earth, and the occasional shooting star for atmosphere. One file, fully offline.
โถ LIVE DEMOWhere local AI came in: same single-file sweet spot as the others — the whole game fits in one context window. The fun was in the feel loop: I describe what I saw (“crashes feel abrupt”, “the pad is too easy”, “add a shooting star, but not too often”), the model adjusts gravity, fuel burn, and tolerances, I play again.
Booster Breakout
The other arcade classic, rebuilt: a 5×11 grid of neon bricks, a paddle on mouse or arrow keys, and real collision physics — where the ball meets the paddle changes its angle. The twist is the boosters hiding in the wall: a growing paddle, a three-way multi-ball, a turtle slow, an extra life… or the dreaded shrinking paddle. Ball speed climbs every level, smashed bricks throw particle bursts, and the screen shakes when it hurts. Three lives, one file, fully offline.
โถ LIVE DEMOWhere local AI came in: the paddle-angle physics and the power-up balance were the long tail — rounds of “the turtle is too strong” and “the shrink should actually hurt”, each one a tiny tweak a local model makes in seconds while I test in the browser.
Space Invaders
The 1978 original, rebuilt faithfully: pixel-art invaders marching down the screen to the four-note step, erodable bunkers that chip away shot by shot, and the mystery UFO whistling overhead for a random 50–300 bonus. Waves get faster as they go, every kill throws a particle burst with a score popup, and your high score sticks in the browser between visits. Arrows or A/D to move, space to fire, P pauses, M mutes the 8-bit sound — one file, fully offline, audio synthesized live.
โถ LIVE DEMOWhere local AI came in: matching the original feel was the whole job — the invader step, the drop, the UFO whistle, the bunker erosion, each tuned to the reference until it felt like the arcade cabinet, a few lines at a time.
Quick IQ Challenge
A 20-question timed reasoning quiz in one file: number sequences, verbal and logical reasoning, arithmetic, pattern matrices, mental rotation, and working memory. Every question has a difficulty rating and its own countdown ring, and speed counts — fast correct answers earn a bonus. At the end it does real statistics: a z-score against a normal distribution, converted to an IQ-style number with a percentile and per-section strengths, all in the browser. (Fun and self-scored — not an actual psychometric test.)
โถ LIVE DEMOWhere local AI came in: the interesting part wasn't the interface — it was the scoring. Difficulty-weighted expectations, a hand-rolled normal distribution, the z-to-IQ conversion: a small pile of statistics iterated until the numbers behaved, exactly the kind of mathy work local models are good at.
๐ What these have taught me about building with local models
Keep the whole thing in context
Single-file apps are a feature, not a shortcut. A local model that can see the entire project makes better changes than a cloud model that only sees a pasted fragment.
The verification loop is yours
Run it, look at it, tell the model what actually happened โ in words or a screenshot. That loop is as fast locally as in the cloud, with none of the data leaving.
Offline-first is the local-native style
No API keys, no billing, no dead zones. If the app works with the wifi off, it belongs in the local column of the ledger.