Local Minds — my local AI journey
The build bench

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.

vanilla JSsingle filePWAgame100% offline
โ–ถ  LIVE DEMO

Where 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.

What it taught me: single-file projects are the sweet spot for local models โ€” whole-app context, one artefact, instant reload.
๐Ÿงพ

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.

vanilla JSsingle fileoffline-firstcommerce
โ–ถ  LIVE DEMO

Where 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.

What it taught me: for business-shaped software, privacy isn't a feature you bolt on โ€” build it on local models and it's the architecture.
๐Ÿ

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!)

vanilla JSsingle filecanvasgame100% offline
โ–ถ  LIVE DEMO

Where 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.

What it taught me: the cost of an experiment is collapsing — a weekend idea, zero cloud, and something that actually ships. The barrier is now imagination (and time).
๐ŸŒ™

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.

vanilla JSsingle filecanvasgame100% offline
โ–ถ  LIVE DEMO

Where 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.

What it taught me: game feel is a conversation, not a spec — a few rounds of “try that, tell me what changed” beats one long prompt.
โšก

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.

vanilla JSsingle filecanvasgame100% offline
โ–ถ  LIVE DEMO

Where 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.

What it taught me: balance is a dial, not a number — game tuning can only be done by playing, and local models turn “it feels off” into a concrete change in seconds.
๐Ÿ‘พ

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.

vanilla JSsingle filecanvasgame100% offline
โ–ถ  LIVE DEMO

Where 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.

What it taught me: classics are pre-tuned — when the reference is a 50-year-old arcade game, the model's job is faithful recreation, not invention. It can match an existing feel exactly, which is its own kind of magic.
๐Ÿง 

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.)

vanilla JSsingle filequizstatistics100% offline
โ–ถ  LIVE DEMO

Where 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 it taught me: local models aren't just UI glue — give them the maths (a CDF, a z-score) and they'll do it too. The limit is your ability to verify the math, not write it.

๐Ÿ“ 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.

More builds are coming. If a project here needs a live link or a demo, it'll get one โ€” and if you have a single-file idea that should be on the bench, that's exactly what this section is for.