Close
0%
0%

GermOS

GermOS boots in under a second. I describe software in plain English, and Claude writes it in assembly.

Similar projects worth following
0 followers
GermOS, written in assembly, boots in under a second into a responsive user interface drawn by its own CPU core. I describe software in plain English, and Claude writes it in assembly. It stops removing abstractions at the firmware level for now.

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 calculator and 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....
Read more »

  • Hello metal

    Herath Herath • an hour ago • 0 comments

    The twin is a copy of the machine. The real test was a real machine. I found an HP Compaq Elite 8300 from 2012 in my shed in Baldock. I chose it because it has PS/2 keyboard and mouse ports and a serial port, and GermOS already had drivers for all of them. Its disk was an old 250 GB SSD from my main PC.

    On 15 September, the first boot on metal was held up by a cable. The USB-serial cable I bought as a null-modem was not a null-modem. I booted Ubuntu from a stick on the HP and sent text out of its serial port. Nothing arrived at the other end. GermOS booted blind that night. It formatted the disk, but I could not read a word it said. The HP also gave four beeps at power-on until I reseated its power supply.

    On 17 September, with a null-modem adapter in, the serial log showed twelve lines and then nothing. The screen stayed black. GermOS had asked the network chip to reset and then read from it straight away. On this Intel chip, that read freezes the whole machine. The twin never minded. The fix was a pause of 25 milliseconds.

    The next boot reached the full screen at 1920x1080. I typed "hello metal". I switched the HP off and on, and my note was still there. Then I typed "? ping" and got "ERR: nic transmit timed out". The network card would not send a single frame. Every theory cost me a reflash and a reboot. So Claude Code built a serial monitor, and it questioned the chip live over the cable, many times in one boot. The culprit was one bit that GermOS had wiped by accident. The twin's network card had never needed it.

    On 18 September, the keyboard was ready 0.634 seconds after the firmware's handover. I typed "? ping" and Claude answered: "pong. I hear you, GermOS — the link is up and I'm ready when you are."

    I grew a calculator over my home network. Then I switched the network off, clicked the calculator with the mouse, and it launched from the HP's own disk.

    Nine watched boots and seven flashes. Worth every one!

  • Pixels by teatime

    Herath Herath • an hour ago • 0 comments

    The very first prompt was only 287 words. It came with the foundation document I had deliberated with Claude in earlier sessions. The very first things I asked Claude Cowork were to confirm what we're building, write the Stage 0 spec, wait for my approval, give me the Claude Code kickoff, and reach the exciting goal for the day. The prompt ended with "Pixels by teatime."

    At 18:59 on 31 August, there was no code. By 19:39, a boot sector of 512 bytes, its code using just 211 of them, was showing the ZX Spectrum loading stripes. I felt nostalgic when I saw them. I did not think Claude could do this in assembly so quickly.

    By 22:47, Claude had written a UEFI program directly in assembly. It took over the processor and woke every core. Each core painted its own coloured band, so eight bands meant eight cores.

    Just after midnight, the keyboard and text on screen worked. The first words I typed were "hello world", "yay", "thank you claude." A naive teenager's glee!

View all 2 project logs

Enjoy this project?

Share

Discussions

Does this project spark your interest?

Become a member to follow this project and never miss any updates