v0.5 · open source · Rust · Mac, Windows, Linux

A computer small enough for a kid to explore.

KidDOS is a free, open-source fake computer inside your real one, for kids about 7 to 13. It opens fullscreen, hides everything else, and shows a CRT terminal with a blinking cursor. A real Unix shell, a virtual drive, a manual, BASIC, sandboxed C and Go, and games whose source code sits right there to be read and changed.

No internet. No mouse. Nothing to break.

The kid types hi. The machine talks back.

KidDOS 0.5.0  (80 cols x 25 rows)
Welcome to your computer. It is all yours. You cannot break it.
Hello! I am KidDOS. Type hi and press Enter.

kid@kiddos:~$ hi
Hi! I'm your computer. What's your name?
> Kiddo
Nice to meet you, Kiddo. I'll remember that.
☺ That's the machine saying hello back. It only knows words from its list.
☺ Now type help. It shows every word the machine knows.
kid@kiddos:~$ echo "I am a robot" > /dev/speaker
(the computer says it out loud)
kid@kiddos:~$ ls
bin  games  welcome.txt
kid@kiddos:~$ cat welcome.txt
Hi! This is your computer. Everything in it is yours.
kid@kiddos:~$ 

Why

Boredom used to be enough.

The computers a lot of us grew up on were finite, knowable objects. A bored kid could sit down and read the whole thing. Every file had a reason to exist. Every config was text. That is how a lot of us became programmers, and nobody planned it.

Sit a kid in front of a modern computer and tell them to explore it. Windows sells them things. Linux moves everything every release. macOS hides the file system entirely. All three have more configuration surface than a person can read in a lifetime, and the browser is one click away with an infinite feed engineered so they never get bored again.

KidDOS is small on purpose. Every file in it was put there by a person with a reason, and the kid can read the reason. It is a computer sized for one small human with time on their hands.

The whole argument is in the original post, and the teaching side of it is in the guide for parents.

It grows with the kid

One machine, four doors.

The vocabulary is Unix, never DOS, so the muscle memory transfers. A kid who spends a year in KidDOS should open a real terminal and feel at home.

7+The shell and a cave

built

A text adventure where rooms are folders and items are files. The kid learns cd, ls and cat without knowing they are learning anything. Twelve lessons with a tutor that watches what they type and nudges in purple.

9+BASIC

built

PRINT, INPUT, FOR. Snake, Tetris, Hangman and the rest are BASIC listings the kid can cat, copy into their home folder, change the speed, break, and fix. Every game is something to steal from.

11+C and Go

built

Real compilers, in a pack a parent installs. cc and goc compile to WebAssembly and run in a sandbox with a fuel meter, so a while(1) cannot hang the machine and a bad pointer only crashes the kid’s own program. Rogue ships as the example, source included.

13+The metal, then the door

planned

ARM assembly on a small fake CPU, with a debugger that shows the source, the registers and memory one instruction at a time, so “what is a computer actually doing” stops being a mystery. And when they are done with the sandbox, an earned way out into the real operating system.

vi is on the machine, but locked. Prison Escape teaches :q! by trapping the kid inside it. Then vi-quest walks ten lands where hjkl are movement spells, and finishing earns /bin/vi for good. This shipped in v0.5, and we still want to see the kid's face.

What's inside today

Version 0.5, end of phase four.

Not a plan. Built and public. A kid can boot, explore, make files, read the manual, follow the lessons, write in BASIC, compile C and Go in a sandbox, earn vi, and play ten games they can take apart.

A real shell

ls, cd, cat, mkdir, rm, pipes, redirects, globbing, history, tab completion. Unknown commands get “Did you mean ls?”, never an error code.

A virtual drive

One SQLite file. The kid can rm -rf the whole thing and the only consequence is a lesson. Reset is one command in parent mode.

Everything is a file

Games, lessons, man pages, the tutor’s progress, high scores. If it is on the drive, the kid can ls it, cat it, cp it, and learn from that.

A manual

