Navigation
Find your way around.
pwdShow the current folder.lsList files and folders here.cd <dir>Enter a folder.cd ..Go up one folder.
SmileyOS is 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 for shell scripts, UI apps and 2D games.
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.
Kernel, scheduler, filesystem, drivers, GUI stack and shell — all hand-written in Rust. The shell 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. You can open any file and understand it.
A complete userland: files, processes, themes, apps.
Five in-progress 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 listmono · neon · sunrise · ocean · forestsmiley@me > help40 commands available. Try: apps, playground, paint.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.Launch anything, any time.
appsList every installed application.playground [file.smy]Open the Smilium IDE.smilium -s/-g <file>Run a shell or game program directly.calc · paint · filesCalculator, paint app, file manager.snake · breakout · moleBuilt-in games.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.
The smallest program you can write in each mode — everything else builds from here.
@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);The whole language fits on one screen — 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!");}outLine("You got it!");@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@game sprite smile[8][8] = { { 0, 1, 1, 1, 1, 1, 1, 0 }, { 1, 0, 0, 0, 0, 0, 0, 1 }, { 1, 0, 2, 0, 0, 2, 0, 1 }, { 1, 0, 0, 0, 0, 0, 0, 1 }, { 1, 0, 3, 0, 0, 3, 0, 1 }, { 1, 0, 0, 3, 3, 0, 0, 1 }, { 1, 0, 0, 0, 0, 0, 0, 1 }, { 0, 1, 1, 1, 1, 1, 1, 0 } }; func update() { drawSprite(smile, 60, 40, 4);}@core@ui number count = 0; Column main = Column();Label display = Label("Count: 0");Button plus = Button("+1"); plus.onClick(func() { count = count + 1; display.setText("Count: " + toStr(count));}); main.add(display); main.add(plus);@core@ui Column form = Column();TextField nameInput = TextField("Your name");Button submit = Button("Save"); submit.onClick(func() { string name = nameInput.getText(); writeFile("name.txt", name);}); form.add(nameInput); form.add(submit);SmileyOS is a one-person project. The five companion books and 30 interactive lessons below are in active development — every snippet above 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.
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.
Safe, offline, distraction-free. From clicking a file to writing a game in a real language — at their own pace, with friendly error messages.
Boot it in your browserA curriculum in a box: one USB stick, an old PC, five in-progress books, 30 lessons, and zero ads, trackers or subscriptions. Everything lives on the machine.
See the booksAnyone who wants to see a real OS running on real hardware — platform abstraction, drivers, a file system and a scheduler, all in one small, readable Rust codebase.
Peek under the hoodSmileyOS 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.