Navigation
Find your way around.
pwdShow the current folder.lsList files and folders here.cd <dir>Enter a folder.cd ..Go up one folder.
Meet SmileyOS — a bare-metal operating system written from scratch in Rust. It turns old 32-bit PCs into safe, offline coding playgrounds with a real desktop, a real terminal, and Smilium, a tiny built-in language.
Not Linux, not a toy. Its own kernel, its own scheduler, its own shell — small enough to read end-to-end, real enough to boot on hardware you already have.
Free forever. No ads. No accounts. No internet required after the first boot. Boots in your browser in ~10 seconds.

The full ISO runs on a real x86 emulator in a single browser tab. No sign-ups, no installs — click boot and you're at the SmileyOS desktop in seconds.
Runs entirely on your device. Nothing is uploaded. The ISO is ~10 MB plus a 2 MB WebAssembly emulator — after that the OS boots straight onto a virtual 32-bit PC.
Click any screenshot to see it full-size. Every pixel is rendered by the SmileyOS kernel — no host OS, no fall-back to anything else.

Menu bar, dock, draggable windows, theme switcher — everything you'd expect from a desktop OS, rendered by the SmileyOS GUI stack on top of a hand-written kernel.

Syntax highlighting, a file browser, 40 guided lessons. Press F5 to run, F4 to drop into the next lesson. Tab completion turns ten keystrokes into one.

The same IDE compiles your Smilium source to a 60 fps game loop with sprites, input and collisions — no toolchain, no setup, no leaving the editor.

Four games ship with the OS — fully playable on bare metal. They're also Smilium source, so kids can open them, see how they work, and tweak them.

The same GUI primitives Smilium @ui programs use also power the bundled apps. Columns, Rows, Buttons and TextFields, all running through a real compositor.

