A completely vibecoded operating system targeting Aarch64
A completely vibecoded operating system targeting Aarch64
A hobby OS vibecoded completely from scratch with Claude Code. Not everything works, some stuff is not even tested, but most things do.
VibeOS is an operating system written from scratch for ARM64 (aarch64). It runs on QEMU and real Raspberry Pi Zero 2W. The entire OS was built in collaboration with Claude over 64 sessions, documented in the session logs.
cd vendor/
git clone https://github.com/kaansenol5/tlse
You need to find doom1.wad (google it) and put it in vibeos_root/games/doom1.wad
Core
GUI
Networking
Apps
Development
Hardware
aarch64-elf-gcc cross-compilerqemu-system-aarch64On macOS:
brew install aarch64-elf-gcc qemu
# Create disk image (first time only)
make disk
# Build and run
make run
This builds the kernel and all userspace programs, syncs them to the disk image, and launches QEMU with a GUI window.
help in terminal for shell commandsEdit /etc/boot.cfg to customize boot behavior:
# VibeOS Boot Configuration
splash=on # on/off - show boot splash animation
boot=desktop # desktop/vibesh - boot target
make TARGET=pi
# Find your SD card
diskutil list # macOS
lsblk # Linux
# Install (example: /dev/disk4)
make install DISK=/dev/disk4
This partitions the SD card, installs the bootloader and kernel, and copies all programs.
If you boot on Pi Zero, have a USB hub with a keyboard and mouse plugged in, and your keyboard is not working, try to change the order they are plugged in to the hub. Keyboard should be plugged in before the mouse (at a lower port number) This is (i am not sure) because some mouses show up as a mouse and a few keyboards, so vibeos does not find a real keyboard.
Also, USB on Pi does not support hotplug. If you unplug or forget to plug in either one of the peripherals, you have to reboot.
If USB still does not work after verifying both of these, reboot until it does and it will probably work in 5th try tops.
VibeOS includes the following third-party libraries:
| Library | License | Used For |
|---|---|---|
| doomgeneric | GPL-2.0 | DOOM port |
| MicroPython | MIT | Python interpreter |
| TCC | LGPL-2.1 | C compiler |
| TLSe | BSD-2-Clause | TLS 1.2 implementation |
| minimp3 | CC0 | MP3 decoding |
| stb_truetype | MIT | TrueType font rendering |
| stb_image | MIT | Image loading |
Issues and PRs will be reviewed. No guarantees.
MIT. See LICENSE.
DOOM port is GPL-2.0. See user/bin/doom/LICENSE.
The development of VibeOS is documented across 64 sessions:
No open issues yet, or sync has not completed.