AI assistance

A short note on how LLMs are used in this project, because they show up in the commit history and I’d rather be upfront about it than have people guess.

TL;DR

LLMs are a power tool here — boilerplate generator, rubber duck, search engine with context. They are not the author. Every design decision, every architectural choice, every “why is it shaped this way” answer comes from me. If you ask me on the spot how the scheduler reaper handles a dead task’s page directory or why shell_exec_elf stashes exec_params on task_t instead of a shared global, I can tell you, because I designed it and debugged it. The LLM helped me type it faster.

Background

I’ve been writing OS code long enough to know what I’m doing. Medli is my previous OS project — a managed-code (COSMOS / C#) hobby OS that I built from the ground up. Makar is the bare-metal C/asm successor: same designer, different language, different goals (closer to Linux ABI, real ring-3, real preemption, eventual self-hosting).

That history matters because it sets the bar for what counts as “understanding”. I’m not learning paging from an LLM. I’m not asking it what an IDT is. The kernel internals — GDT/IDT layout, paging at 4 MiB and 4 KiB granularity, ring transitions via iret, the Multiboot 2 handoff, FAT32 cluster chains, IDE PIO — all of that lives in my head, not in a chat window.

What LLMs are good for here

What LLMs are not doing on this project

How a typical session goes

  1. I decide what I want to build, often by reading the existing code, sketching on paper, and weighing trade-offs against the roadmap.
  2. I describe the change to the LLM with the precise files and constraints involved. I do not ask it to “figure out what to do” — I ask it to do a specific, scoped thing.
  3. It produces a diff. I read every line. If it’s wrong, I push back; if the design is wrong but the code matches my description, that’s on me for describing it wrong.
  4. I run iso-test and ui-test. If something regresses, I debug it. Sometimes the LLM helps me think through the trace; the diagnosis is still mine to make.
  5. I commit in my own voice, with my own attribution. No Co-Authored-By: Claude trailers, no “Generated with Claude Code” footers. The code is mine to maintain, so it ships under my name.

LLMs in the wider OSDev scene

Makar is not unusual in this. By 2026, LLM assistance is openly common across the hobby OS landscape — the question has shifted from “is anyone using these” to “how honestly are they being used”.

A few patterns I’ve seen in other projects:

OSDev sits in a useful spot for LLMs: well-documented public specs, small self-contained projects, decades of prior-art on the wiki and in Linux/BSD source. That makes the assistance genuinely useful for people who already understand the field. It also makes it easy to generate plausible-looking nonsense for people who don’t. Both ends of that spectrum exist in public hobby OS work today; this project tries to be honest about which end it sits on.

Why I’m writing this down

Open-source hobby OS projects attract scrutiny, and “did an AI write this” is a fair question to ask in 2026. The honest answer is: I drove every design decision, I understand every subsystem, I can defend every trade-off — and yes, I used LLMs as a fast typewriter and a 24/7 rubber duck. Both things are true. Treating that as embarrassing would be silly; treating it as “the AI built my OS” would be a lie.

If something in this repo doesn’t make sense, open an issue. You’ll get an answer from me, not from a model.