man ls works. So does man -k. Sixty pages written for a child, not a sysadmin.

Twelve lessons with a tutor

Hello, Where am I?, Files, Building, Reading the manual, The machine can talk, Pipes, Editing, Scripts, Variables, Your first program, Make a game.

BASIC and an editor

EndBASIC bound to the screen and the drive, with SPEAK, BEEP, KEY$ and TICK. edit opens any file. newgame rocket scaffolds a cartridge.

C and Go, sandboxed

cc and goc compile to WebAssembly and run under wasmtime with fuel and memory limits. The compilers come as packs a parent installs; the machine ships without them.

vi, earned

A real modal editor, locked at first. Prison Escape teaches :q!, vi-quest teaches the rest, and /bin/vi appears when the kid finishes.

/dev/speaker

echo "I am a robot" > /dev/speaker makes the computer talk. That one line keeps a seven-year-old busy for an hour. That is the hook.

Parent mode

A password-protected chord. Exit fullscreen, reset the drive, read the log, install or share cartridges. Nothing else crosses to the real machine.

Ten cartridges

Games are folders. Folders are readable.

A cartridge is a folder under /games with a manifest and an entry in BASIC, shell, or compiled WebAssembly. Adding one never needs a recompile. cat /games/snake/snake.bas is the whole point.

  • play adventure The Drive Below
  • play guess Guess the Number
  • play snake Snake
  • play tetris Tetris
  • play sokoban Sokoban
  • play hangman Hangman
  • play typing Typing Practice
  • play rogue Rogue
  • play prison-escape Prison Escape
  • play vi-quest vi-quest
KidDOS 0.5 boot screen: a CRT terminal where the kid types hi, the machine asks for a name, and a tutor line in magenta suggests typing help
Straight from the build. 80 columns, 25 rows, one very patient machine.

Run it

Three lines, then type hi.

Prebuilt binaries and the C and Go toolchain packs are on the download page. To build it yourself you need Rust; the first build takes a few minutes, after that it starts in a second.

It goes fullscreen on purpose. The parent chord is Ctrl+Alt+Shift+P (Cmd works as Ctrl on a Mac). Type parent, choose a password the first time, then exit-fullscreen or shutdown.

$ git clone https://github.com/nurked/kiddos
$ cd kiddos
$ cargo run --release -p kiddos

Windowed while developing

KIDDOS_WINDOWED=1 cargo run -p kiddos

Drive it without a window

cargo run -p kiddos-headless -- -

Start the next kid fresh

parent → reset-drive → yes

Watching a kid use it

docs/KID-SESSION.md

Roadmap

Five phases down, three to go.

The core is designed once and versioned. Content iterates freely. The full plan, with the arguments behind each decision, lives in kiddos-plan.md.

  1. Phase 0

    Foundations

    v0.1 · shipped

    Console, virtual drive, kernel with processes and pipes, CRT renderer, the shell, 25 builtins, the manual, parent mode.

  2. Phase 1

    The tutor

    v0.2 · shipped

    Lessons 1 to 10, progress and badges, edit, scripts, variables, /dev/speaker with speech on all three OSes, the cave adventure.

  3. Phase 2

    BASIC

    v0.3 · shipped

    EndBASIC bound to the console and the drive. Cartridge format, .kdc sharing, snake, tetris, sokoban, guess, hangman, typing. Lessons 11 and 12.

  4. Phase 3

    WASM and compiled languages

    v0.4 · shipped

    wasmtime with fuel and memory limits and a kiddos import module. cc from a clang slice and goc from TinyGo, each a toolchain pack a parent installs. Rogue, a dungeon crawler in C, as the proof.

  5. Phase 4

    vi-quest

    v0.5 · shipped

    A modal editor engine with vi registered but locked. Prison Escape teaches :q!, then vi-quest walks ten lands (hjkl, w/b, 0/$, gg/G, x, dd, yy/p, /, i/a/Esc, :wq). Finishing unlocks /bin/vi.

  6. Phase 5

    Graphics

    v0.6 · in progress

    320x200 pixel mode with a 256-color palette, double-buffered, in all three bindings: pixel, line, rect, fill, blit, palette, text, flip. Key down and key up events. BASIC gets GFX. Pixel mode is in; a paint cartridge is landing; then Doom through cc with Freedoom data.

  7. Phase 6

    ARM assembly and debug tools

    v0.7 · later

    A small AArch64 subset on our own interpreter: as, a three-pane debug with source, registers and memory, dis and hexdump. Linux syscall numbers so what a kid learns here is true outside. Lessons 13 and 14, and bug-hunt: eight tiny programs, one planted bug each.

  8. Phase 7

    Polish and release

    v1.0 · later

    Large font, high-contrast palette, screen reader passthrough via TTS. Kiosk hardening per OS and a Raspberry Pi image. The macOS app is already signed and notarized; Windows signing comes here.

