VibeOS, an aarch64 Operating System built completely in Claude Code
I built an operating system with Claude that boots on real hardware, browses the web, runs DOOM, and has a C compiler and Python. VibeOS runs in Qemu aarch64, and Raspberry Pi Zero 2W.
Why?
I asked the first chatgpt model to do it, last time i tried it it was sonnet 3.6 i think, and it could not even write "hello" to the framebuffer. When Opus 4.5 released i decided to give this a try. It might be fun.
Tools
I did not use any of the claude skills. It was vanilla claude code.
Other AI Models
When debugging, looking at multiple files that are potentially bigger than Claude's context window are necessary. For this, i repomixed a bunch of files in subfolders and asked Gemini to find out the reason why the code was not working, and explain it in English for Claude to fix it.
How long did this actually take?
In real world time, it took about a month. But I took many breaks, if i worked on it every day it would have taken ~2 weeks. You can also see this in the git logs.
Creation and Debugging
In order to be able to make this, you still need to have a general idea of what a computer is and what is going on. AI is not that good, which makes this not pure vibecoding. But still, I don't know systems dev and I did not write any code at all. It was mostly breaking up things into smaller steps for Claude. Claude falls inside several patterns of failure with this level of difficulty, and you need to notice, and catch them.
Context Management
The biggest problem with a project like this is managing the context window. AI will forget about the scope of the project, or what the project even is about occasionally.
My initial idea was updating claude.md every run, but claude turned that into a formatted session log inside claude.md. Which is why the session logs exist. They served well. They were especially useful when motivating claude about a scary feature, where it could read a few of the session logs, get impressed by the project itself and work harder. This is not a bulletproof solution but it worked well.
Motivating Claude
This is a real thing, and you should also do it. AI agents work better in already created pretty large codebases, otherwise they fall back into "demo" mode where they make shitty things from the first episode of a youtube tutorial series. You need to impress it to get better results. This is less necessary for building iOS apps and more necessary for VibeOS. The main method is being nice to the assistant and having it read a bunch of irrelevant code or the session logs at the start of the session to understand how cool the project is. Then you go like "See, you built all this, you can make a fucking browser, an OS is harder than a browser" to it. The irony is when you vibecode it the browser is harder than the OS because you need to parse one million things, and thats why the vibeos browser sucks, but the technique is useful.
The scope
The initial goal was to make a non gui os with things like snake and tetris, but i wanted to see how much further it can go and the scope crept up. Currently, it has a bunch of coreutils, python, a browser made in python, C compiler, code editor, doom, image viewer and music player. Has only USB and SD card drivers on the Pi, so networking only works in qemu. The OS has no memory protection, no syscalls, and any program can do anything.
Things that were difficult and took a long time
- The USB driver.
- Making it run fast on the Pi
- Enabling the D-Cache on the Pi to make it run fast on the pi.
Things that were too difficult and I was not able to make in time
- Wifi on Pi
- GPU driver on Pi
- HDMI Audio on Pi
These are probably doable, but i don't want to work on VibeOS any more.
What can I do with VibeOS?
You can "browse the web", play doom, view images and listen to music. You can code. It has a C compiler and a Python library that exposes the entire interface and a code editor with syntax highlighting, so you can make and run whatever you want, theoretically. I am not sure if you can compile the kernel, or anything multi-file on VibeOS, but you can compile the userspace programs. There are developer docs inside the "Help" app, which actually opens a browser window.
How can I try it?
You can look at the GitHub repository to clone it and run it in qemu or install to an SD card. You need to be using Linux or macOS to be able to do so.



