Why I did it
It started with frustration with Windows. I was nostalgic about the Spectrum and the Amiga. Windows felt like it was hiding the bare metal. I had to go with what Microsoft thought was best for me, even though it wasn't.
I obsessively wondered why computers got slower to use while hardware got thousands of times faster. The Motorola 68000 in the Amiga is nothing next to a modern Intel CPU. Yet the ZX Spectrum was ready the moment I switched it on, while Windows took ages to boot, and its screen lagged. Windows appeared to get ever more bloated with each new version.
Could this bloating be the result of layers and layers of abstraction that made it easier for human programmers to write code, which made the CPU execute unnecessary instructions to go from A to B?
I kept thinking, what if there was nothing in the code the machine is running that made it easier for humans to program it? What if the processor only did what needs to be done?
What it is
Claude writes the OS in assembly. There is no C compiler or libraries. I describe the software I need and Claude writes it in assembly. It gets tested in a copy of the machine, a QEMU twin, before it is allowed to run on the real machine.
I typed ! make me a clock at the GermOS prompt, and a few minutes later a clock was running.
One CPU core does nothing but draw the screen, sixty times a second. Tests were written before the code and frozen, so the AI cannot edit them. I wrote none of the code.
I developed it on a Claude Max 5x subscription. I run out of Fable tokens in a few days and wait for the next weekly reset. That works well for me, alongside my job and the other things in life I must do.
Where it is now
- 31 August 2026: an empty folder. The same day, a 512-byte boot sector showed the ZX Spectrum loading stripes. My first prompt to Claude had ended "Pixels by teatime."
- 1 September: the first words typed into GermOS: "hello world", "yay", "thank you claude."
- 15 September: the first boot on real hardware was held up by a USB-serial cable that turned out not to be a null-modem.
- 17 and 18 September: GermOS ran on a real machine, an HP Compaq Elite 8300 from 2012, booted from a USB stick I flashed by hand.
- On the HP, I typed
! install calculatorand the calculator was grown over the network. Then I switched the network off and launched it from the HP's own disk. - On the HP, the whole binary was 40,960 bytes. It took 0.63 seconds from the firmware's handover to the keyboard being ready.
- 24 September: GermOS began running a trial on me, an N-of-1 trial. It compares two layouts of the row of choices at the bottom of the screen: plain text, or drawn boxes. It asks me to click, times each click, and keeps the results on its own disk. Two of the three sittings are done. After the third, GermOS picks the winner itself.
- The whole binary is now 45,056 bytes.
- Everything is public on GitHub: github.com/IndyWH/germos
Where it's going
I am dreaming of booting GermOS into:
- a music-making machine connected to a MIDI keyboard, with no audio stuttering, a responsive UI, and a fast boot time for making music.
- a desktop where I describe in English what I want in my word processor, and Claude writes it in assembly. That would be a desktop that is smooth and responsive when I interact with it.
- A dedicated video editor.
One day, I want GermOS to go below the firmware too, starting from the processor's very first instruction. For now, it stops at the UEFI handover.
What isn't proven yet
- The no-layers idea has not yet been measured. I have not compared GermOS with a compiled or layered version of the same software, so I cannot say the layers are what causes lag.
- The frozen tests had bugs. Seven times, a frozen test turned out to be wrong, and I had to reopen it myself. Each time, the bug was in the AI-written test, not in GermOS.
- Claude reviewed Claude. Claude Cowork reviewed the work of Claude Code. There has been no independent reviewer, human or another AI.
- It is one person and one real machine so far. The twin checks that grown code runs and passes its tests. It does not prove the code is correct.
Herath Herath