RPCortex β8X - Nebula
RPCortex Nebula: RPC β8X
v0.8.0-rc | Codenamed Nebula
A CLI operating system for the Raspberry Pi Pico (RP2040 / RP2350) and compatible boards, written entirely in MicroPython. User accounts, WiFi networking, a package manager, a text editor, and a full boot sequence, all on hardware with 264KB of RAM.
Status
Stable. Core features are complete and tested. Ships in a clean factory-default state. Confirmed working on RP2040 (Pico W) and ESP32.
Primary interface: serial terminal at 115200 baud (PuTTY recommended)
Thonny's built-in REPL works but has quirks: no arrow key navigation, occasional double-printed input. Use PuTTY for the full experience.
What's in v0.8.0-rc
This release covers everything built across the Nebula β8X development cycle, from boot stub to complete OS.
Shell
A colored, interactive prompt (user@nebula:~>) with full cursor navigation. Left/right arrows, Home/End, Delete, and Ctrl+A/E let you edit anywhere in the line. Up/down arrows scroll the last 50 commands.
- Commands are loaded via
__import__()for built-ins; they stay insys.modulespermanently after first use. No re-reading or recompiling after a cache clear, which eliminates the memory fragmentation issue that previously crashedrebootandfreeupunder load. - MemoryError auto-recovery: the shell clears its cache, compacts the heap, and retries on failure
reboot,sreboot,freeup, andgcbypass the loader entirely and always work- Session logging to
/Nebula/Logs/latest.log, rotated up to 10 logs - Recovery shell if the main boot sequence fails
- Shell starts in the user's home directory;
~shorthand in the prompt
Filesystem
ls, cd, pwd, mkdir, rm, touch, read, head, tail, mv, cp, rename, df, tree, exec
ls shows file type, size, modification timestamp, and name with colored output. cd ~ and cd ~/sub work as expected.
System commands
sysinfo, meminfo, uptime, date, ver, clear, fetch, reboot, sreboot, env, reg, pulse, bench, edit, echo, history, freeup, settings
fetch shows the RPCortex ASCII logo alongside board, CPU, RAM, flash, uptime, and UID. bench runs NebulaMark (integer, float, Mandelbrot, Pi).
Settings panel
settings opens an ANSI box-drawing panel with three sections:
- System: Verbose Boot, Program Execution
- Hardware: Boot Overclock, Beeper, SD Card Support
- Network: WiFi Autoconnect
Title bar shows live CPU frequency, temperature, and free RAM. [1–6] toggle, [r] refresh, [q] quit.
User management
whoami,mkacct,rmuser,chpswd,logout,exit- Passwords use salted SHA256, with a unique random salt per account
- Legacy unsalted hashes accepted and upgrade on next password change
- Each account gets
/Users/<username>/created automatically guestaccepts any password including blank- Non-root users must verify the target's password before
rmuserruns
First-run setup
On first boot a setup wizard runs: sets the root password, creates guest, optionally adds the official package repo. Runs once only.
Networking
WiFi support for any board with a network module: Pico W, Pico 2 W, ESP32.
WiFi: wifi status, wifi scan, wifi connect, wifi disconnect, wifi list, wifi add, wifi forget
Up to 2 networks saved. Autoconnect on boot via Settings.Network_Autoconnect (toggle in settings).
Downloads: wget streams directly to flash (no full-file RAM load), curl fetches to screen, runurl downloads and executes, ping, nslookup.
The HTTP client follows redirects iteratively (no recursion) with a 15-second socket timeout. HTTP and HTTPS both supported.
Package manager
Full package manager. Packages are .pkg files: standard ZIP archives with metadata.
pkg install, pkg remove, pkg list, pkg info, pkg available, pkg search, pkg update, pkg upgrade, pkg repo list/add/remove
pkg availablelists everything in the cached repo index. No query needed.- Installed commands are live immediately after install
- Removed commands vanish immediately. No reboot either way.
pkg upgradecompares installed versions against the cache and reinstalls newer ones- Built-in packages (
Launchpad,Editor) show inpkg listand cannot be removed
Repo indexes are JSON files hostable anywhere. repo/make_pkg.py builds .pkg archives from a source directory on your PC. Packages must use ZIP_STORED (no compression); make_pkg.py handles this automatically.
Editor
A full terminal text editor via edit, nano, or vi. Supports find, go-to-line, cut/paste, and save. Requires a real terminal emulator: Thonny REPL won't render it.
Registry
INI-style config at /Nebula/Registry/registry.cfg. Sections: Networks, Hardware, System, Settings, Features, Globals. Created automatically from an embedded template if missing. Read/write with reg get/reg set, or use settings for the common ones.
POST
Every boot:
- Registry check (creates from template if missing)
- CPU arithmetic (float, int, comparison, bitwise)
- RAM test: allocates a verification buffer, writes a pattern, confirms it, then frees. Fast on any platform.
- Clock calibration on first boot: RP2040/RP2350 get 220 MHz as safe max
- Optional boot overclock via
Settings.OC_On_Boot - WiFi check with optional autoconnect
- Beeper init (non-fatal)
Verbose boot is off by default. Enable in settings to see all POST output.
Installation
- Flash MicroPython firmware to your board (v1.20 or newer, v1.27+ recommended)
- Copy all files from this release to the root of the board's filesystem
- Connect via serial terminal at 115200 baud
- Reboot:
main.pyruns automatically - Complete first-run setup and log in
Supported hardware
| Board | Status |
|---|---|
| Raspberry Pi Pico 2 W (RP2350 + WiFi) | Recommended |
| ESP32-S3 | Recommended |
| Raspberry Pi Pico (RP2040) | Supported |
| Raspberry Pi Pico W (RP2040 + WiFi) | Supported |
| Raspberry Pi Pico 2 (RP2350) | Supported |
| ESP32 / ESP32-S2 | Supported |
Known limitations
- MemoryError may occasionally occur in the shell due to heap fragmentation.
freeupcompacts the heap;rebootclears it fully. Being actively worked on. - ESP32-S3 temperature sensor reports unrealistic values (typically 300–450 °C) due to hardware calibration differences. Not an RPCortex bug — RP2040/RP2350 temperature is accurate.
- No real-time clock on base Pico:
dateshows time since boot epoch until RTC is set - HTTPS on Pico 1 W needs ~9.5 KB contiguous heap: run
freeupfirst if the heap is fragmented - WiFi passwords stored plaintext in the registry: no secure enclave on this hardware
- The editor requires a real terminal emulator: Thonny REPL won't render it
/Nebula/Logs/must be created manually if missing: log writes silently fail otherwise
What's next
- Tab completion
- Shell aliases
- SD card support
- Unified user system
- Log directory auto-creation on first boot
Author: dash1101. Issues and PRs welcome.