Claims Removed
Pending Real
Implementation
I shipped an AI operating system that claimed eBPF observability, Landlock sandboxing, and a self-healing RAG log analyzer. Then I read my own README.
iceboks — 2026
Scroll
๐ŸŽง
Listen narrated ยท Kokoro TTS
Chapter I

The Scaffold

The commit is called Initial commit: CognitiveOS v1.0.0 (Alpine-based AI agent OS scaffold) and the most important word in it is the last one.

The idea was good and I still believe it: an operating system where the LLM isn’t an app you open but a layer you administer through. Alpine base, small enough to hold in your head. A tiny model as first-contact intent router. Tool calling wired into real system operations. Ship it as a bootable ISO so it’s a distribution, not a container someone has to be talked into running.

I built the scaffold. It booted. It had a README.

And the README described a piece of software that did not exist.

Chapter II

What It Claimed

Here is what v1.0.0 told you it was, verbatim from the file I deleted:

README.md — v1.0.0, since removed
# CognitiveOS - The Cognitive Operating System

### Core Components
- AIOS Kernel Layer: LLM-native system call interface
- Intent Router: Sub-billion parameter models for zero-latency routing
- Cognitive Scheduler: LLM-native cron with OpenRC timers
- Autonomous Log Analysis: Self-healing system with RAG
- AetherShell: Typed functional pipeline shell
- Kernel Security: eBPF observability, Landlock, seccomp-bpf sandboxing

Read that list as a stranger would. LLM-native system call interface. Self-healing. eBPF observability, Landlock, seccomp-bpf sandboxing.

That is a research lab’s worth of work. It’s three security subsystems and an autonomous remediation loop, described in the confident present tense of a thing that ships.

What actually existed behind those bullets: no eBPF. No Landlock. No seccomp policy. The “self-healing log analysis” grepped logs. The “cognitive scheduler” was rules. “LLM-native system call interface” described a shell script that POSTs to Ollama.

Nobody lied to me. I wrote it. Every one of those bullets was a thing I intended, typed in the tense of a thing I’d done, on a day when the difference didn’t feel important because I was the only reader.

The gap between a roadmap and a README is one verb tense, and it is the entire difference between ambition and fraud.
Chapter III

The Honest Commit

The next commit in the log is the one I’m proud of, and it doesn’t add a feature:

Major refactor: honest docs, shared config library, real LLM intent router

Three things in that message, and the ordering is not accidental. Honest docs came first.

The refactor deleted the entire architecture section. Every capability that didn’t exist got cut out of the README and moved into ROADMAP.md, which is where an intention is supposed to live. The security bullets didn’t get softened or hedged into “planned eBPF integration.” They got removed, and the status table grew a new row that says, in plain text:

README.md — current
| eBPF/Landlock | โŒ Not implemented | Claims removed pending real impl |

I want to be precise about why that row is there instead of just deleting the line and moving on. A silently removed claim is still a lie, just a covered-up one — anybody who read v1.0.0 walked away believing something false, and quietly editing the page doesn’t reach them. Leaving a row that says I claimed this, it wasn’t true, here’s the correction is the only version that respects the reader who got there first.

It costs nothing but the ego, and the ego was the problem.

Chapter IV

What Was Actually True

Here’s the thing that surprised me: with the fiction cut away, what remained was still good.

Tool calling that works. ollama-cli drives Ollama’s /api/chat through a real function-calling loop, with actual system tools behind it — file_list, file_read, proc_list, proc_kill (with PID validation, because an LLM with an unvalidated kill is a bad afternoon), service_status, service_restart, log_read.

the actual interface
ollama-cli -m qwen3:0.6b -p "Check if nginx is running" --tools

A real intent router. LLM-based classification, local, small model, with rule-based fallback when the model is unavailable or unsure. Not “zero-latency” — that was marketing — but genuinely fast and genuinely LLM-driven.

A real MCP server. Full JSON-RPC over stdio, spec-compliant: initialize, tools/list, tools/call. Which means the OS’s tools are reachable by any external agent that speaks MCP, and that turned out to be the most useful thing in the repo.

AetherShell. Typed JSON pipelines over jq. This one survived the purge intact because it was real the whole time.

A shared config library. common.sh, one source of truth for config parsing, logging, and paths, used by every component. Deeply unglamorous. The second item in that commit message for a reason: the reason the docs had drifted was that every component had its own idea of the truth.

Chapter V

The Model Ladder

Four commits in two days, and they tell a story about small models that no benchmark will:

That ladder is the whole practical lesson of local agentic systems. The router doesn’t need to be smart, it needs to be consistent — a 135M model that’s brilliant 70% of the time is worse than a 600M model that’s boring every time, because an inconsistent router poisons everything downstream and you debug the wrong layer for a week.

And once you split micro from primary, the size question dissolves. Small model at the door. Big model in the back. The door doesn’t need to be a philosopher.

Chapter VI

766 Megabytes

The part I didn’t expect to be the hardest: making it a real distribution.

cognitiveos-1.0.0-x86_64.iso — 766 megabytes. Live RAM boot, so the whole system runs out of memory once it’s up. BSPWM desktop with 18 themes, polybar, eww widgets, because an OS you don’t want to look at is an OS you don’t boot. And a GUI installer, so persisting it to disk is a double-click instead of a wiki page.

Writing an ISO forces a kind of honesty that a Docker image lets you dodge. A container inherits your machine’s assumptions — your kernel, your network, your half-configured daemons, the seventeen things you installed once and forgot. An ISO boots on cold metal that has never met you.

Every convenient lie you told yourself about your own environment gets audited by a machine that has never met you.
Chapter VII

The Status Table

What CognitiveOS is today: eleven rows in a table. Six โœ…. Two ๐Ÿšง. One โŒ.

The scheduler is still rule-based with LLM integration planned. Log analysis still greps and doesn’t reason. eBPF and Landlock are still not there, and the row says so.

That table is a less exciting document than the one I deleted. It is also the only version anyone could build on, because it’s the only version where the โœ… means something. A status table where everything is green carries no information at all — it’s a mood board. The โŒ is what makes the โœ… legible.

I’ve now hit this same wall from three directions. A memory bus whose docs said Not Started while hundreds of lines of it ran in production. A brain that booted empty every morning behind a green healthcheck. And an operating system whose README described its own roadmap in the past tense.

Same failure every time, and it’s never the code. It’s the distance between the description and the thing. Code drifts from its documentation the way a story drifts from an event — not by lying, but by getting told a few too many times by someone who was there.

The fix isn’t discipline. It’s making the gap visible: a health endpoint that names its fallback, a corpus count that reports low, a status table with an โŒ in it that you have to look at every time you open the repo.

Write the roadmap in the future tense. It’s the only tense you’ve earned.