Flash Once. Write JavaScript Forever: KryonOS Turns ESP32 Boards Into Pocket Computers
Share
CNX Software just wrote up something we have been waiting for on the ESP32 bench: KryonOS, an open-source GUI OS from Haris16-code that treats a touchscreen ESP32 like a tiny computer instead of a one-sketch appliance.
You know the usual ESP32 loop. You write firmware. You flash. You want a second app. You flash again. KryonOS breaks that habit. You burn the OS once. After that, apps are JavaScript on the SD card (or pulled over Wi-Fi from the built-in store). Tap the launcher. Run a thing. Install another thing. No Arduino IDE for every tiny idea.
What you actually get
It is still a microcontroller. Not desktop Linux. But the feature list is a hit with makers:
- Touch UI and an app launcher
- Duktape JavaScript (ES5 / ES5.1 — no
let, no arrow functions, write like it is 2011 and you will be fine) - App Store + installer over Wi-Fi
- Files on LittleFS and microSD (
/local/and/sd/) - JS bindings for GPIO, ADC, PWM, touch, and delays
- 16-bit graphics with double-buffering so the screen does not crawl
First app looks like this. That is the whole demo:
Graphics.fillScreen(Graphics.COLOR_BLUE);
Graphics.setTextColor(Graphics.COLOR_WHITE);
Graphics.drawString("Hello KryonOS!", 120, 160, 2);
System.delay(3000);
System.exit();
Put it in main.js next to an app.json, install it, done. You get about 90 KB of RAM per app, so keep allocations boring. Call System.delay() once in a while — that is when it runs garbage collection.
Prebuilt .bin files and the PlatformIO environments are on the GitHub releases page. Docs for apps and the JS API sit in the same repo.
What it officially runs on
Supported chips: ESP32 (WROOM-32), ESP32-S2, ESP32-S3, ESP32-C3. The pinout they designed around is a 2.8" ILI9341 + XPT2046 resistive touch on VSPI, microSD on HSPI. Same display wiring as ESP32 Marauder v4 / v6 / v6.1. The board they actually call flagship is an ESP32-S3 DevKitC-1 N16R8 (16 MB flash, 8 MB PSRAM).
Cardputer, Cheap Yellow Display, and LilyGO T-HMI are in the tree as experimental. We do not have those three SKUs on the shelf today. We do have ESP32-S3 boards with touchscreens and SD slots, which is the interesting part if you want to try this this week.
Boards we have in stock
CrowPanel Advance 3.5"
Same N16R8 memory config KryonOS likes. 480×320 IPS, capacitive touch, TF slot, case, battery connector. Screen controller is ILI9488, not ILI9341, so you are in port-it / experiment territory. Still the board we would reach for first if we wanted a self-contained unit on the desk.
WiFi LoRa 32 Expansion Kit V2 — 2.8" in a real enclosure
ESP32-S3, 16 MB flash, 8 MB PSRAM, 2.8" 320×240 touch, TF slot. That is the screen size the OS was drawn for. Also listed: the V4 Expansion Kit if you want the metal/glass version.
T-Deck Plus — if you want a keyboard with it
KryonOS’s Cardputer profile is experimental. One of the handhelds we sell is the T-Deck Plus: ESP32-S3FN16R8, 2.8" 320×240 IPS, physical keyboard, TF card. Good candidate if you want to type JS on the device instead of only tapping icons.
XIAO ESP32-S3 (screen and microSD reader not included)
This is the “follow the README pinout” route. Hook up an ILI9341 + XPT2046 and a microSD module and you are on the stable path, not a guess.
CrowPanel 2.01" — if you want it tiny
ESP32-S3R8, 8 MB PSRAM, 16 MB flash, nice little 240×296 IPS panel. Not in the official board table. Fun if you like cute & tiny UIs.
More of the same families: CrowPanel collection and LILYGO collection.
Go play
Read the CNX piece, clone KryonOS, pick a board above. If your panel is not in the HAL yet, the project is actively asking for board profiles.
Reality check: Official images expect ILI9341 / XPT2046 / HSPI SD wiring. The CrowPanel, Heltec, and T-Deck boards we sell are ESP32-S3 machines with similar screens and storage. They may need a pin map before the stock binary works. Check the repo before you overwrite whatever is on the device.