Later: a cartridge SDK and community carts, a fake modem for LAN-only BBS play between two KidDOS boxes, and maybe a dedicated box with a CRT-looking screen.

Questions parents ask

Straight answers.

What is KidDOS?
KidDOS is a free, open-source fake computer that runs inside your real one. It opens fullscreen and shows a retro CRT terminal with a real Unix-style shell, a virtual hard drive, a manual, BASIC, sandboxed C and Go, and games whose source code the kid can read and change. There is no internet, no mouse and nothing to break.
What age is KidDOS for?
Children who can read, roughly 7 to 13. A seven-year-old explores folders and makes the machine talk; a nine-year-old changes BASIC games; an eleven-year-old compiles C and Go; the assembly and debugger phase is aimed at thirteen and up.
Can my kid break our computer with it?
No. KidDOS never touches your files, has no network access and runs no program outside its own sandbox. The child's whole world is one file in KidDOS's own folder. They can delete everything inside it, and a parent resets the drive with one command.
Does it need the internet?
No. KidDOS has no network stack at all. That is a feature: there is no feed to fall into, so boredom does its work.
Is KidDOS free?
Yes. The code is open source under MIT or Apache-2.0, and the builds for macOS, Windows and Linux are free to download.
What does a child actually learn?
Real skills that transfer: ls, cd, cat, mkdir, pipes and redirects, reading a manual, editing files, writing scripts, then BASIC, then C and Go, then vi. The vocabulary is Unix, never DOS, so a kid who spends a year in KidDOS feels at home in a real terminal.
How is this different from Scratch or a Raspberry Pi?
Scratch teaches logic with blocks and is great for that; KidDOS teaches the computer itself, with text. A Raspberry Pi with Linux has too many exits: the browser is ten minutes away and the file system has ten thousand files that mean nothing. KidDOS is small on purpose, every file was put there by a person, and there is someone inside the machine saying "you made a folder, now go inside it".
How do I get out of it?
Press Ctrl+Alt+Shift+P (Cmd+Alt+Shift+P also works on a Mac), enter the parent password, then type shutdown. Set that password yourself on the first run, before the child sits down. The parents page explains the rest.

For grown-ups

Nothing is real, and that is the safety model.

Not an emulator, not a Linux distro, not a browser app. A fantasy computer whose GPU is a text grid and whose game is learning to drive a computer.

  • No host file system, no host processes, no network stack. The kid cannot break the family laptop and cannot escape into it.
  • The only bridge to the real OS is a short whitelist: say text out loud, beep, tell the time. Cartridges declare which of those they need.
  • Cartridges are plain zip files in one folder next to the drive. That folder is the only place files cross between the fake machine and the real one.
  • Parent mode keeps a log: lessons finished, games played, every time someone entered parent mode. Read it after the session.
  • Honest limit: fullscreen is not a prison. A determined kid can find the OS. The design sets expectations rather than claiming "unbreakable".

Is this a good idea?

Would you put it in front of your kid? Would you clone it, run it, and tell us what happened? If this already exists under another name, say so. If it is pure nostalgia, make that argument properly.