Flash the ISO to a USB stick, plug it into a 32-bit machine, and POST → SmileyOS kernel → desktop. No VM layer, no browser tab — just bare metal and a keyboard.
SmileyOS is one OS, but it answers three different questions: "how do I get my kid to code?", "how do I teach a classroom?", and "how does an OS actually work?".
Kids, 8–14
From clicking a file to writing a game in a real language — at their own pace, with friendly error messages. No ads. No accounts. No internet required after the first boot.
Parents & teachers
One USB stick, an old PC, five companion books, 40 in-IDE lessons. Zero subscriptions, zero trackers — every byte lives on the machine in front of the student.
Curious tinkerers
A platform abstraction layer, drivers, a filesystem, a scheduler, a compositor and a tiny language — all in one small, readable Rust codebase you can fit in your head.
Fair question. Linux distros, kid-friendly toys and online editors are all great at one thing. SmileyOS exists for the part they all miss: a quiet, complete machine a child can fully understand.
"Powerful, modern and free. The right answer for grown-up Linux users."
But it can't…
"Beautiful introductions to programming. Great in their own boxes."
But it can't…
"Zero-setup coding on whatever device you happen to have."
But it can't…
SmileyOS is the one OS a kid can read. 288 source files. One terminal. One IDE. One small language. Everything inside the machine, nothing on the internet, nothing they didn't ask for.
Kernel, scheduler, filesystem, drivers, GUI stack and shell — all hand-written in Rust. The terminal below is the same muscle memory real developers use every day on Linux and macOS.
SmileyOS flashed onto a USB stick, plugged into a 32-bit machine, POST → kernel → desktop. No host OS underneath, no browser tab — just bare metal, a keyboard, and a smile.
Watch on YouTubeKernel, HAL, drivers, Smilium interpreter, GUI — all hand-written.
Small, readable modules. Open any file and understand it.
A complete userland: files, processes, themes, apps.
Five companion books. Every snippet here comes from them.
smiley@me > pwd/home/kiddosmiley@me > lsgames/ snake.smy sprites/ notes.txtsmiley@me > smilium -g snake.smy▸ starting Snake… press ESC to quitsmiley@me > theme listdark · light · blue · purple · greensmiley@me > help40 commands available. Try: apps, playground, theme.smiley@me > Typed into a PS/2 keyboard, parsed by the SmileyOS shell, answered by real kernel syscalls. No cheating, no shelling out — this is the whole userland.
Find your way around.
pwdShow the current folder.lsList files and folders here.cd <dir>Enter a folder.cd ..Go up one folder.Read, write, move, delete.
cat <file>Print a file to the screen.write <f> <text>Write text to a new file.smile <file>Open the built-in editor.cp · mv · rm · renameCopy, move, delete and rename.find <pattern>Search for files by name.chmod -p <name>Change file or folder permissions.Shape your disk.
mkdir <name>Create a new folder.rmdir <name>Delete an empty folder.Real OS, real syscalls.
uptimeHow long SmileyOS has been running.memoryRAM usage snapshot.ps · kill <pid>List and stop running processes.date · timeCurrent date and clock.reboot · shutdownRestart or halt the machine.Launched via apps / smilium, not bare words.
appsOpen the app menu — calculator, paint, file manager and more.playground [file.smy]Open the Smilium IDE.smilium -s/-g <file>Run a shell or game program directly.smilium -g snake.smyStart a built-in game (Snake, Breakout, Mole…).Make it yours.
theme <name>Switch the color scheme.theme listSee every available theme.historyReplay your recent commands.resetconfigNuclear reset of all settings.Type help in the booted OS for the live list — it stays in sync with the kernel.
Smilium programs start with directives — @core is always on, and you pick one of @shell, @game or @ui to say what kind of program you're building.
@core@shell outLine("Hello, World!");outLine("Welcome to Smilium!");@core@game func update() { clearScreen(Colors.black); fillRect(70, 50, 20, 20, Colors.yellow);}@core@ui Column main = Column();Button myButton = Button("Click me!");main.add(myButton);Directives, types, control flow, and the keys you'll press in Smilium Playground.
Pick a mode, opt into features.
@coreAlways-on: variables, conditions, loops, functions.@shellText I/O — outLine, in, ask, sleep, rand.@gameDraw frames, keyboard, sprites, full 60 fps loop.@uiDeclarative widgets — Columns, Rows, Buttons, TextField.@systemOptional: files, time, system info.Strict typing, friendly errors.
number64-bit float. Whole or decimal.stringUp to 32 chars. Use + to concat.booleanStrict true / false.number[]Fixed arrays, up to 16 elements.sprite8×8, 16×16 or 32×32 pixel grid.Familiar C-like syntax.
if / elseBranch on any boolean expression.while (…) { }Loop while a condition holds.for (i=0; i<n; i=i+1)Classic counted loop.func name() { }Reusable block; return values allowed.Playground does the typing for you.
TabAutocomplete keyword or expand snippet.F5Run or stop your program.Shift + F5Fullscreen game preview.F4Jump into the built-in lessons.Six complete Smilium programs — loops, pixel-art sprites, onClick handlers and a form that saves to disk. Paste any of them into Smilium Playground, press F5, and it runs.
@core@shell string name = ask("What's your name? ");outLine("Hi, " + name + "!");@core@shell number secret = rand(1, 10);number guess = 0;while(guess != secret) { guess = inNumber("Guess 1-10: "); if(guess < secret) outLine("Higher!"); else if(guess > secret) outLine("Lower!");}@core@game number x = 70; number y = 50; func update() { if(keyDown("Left")) x = x - 1; if(keyDown("Right")) x = x + 1; clearScreen(Colors.black); fillRect(x, y, 10, 10, Colors.yellow);}@core@ui number count = 0; Label display = Label("Count: 0");Button plus = Button("+1"); plus.onClick(func() { count = count + 1; display.setText("Count: " + toStr(count));});Every keyword and built-in function is Tab-completable in Smilium Playground. Type fo → Tab and you get a full for loop skeleton. Kids ship more code because they type less of it.
Strict types explained in plain English. Messages like "expected number, got string on line 7" — never a segfault, never a stack trace.
SmileyOS is a one-person project. The five companion books and 40 in-IDE lessons are in active development — every code snippet on this page comes straight from the current drafts.
The complete Smilium teacher's guide — directives, syntax rules, every built-in function with examples.
Shell commands, file system, aliases, pipes — the same muscle memory real developers use every day.
From "Hello, World!" to mini calculators and quizzes. Conditions, loops and functions explained story-first.
Draw, animate, collide, and ship a full Snake-clone. Plus 10 complete annotated example games.
Columns, Rows, Buttons and TextFields. Build forms, dynamic lists, and a working TODO app that saves to disk.
Press F4 anywhere in Smilium Playground. Each lesson is a few lines, a run button, and a small challenge.
A bare-metal operating system written from scratch in Rust for 32-bit x86 (i686) machines. It has its own kernel, scheduler, filesystem, drivers, compositor and shell — and it ships with Smilium, a tiny built-in language for shell scripts, 2D games and GUI apps. Boots on real hardware, in QEMU, or in your browser via v86.
SmileyOS is built by one developer on nights and weekends. Whether you want to fund the next release or run a pilot with real students, there's a path for you.
Community donations let me pay real illustrators and layout designers so the books get professionally produced — and eventually printed for classrooms. Every coffee goes straight into kernel work, Smilium features and new lessons.
SmileyOS is in active development. If you'd like to pilot it with a small group of students — or just watch it grow — reach out and we'll loop you in. Zero cost, zero tracking, one USB stick per student.