PotemkinOS: An Operating System Where the Model Writes the Userland Signalnine released PotemkinOS, an MIT-licensed Linux image with no userland — no /bin, shell, coreutils or package manager — in which a local model writes the userland from a prompt using eight tools (read, write, stat, spawn, wait, compile, snapshot, fetch). On an RTX 5090 running Qwen3.8-27B, the model planned for six minutes and wrote a shell plus ls, cat and rm on first boot of an empty disk; Bonsai 2 27B hit the 65K-token cap and wrote nothing until given an 8K think budget, when it produced a working shell in under two minutes. Three VMs running Qwen3.8-27B were told to form a Kubernetes cluster using only programs they wrote, generating 5.7 million tokens and 190 programs over eight and a half hours. Gentoo made you compile everything from source on first install. PotemkinOS makes the model write the source first. It’s a Linux image with no userland. No /bin , no shell, no coreutils, no package manager. There’s a kernel, an inference engine q27 https://github.com/signalnine/q27 , a C compiler, and a prompt. You boot into a chat with a local model, ask for what you want, and it writes a facade of a userland in front of you. Every install is a different village. Code is at github.com/signalnine/potemkin https://github.com/signalnine/potemkin , MIT. That’s Qwen3.8-27B on an RTX 5090, first boot of an empty disk, 17 minutes played back at 5x with the thinking at 60x. I asked for a shell. Before handing over the console it also wrote ptytest , procscan and fdscan to debug its own shell. The rules The model gets eight tools and nothing else: read , write , stat , spawn , wait , compile , snapshot , and fetch netboot only . There’s no bash tool. Give the model bash and you’ve built Claude Code with a boot splash: Unix stays the real environment and the model just drives it. Take bash away and the model has to invent the userland, which is the whole bit. If it wants ps , it reads /proc and writes ps . That also rules out using any existing coding agent as the harness. Every one of them is a wrapper around a POSIX shell. Pointed at this box, their first move is ls -la and their second is routing around the missing shell instead of writing one. Most of them are also Node, which would make them the largest human-written thing in the image. The harness is q27-init , a C++ binary that runs the inference engine in-process, owns the console, and runs the tool loop. compile is content-addressed: tcc with musl, output lands in /store/sha256: