Skip to content

Demos & Showcase

Real programs written in Milo. The emulators compile to JavaScript via milo emit-js and run in your browser; everything else compiles to a small native binary from a single .milo file.

Emulators in the browser

Three retro-console cores. No plugins — drop a ROM and play.

NES →

Cycle-stepped 6502, PPU, and APU with DMC audio and multiple mappers. Ships six free homebrew games playable in one click: Blade Buster, Battle Kid, Super PakPak, Sir Ababol, Lawn Mower, Mad Wizard. Drag in your own .nes ROM to play anything else.

Genesis / Mega Drive →

Motorola 68000 + Z80 dual-CPU core with the VDP graphics processor and FM/PSG audio. Preset homebrew: Headship, Astro Perdido, Gravity Pig, Dragon's Castle. Accepts .md / .bin / .gen / .smd ROMs.

SNES →

65C816 CPU plus the SNES PPU, including a Super FX (GSU) coprocessor core. Plays Super Mario World and Donkey Kong Country; Star Fox boots with GSU-rendered 3D. Load an .sfc / .smc ROM.

All three run natively too — examples/apps/arcade.sh <rom> builds the right core with SDL video, audio, and input. examples/apps/retro/ turns them into a Raspberry Pi couch console with a gamepad-driven menu.

Debugger

hades →

hades web UI — stopped at a breakpoint inside classify(), showing the source view, call stack, locals, and a live lldb terminal

A web + AI interface for any DAP debugger (lldb-dap, debugpy), written in Milo. One binary, two subcommands: hades web serves a React + Monaco + xterm.js debugging UI from a Milo HTTP/WebSocket server — breakpoints, stepping, call stacks, expandable locals, watch expressions, an ARM64/x86 disassembly pane, and a real PTY terminal you can type into while your program runs. hades mcp exposes the same session to an AI over MCP: both you and the model see and drive the same debuggee. Debugs Milo binaries too — the compiler emits standard DWARF.

Terminal & graphics apps

TUIs in examples/apps/, built on the standard library's terminal, PTY, SDL, and green-thread APIs.

ProgramWhat it is
tetrisEvent-driven terminal Tetris — one green task parked on a Select, no polling
sysmonhtop-style live system monitor
donutThe classic spinning 3D torus, truecolor-shaded
plasmaFull-screen truecolor animation; doubles as a render-throughput benchmark
aquariumTruecolor pixel aquarium — fish, bubbles, swaying seaweed
chihuahuaDVD-logo-style bouncing screensaver with a shaded pixel-art sprite
splitPtyTwo commands side-by-side in real PTYs — a mini tmux
flightControllerSingle-axis PID altitude controller with an interactive TUI
menuFullscreen SDL retro-console front-end — gamepad/keyboard ROM picker

Servers & network apps

ProgramWhat it is
termpairShare your terminal in the browser — WebSocket relay with end-to-end AES encryption, client and server both in Milo
weatherweather.gov frontend served from a single static binary
serveStatic file server with directory listing
webserverHTTP server with routing, path params, middleware
httpClientHTTP client for fetching URLs
fetchFetch an HTTP API over TLS and parse the JSON response

Data & interpreters

ProgramWhat it is
kvstorePage-based key-value store with cursors, in the sled/buffer-pool style
minilangTree-walking interpreter for a small expression language

CLI tools

Coreutils-style tools in examples/cli-tools/, each a single .milo file.

ProgramWhat it is
grepPattern search with color, -i / -n / -c / -v
rgripgrep-lite: regex-powered recursive search
jqJSON query tool
treeRecursive directory tree with depth limiting
catFile viewer with line numbers and syntax highlighting
wcLine/word/char counter
hexHex dump viewer with ASCII column
shufShuffle input lines
calcExpression evaluator
parallelRun shell commands in parallel across input lines (fork-based)
timeoutRun a command with a time limit
fmtMilo source formatter
pkgPackage manager for Milo — git transport, GitHub registry, lockfile

Playground

Compile and run Milo in your browser — no install — on the Playground.