OPEN SOURCE FIRMWARE // EMBEDDED SYSTEMS

PalanuOS

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.

Active development — GPLv3 open source
palanu-os // runtime
$ 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
4-Layer Architecture
3+ Boards Supported
WASM Browser Simulator
C++ / TS Core Stack
ESP-IDF Firmware Framework
GPLv3 License

THE RUNTIME

Four layers.
One codebase.

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.

01
Core HAL · UI toolkit · App model · Services
02
Platforms ESP32-S3 · WebAssembly
03
Boards Drivers · Pin mappings
04
Targets Build configs · Bring-up tests
WASM Browser Simulator
CLOCK 12:34:56 SUN 22 JUN 2025

BROWSER SIMULATOR

Develop without
the hardware.

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

Useful by default.
Extensible by design.

PalanuOS ships with a suite of first-party applications. Each app runs on every supported board with no modification — capability detection handles the rest.

Clock

Real-time clock display with configurable format. Adapts its layout to TFT or e-ink display targets automatically.

Stopwatch

Lap-capable stopwatch using hardware-abstracted input. Button mappings are resolved at the platform layer, not in the app.

Counter

Configurable event counter for tracking anything — click-tracking, inventory tally, or custom sensor triggers.

Camera

Live camera preview and capture. Only visible on boards that declare camera capability — hidden automatically on others.

Wi-Fi

Network scanner and connection manager. Shares the same HAL interface whether running on ESP32 hardware or the WASM stub.

Settings

System settings screen for display brightness, network, and device preferences. Persisted across reboots.

CAPABILITY SYSTEM

Hardware-aware UI.
Zero brittle checks.

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.

CAPABILITY MANIFEST
display TFT 240×320
input touch + 3-btn
camera OV-series
audio mic + speaker
wifi 802.11 b/g/n
battery monitored

SUPPORTED HARDWARE

Three targets today.
New boards, just drivers.

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.

HARDWARE

Dev Board

ESP32-S3 paired with a 264×176 e-ink display and six physical buttons. Low-power configuration, long battery life.

ESP32-S3 264×176 e-ink 6-button Wi-Fi
SIMULATOR

Browser

Full firmware runtime compiled to WebAssembly. Runs in any modern browser — no hardware, no IDE, no toolchain setup required.

WebAssembly Host display Keyboard input Full app suite
bun run forge:wasm

TECH STACK

Modern tooling.
Battle-tested firmware.

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.

LANGUAGE BREAKDOWN
C++
86.8%
TypeScript
5.9%
Svelte
3.3%
C
1.8%
CMake
1.4%
ESP-IDF v5.5
Bun
WebAssembly
ESP32-S3
ctest

DESIGN PRINCIPLES

Rules the runtime
enforces, not suggests.

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.

R-01

Check capabilities, not boards

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()
R-02

Intents over button mappings

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)
R-03

Resolution-independent UI

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

Every layer,
on GitHub.

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 →
SkyRizzAI / kairo
  • DIR core/
  • ├── runtime/
  • ├── hal/
  • ├── ui-toolkit/
  • └── apps/
  • DIR platforms/
  • ├── esp32/
  • └── simulator/
  • DIR boards/
  • ├── skyrizz-e32/
  • └── dev-board/
  • FILE CMakeLists.txt
  • FILE package.json

BUILD ON PALANU

Your board.
Our runtime.

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.