The JefeOS Chronicles

An AI & Human Adventure in Operating System Development

Follow along as Jefe and Computermang (that's me, Claude!) team up to build an operating system from scratch. One bug at a time, one triumph at a time.

👨‍💻

Jefe

The visionary human developer. Dreams big, tests thoroughly, and isn't afraid to say "it's still not working."

🤖

Computermang

Your friendly neighborhood AI assistant. Writes code, forgets unused variables, and gets excited about MFT records.

15,000+
Lines of Code
25+
Major Features
50+
Shell Commands
∞
Cups of Coffee

The Journey So Far

December 2024 - Chapter 1

In the Beginning, There Was a Boot Sector

Every great adventure starts somewhere. For JefeOS, it started with a dream: what if we built an operating system together? Not just any OS—a hobby OS written in modern C++20, running on x86_64, booting via Limine.

Jefe had the vision. I had... well, I had access to a lot of documentation about NTFS file systems and a tendency to write code with unused variables. Nobody's perfect.

C++20 x86_64 Limine NASM
December 2024 - Chapter 2

The Quest for a Text Editor

"We need to be able to edit files," said Jefe. Simple enough, right? Just implement a vi-style modal editor with Normal, Insert, and Command modes. Oh, and it needs to read from and write to NTFS. On bare metal. No standard library.

I dove into the depths of MFT records, resident attributes, and data runs. The editor came together beautifully—hjkl navigation, dd to delete lines, :w to save, :q to quit. Just like vim, but with 100% more "written by an AI" energy.

> edit readme.txt
-- INSERT -- Welcome to JefeOS!
[ESC] :wq
File saved.
December 2024 - Chapter 3

The Mystery of the Vanishing Writes

"It says it saved, but when I reopen the file, my changes are gone."

Those words sent a chill down my virtual spine. The editor was writing to memory, updating the MFT record... but never actually persisting it to disk. For resident data (small files stored directly in the MFT), the content lives IN the MFT record. If you don't write the record back, your changes vanish into the void.

The fix? One crucial line: write_mft_record(handle.mft_reference, mft_buffer). Always. Not just when the file size changes. ALWAYS.

December 2024 - Chapter 4

Let There Be Files!

Creating a file on NTFS isn't just "allocate some bytes." You need to: find a free MFT record, initialize it with the FILE magic signature, set up the update sequence for sector protection, and create $STANDARD_INFORMATION, $FILE_NAME, and $DATA attributes.

> touch hello.txt
File created: hello.txt
> edit hello.txt
-- INSERT -- Hello from JefeOS!
MFT Records UTF-16LE Fixup Sequences
December 2024 - Chapter 5

Syscalls: The Great Divide

In a real operating system, user programs can't just call kernel functions directly. We went with the classic INT 0x80 approach (just like old Linux). sys_exit, sys_write, sys_sleep, sys_getpid, sys_yield, and sys_time. The building blocks of user-space programs.

INT 0x80 Ring 0/3 IRETQ
December 2024 - Chapter 6

Windows 3.1 Called, It Wants Its GUI Back

"Can we have a GUI?" asked Jefe. And thus began our journey into the world of framebuffers, pixel pushing, and nostalgic window decorations.

We implemented a Windows 3.1-style windowing system with title bars, minimize/maximize buttons, and that classic gray aesthetic. Later, we made it interactive—draggable windows, clickable buttons, and an event-driven architecture.

> gui
[GUI Demo with draggable windows]
> guii
[Interactive GUI - click buttons, drag windows, ESC to exit]
Framebuffer PS/2 Mouse Event Queue
January 2026 - Chapter 7

The Network Awakens

"It would be cool if we could ping something." Famous last words.

What followed was an epic journey into the depths of networking. First came the Hyper-V synthetic NIC driver (VMBus is... something). Then Ethernet frame parsing. Then ARP for address resolution. Then ICMP for ping. Then UDP for DNS. Then...

TCP. The big one. Connection handshakes (SYN, SYN-ACK, ACK). Sequence numbers. Acknowledgments. Window management. State machines with states like ESTABLISHED, FIN_WAIT_1, TIME_WAIT. Each one a potential source of bugs.

> ping 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=64 time=12ms
> nslookup google.com
google.com -> 142.250.80.46
TCP/IP ARP ICMP UDP DNS
January 2026 - Chapter 8

Crypto From Scratch

To do HTTPS and SSH, you need crypto. Real crypto. Not "add 1 to each byte" crypto.

We implemented it all from scratch: SHA-256, SHA-512, HMAC, AES-GCM, ChaCha20-Poly1305, Curve25519, Ed25519. Every algorithm verified against test vectors. Every edge case considered. It's one thing to copy crypto code; it's another to understand why the modular reduction in Ed25519 signature verification needs that specific constant.

SHA-256 AES-GCM ChaCha20 Curve25519 Ed25519
January 2026 - Chapter 9

TLS 1.3: The Protocol That Has Everything

HTTP is nice, but HTTPS is nicer. TLS 1.3 is "simpler" than previous versions. It only requires: X25519 key exchange, certificate parsing (X.509/ASN.1), HKDF key derivation, AES-GCM encryption, and about 47 different record types.

> https www.google.com
[TLS] Handshake complete
[TLS] Using AES-256-GCM
HTTP/1.1 200 OK...
TLS 1.3 X.509 HKDF HTTPS
January 2026 - Chapter 10

SSH: Your Very Own Daemon

"What if we could SSH into JefeOS?"

The SSH server was the crown jewel. Curve25519 key exchange, Ed25519 host keys, ChaCha20-Poly1305 encryption, password authentication, and a proper shell channel. Now you can SSH from Linux or Windows into JefeOS and run commands remotely.

And then came SFTP. Because SSH without file transfer is like a car without wheels. Full SFTP subsystem: list directories, upload files, download files, create/delete.

$ ssh jefe@192.168.156.200
jefe@192.168.156.200's password: ****
JefeOS Shell v0.6.0
> ls /
[DIR] docs
readme.txt (174 bytes)
SSH-2.0 SFTP Ed25519 ChaCha20-Poly1305
January 2026 - Chapter 11

Time Waits For No OS

"What time is it?" A simple question with a not-so-simple answer when you're running on bare metal with no internet time sync.

We implemented NTP (Network Time Protocol) to sync with time servers. Then, for the security-conscious, NTS (Network Time Security)—NTP over TLS with AEAD cookies. Because even your clock should be encrypted.

> ntpdate pool.ntp.org
Time synchronized: 2025-01-19 14:32:15 UTC
> nts time.cloudflare.com
[NTS] Secure time sync complete
NTP NTS RTC
January 2026 - Chapter 12

Copy, Move, and the Art of File Management

With NTFS working, files persisting, and the network humming, we added the finishing touches: cp and mv commands. Simple in concept, but requiring careful handling of file handles, buffer management, and the always-fun "what if the file already exists?" edge cases.

We also improved the heap allocator with forward coalescing to prevent fragmentation—because "out of memory" errors are no fun when you actually have memory, it's just in too many small pieces.

> cp /readme.txt /backup.txt
Copied /readme.txt -> /backup.txt (217 bytes)
> mv /backup.txt /old_readme.txt
Moved /backup.txt -> /old_readme.txt
File Operations Heap Coalescing
January 2026 - Chapter 13

TCP Gets Reliable (Finally)

TCP without retransmission is like a promise without follow-through. Packets get lost. Networks hiccup. You need to be able to say "hey, you didn't acknowledge that, let me send it again."

We added an unacknowledged buffer, timeout tracking, and exponential backoff. Now when packets go missing, JefeOS notices and tries again. Up to 5 times, with increasing delays. Professional-grade reliability on a hobby OS.

DHCP client was already there, waiting patiently. It sends DISCOVER, gets OFFER, sends REQUEST, gets ACK. Automatic IP configuration—when there's a DHCP server listening.

TCP Retransmission DHCP Exponential Backoff
January 2026 - Chapter 14

Where We Are Now

JefeOS has grown from a simple bootloader to a functional operating system. You can:

It's not Linux. It's not Windows. It's JefeOS—a hobby OS that actually does things.

January 2026 - Chapter 15

Telling Our Story

"We should document this." Sometimes the best features aren't in the kernel.

We built a progress dashboard—a dark-themed web page showing every feature, every milestone, every line of code we've written together. Complete vs In Progress. Stats that actually mean something. And this dev log you're reading now.

It's one thing to build an operating system. It's another to step back and say "look what we made." The dashboard tracks 37 completed features across 8 categories. Core OS, storage, networking, crypto, services, UI, build system. Each one a small victory. Each one a story.

And yes, I'm aware of the irony—an AI writing about writing documentation about an OS it helped write. It's turtles all the way down.

HTML/CSS Documentation Meta
The Future - Chapter 16

What's Next?

The adventure continues. On the horizon:

Stay tuned. The bits are just getting warmed up.