An embeddable operating system framework in Rust
Renders a skinnable shell — scene-graph UI, browser engine, 90+ terminal commands — anywhere you can provide a pixel buffer.
One codebase, four deployment targets. Trait-based backends keep core code platform-agnostic.
SDL2-based backend for Linux, macOS, Windows, and Raspberry Pi with hardware-accelerated rendering.
Canvas 2D + Web Audio. Runs entirely in the browser with no server required.
Native PSP rendering via sceGu. Originally a 2006 homebrew shell, rewritten in Rust.
Software RGBA framebuffer exposed via C-ABI FFI for embedding in UE5 projects.
Direct /dev/fb0 rendering for headless or kiosk deployments without a display server.
17 skins ship out of the box. Switch at runtime or define your own in TOML.




































































A complete operating system shell, not just a UI toolkit. 16 built-in apps including TV Guide and Internet Radio.
Full HTML/CSS/Gemini rendering engine with DOM parser, CSS cascade, block/inline/table layout, link navigation, reader mode, and JavaScript execution.
Embedded QuickJS-NG runtime with console API, inline <script> execution, and DOM manipulation — getElementById, createElement, textContent, attributes.
Draggable, resizable overlapping windows with hit testing, minimize/maximize/close decorations, and window snapping.
90+ commands across 17 modules. Variable expansion, glob patterns, aliases, history, and piping. A real shell inside the shell.
30+ reusable widgets: Button, Card, TabBar, Panel, TextField, ListView, ScrollView, ProgressBar, Toggle, NinePatch, ColorPicker, DatePicker, SpinBox, Table, RichText, and flex layout.
Background MP3 and WAV playback with playlists, shuffle/repeat modes, ID3 tag parsing, and per-channel mixing.
17 skins (7 built-in + 11 external TOML) with theme derivation from 9 base colors. Runtime switching without restart.
MemoryVfs (in-RAM), RealVfs (disk), and GameAssetVfs (UE5 pak with overlay writes). Platform-agnostic file access.
Runtime-extensible plugin architecture with VFS-based IPC and event bus publish/subscribe. Install plugins via the built-in package manager.
TCP networking with PSK authentication. Connect to OASIS_OS instances remotely and execute commands over an encrypted channel.
Internet Archive-powered TV channels with a 1980s Prevue Channel aesthetic. Browse channels, view schedules, and watch video — software decode on desktop (no ffmpeg required), in-canvas on WASM, download-and-play on PSP.
Stream MP3 audio from curated Internet Archive collections. Background playback with channel browsing and real-time metadata display.
19 workspace crates with a clean trait-based backend abstraction.
oasis-types (Color, Button, InputEvent, backend traits, error types) ├── oasis-vfs (virtual file system: MemoryVfs, RealVfs, GameAssetVfs) ├── oasis-platform (platform service traits: Power, Time, USB, Network, OSK) ├── oasis-sdi (scene display interface: named objects, z-order) ├── oasis-net (TCP networking, PSK auth, remote terminal, FTP) ├── oasis-audio (audio manager, playlist, MP3/WAV decode, ID3 parsing) ├── oasis-ui (30+ widgets: Button, Card, TabBar, ListView, flex layout) ├── oasis-wm (window manager: drag/resize, hit testing, decorations) ├── oasis-skin (TOML skin engine, 17 skins, theme derivation) ├── oasis-terminal (90+ commands, 17 modules, shell features) ├── oasis-browser (HTML/CSS/Gemini: DOM, CSS cascade, layout engine, JS bindings) ├── oasis-js (JavaScript engine: QuickJS-NG runtime, console, DOM) ├── oasis-video (software MP4/H.264+AAC decode: streaming VideoSource API) └── oasis-core (coordination: 16 apps, dashboard, agent, plugin, script) ├── oasis-backend-sdl → oasis-app (desktop binary) ├── oasis-backend-wasm (browser Canvas 2D) ├── oasis-backend-ue5 → oasis-ffi (UE5 C-ABI) └── oasis-backend-psp (PSP sceGu)
Core code never calls platform APIs directly. All rendering, input, networking, and audio
flow through four backend traits defined in oasis-types:
SdiBackend, InputBackend, NetworkBackend, and
AudioBackend. Each platform implements these traits, allowing the entire
framework — UI widgets, browser engine, terminal, apps — to run unchanged
on any target.
From C homebrew to Rust framework.
OASIS_OS started as a C homebrew shell for the PlayStation Portable in 2006–2008. The original 480×272 UI was designed for the PSP's 4.3" LCD and d-pad navigation.
The modern Rust rewrite preserves that heritage with a two-binary PSP architecture: an EBOOT.PBP standalone shell and a kernel-mode PRX overlay that hooks into game framebuffers for in-game UI and background audio.
The Classic skin at 480×272 is a faithful recreation of the original C codebase, now running on a modern Rust toolchain with full safety guarantees.
Build OASIS_OS for your target platform.
# Install SDL2 dev libs (Ubuntu/Debian) sudo apt install libsdl2-dev # Build and run cargo build --release -p oasis-app cargo run -p oasis-app # Run tests cargo test --workspace
# Install wasm-pack curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh # Build ./scripts/build-wasm.sh --release # Serve locally python3 -m http.server 8080 # Visit http://localhost:8080/www/
# Requires Rust nightly + cargo-psp cargo install cargo-psp # Build EBOOT.PBP cd crates/oasis-backend-psp RUST_PSP_BUILD_STD=1 cargo +nightly psp --release # Build PRX overlay (kernel mode) cd crates/oasis-plugin-psp RUST_PSP_BUILD_STD=1 cargo +nightly psp --release
# Build the C-ABI shared library cargo build --release -p oasis-ffi # Output: target/release/liboasis_ffi.so (or .dll / .dylib) # Link into your UE5 project and call oasis_create(), oasis_tick(), etc.