local model devlog

Solved locally.
No cloud ever touched.

Four game-playing AIs — a maze solver, a minesweeper solver, a 2048 player, and a Wumpus hunter — hand-written by Cline, an agent running entirely against a self-hosted Qwen3.6-27B-NVFP4 instance in Docker, on the desktop sitting right here. No rented box, no API key.

scroll

the rig

Everything ran on one box.

No OpenAI key, no Anthropic API. Cline talked to a vLLM server in Docker on this desktop's own GPU — every fix, commit, and deploy below came out of that one loop.

Model
nvidia/Qwen3.6-27B-NVFP4
Runtime
vllm-openai · docker
Container
naughty_noether · :8000
Agent
Cline · VS Code
Deploy
git push → scp → geert.dhoine.be
Docker Desktop showing the naughty_noether container running vllm-openai at 101% CPU on port 8000
naughty_noether — vllm-openai, 101% cpu, port 8000
Raw request/response traffic captured by the logging proxy sitting in front of the model, mid skull-emoji fix and Monte Carlo bump
vllm_logging_proxy's raw capture — skull-emoji fix, Monte Carlo 500→2000
Cline in VS Code tracing through the AI's own step log to figure out why it wouldn't take a clear shot at the Wumpus
Cline, tracing step-by-step why the shot didn't fire
hover to preview, click to expand

expectimax

2048

Plays every move by branching out a few turns deep — its own choice of direction, then every place the next random tile could land — and takes whichever branch survives longest on average. It took eight rewrites of the heuristic to get here, each one benchmarked headless across thousands of games before it was allowed anywhere near the browser.

reached 4096 · score 50,976 · heuristic v8 try it yourself
hover to preview, click to expand

a* search

Maze Solver

Generates a fresh 25×25 maze and threads it with A*, weighing distance-to-goal against ground already covered.

244 cells explored · 47-step solution try it yourself
hover to preview, click to expand

constraint satisfaction

Minesweeper AI

"Should be easy," went the original request. It isn't — Minesweeper needs pure logic for the certain cells and probability for the ambiguous ones. This one reads every numbered tile as a constraint, flags what's provably a mine, and only reaches for 2,000-sample Monte Carlo when the board runs out of certainty and a guess is unavoidable.

16×16 board · 40 mines · cleared try it yourself
hover to preview, click to expand

logical inference

Hunt the Wumpus

Reasons over smell and draft clues to rule out pits and the Wumpus one cell at a time, and once it can pinpoint the Wumpus in its line of sight, it takes the shot. Tested honestly across 500 simulated runs rather than just the one good take shown here — most of the losses are pits it had no way to see coming, not bad judgment.

317/500 wins (63.4%) · 82 arrows fired · 10-move win shown try it yourself