Clock
Real-time clock display with configurable format. Adapts its layout to TFT or e-ink display targets automatically.
OPEN SOURCE FIRMWARE // EMBEDDED SYSTEMS
Write once.
Run on every device.
A hardware-agnostic firmware runtime for portable multi-tool devices. One codebase — real hardware, browser simulator, or a new board with just drivers and pin maps.
$ bun run forge:wasm PALANU OS v0.1.0-dev ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ LAYER 01 CORE runtime · HAL · UI toolkit apps · services LAYER 02 PLATFORMS ESP32-S3 · WASM simulator LAYER 03 BOARDS drivers · pin mappings LAYER 04 TARGETS build configs · bring-up ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✓ simulator ready at localhost:3000 ✓ 3 boards supported ✓ no hardware required
THE RUNTIME
PalanuOS enforces a strict separation between what you write and what you run it on. Applications live in the Core layer — completely unaware of which board they're running on. New hardware needs only a driver and a pin map, not a firmware rewrite.
The same app binary that runs your Clock on an E32 TFT display runs identically in a browser tab via WebAssembly — no special builds, no conditional code.
BROWSER SIMULATOR
PalanuOS ships a full WebAssembly simulator. Run every app, test every screen layout, and validate UI flows in the browser — before your first board arrives. No emulator setup, no device cables.
One command launches the simulator. The same runtime code that powers the browser build is exactly what ships to physical hardware. Zero divergence by design.
bun run forge:wasm
start simulator
bun build:skyrizz-e32
build for E32
bun flash:skyrizz-e32
flash to device
BUILT-IN APPS
PalanuOS ships with a suite of first-party applications. Each app runs on every supported board with no modification — capability detection handles the rest.
Real-time clock display with configurable format. Adapts its layout to TFT or e-ink display targets automatically.
Lap-capable stopwatch using hardware-abstracted input. Button mappings are resolved at the platform layer, not in the app.
Configurable event counter for tracking anything — click-tracking, inventory tally, or custom sensor triggers.
Live camera preview and capture. Only visible on boards that declare camera capability — hidden automatically on others.
Network scanner and connection manager. Shares the same HAL interface whether running on ESP32 hardware or the WASM stub.
System settings screen for display brightness, network, and device preferences. Persisted across reboots.
CAPABILITY SYSTEM
Applications never ask "which board am I on?" — they ask "does this board have a camera?" PalanuOS infers capability from the board's driver declarations and automatically shows or hides UI features.
This means a single app binary runs unchanged across a TFT touchscreen device, an e-ink panel with physical buttons, and the browser simulator — each presenting only what the hardware actually supports.
SUPPORTED HARDWARE
Every board in the Palanu ecosystem implements the same HAL interface pattern. Adding a new device is a driver and a pin map — the entire application layer stays untouched.
ESP32-S3 with 240×320 TFT LCD, capacitive touch, MEMS microphone, speaker amplifier, and OV-series camera connector.
ESP32-S3 paired with a 264×176 e-ink display and six physical buttons. Low-power configuration, long battery life.
Full firmware runtime compiled to WebAssembly. Runs in any modern browser — no hardware, no IDE, no toolchain setup required.
bun run forge:wasm
TECH STACK
The Core runtime is written in C++ — performance-critical, deterministic, and directly portable to any target the ESP-IDF supports. TypeScript and Svelte power the simulator UI layer, keeping the web development experience familiar.
Bun drives the build system. WebAssembly compilation handles the bridge between the C++ core and the browser runtime. ESP-IDF v5.5.x targets production-grade ESP32-S3 deployments.
DESIGN PRINCIPLES
PalanuOS isn't opinionated about what you build — it's strict about how it's built. Three invariants hold for every app in the ecosystem.
Application code never branches on a board identifier. It queries the capability manifest. If the board declares a camera, the camera UI appears — no other condition needed.
// ✗ wrong
if (board == SKYRIZZ_E32) showCamera()
// ✓ correct
if (caps.has(CAMERA)) showCamera()
Apps bind to user intents — SELECT, BACK, UP, DOWN. The platform layer maps physical buttons or touch regions to intents. The app never knows which physical input fired.
// ✗ wrong
on_button_press(GPIO_BTN_1, callback)
// ✓ correct
on_intent(INTENT_SELECT, callback)
UI layout is specified in relative units and adapts to the active display geometry. The same UI code renders correctly on 240×320 TFT, 264×176 e-ink, and arbitrary browser window sizes.
// ✗ wrong
draw_text(x: 120, y: 160, ...)
// ✓ correct
draw_text(x: 0.5f, y: 0.5f, ...)
OPEN SOURCE
PalanuOS is fully open under GPLv3. Core runtime, platform integrations, board drivers, simulator, and build tooling — all public, all forkable. Add a new board by opening a PR with a driver and a pin map.
github.com/SkyRizzAI/kairo →BUILD ON PALANU
Have a device you want to run PalanuOS on? Implement the HAL interfaces for your hardware and open a pull request. Or reach out — we can build the driver together.